Overview
MOVR Balance
MOVR Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 795 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer From | 9698840 | 112 days ago | IN | 0 MOVR | 0.00034442 | ||||
Transfer From | 9698716 | 112 days ago | IN | 0 MOVR | 0.00034442 | ||||
Transfer From | 9698562 | 112 days ago | IN | 0 MOVR | 0.00034442 | ||||
Set Approval For... | 8972005 | 164 days ago | IN | 0 MOVR | 0.00084325 | ||||
Set Approval For... | 7037788 | 303 days ago | IN | 0 MOVR | 0.00015533 | ||||
Set Approval For... | 6639340 | 360 days ago | IN | 0 MOVR | 0.00017083 | ||||
Transfer From | 5953321 | 463 days ago | IN | 0 MOVR | 0.00042456 | ||||
Transfer From | 5953019 | 463 days ago | IN | 0 MOVR | 0.00042456 | ||||
Transfer From | 5953012 | 463 days ago | IN | 0 MOVR | 0.0005307 | ||||
Set Approval For... | 5249968 | 567 days ago | IN | 0 MOVR | 0.0001553 | ||||
Set Approval For... | 5126126 | 584 days ago | IN | 0 MOVR | 0.00011331 | ||||
Set Approval For... | 3841097 | 767 days ago | IN | 0 MOVR | 0.00009256 | ||||
Set Approval For... | 3544500 | 810 days ago | IN | 0 MOVR | 0.00006092 | ||||
Transfer From | 3538195 | 810 days ago | IN | 0 MOVR | 0.00028986 | ||||
Transfer From | 3538194 | 810 days ago | IN | 0 MOVR | 0.00036723 | ||||
Safe Transfer Fr... | 3524592 | 812 days ago | IN | 0 MOVR | 0.00028996 | ||||
Safe Transfer Fr... | 3524591 | 812 days ago | IN | 0 MOVR | 0.00036736 | ||||
Set Approval For... | 3459681 | 822 days ago | IN | 0 MOVR | 0.00009256 | ||||
Set Approval For... | 3302234 | 844 days ago | IN | 0 MOVR | 0.00009256 | ||||
Set Approval For... | 3291715 | 846 days ago | IN | 0 MOVR | 0.00009256 | ||||
Set Approval For... | 2719080 | 929 days ago | IN | 0 MOVR | 0.00005273 | ||||
Transfer From | 2635043 | 941 days ago | IN | 0 MOVR | 0.00026629 | ||||
Set Approval For... | 2603286 | 946 days ago | IN | 0 MOVR | 0.00009256 | ||||
Set Approval For... | 2579683 | 949 days ago | IN | 0 MOVR | 0.00005273 | ||||
Transfer From | 2511333 | 960 days ago | IN | 0 MOVR | 0.00029809 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
1420415 | 1176 days ago | 0.73326 MOVR | ||||
1420415 | 1176 days ago | 3.333 MOVR | ||||
1420415 | 1176 days ago | 0.73326 MOVR | ||||
1420415 | 1176 days ago | 0.39996 MOVR | ||||
1420415 | 1176 days ago | 1.46652 MOVR | ||||
1420357 | 1176 days ago | 0.24442 MOVR | ||||
1420357 | 1176 days ago | 1.111 MOVR | ||||
1420357 | 1176 days ago | 0.24442 MOVR | ||||
1420357 | 1176 days ago | 0.13332 MOVR | ||||
1420357 | 1176 days ago | 0.48884 MOVR | ||||
1418010 | 1176 days ago | 0.24442 MOVR | ||||
1418010 | 1176 days ago | 1.111 MOVR | ||||
1418010 | 1176 days ago | 0.24442 MOVR | ||||
1418010 | 1176 days ago | 0.13332 MOVR | ||||
1418010 | 1176 days ago | 0.48884 MOVR | ||||
1417709 | 1176 days ago | 0.24442 MOVR | ||||
1417709 | 1176 days ago | 1.111 MOVR | ||||
1417709 | 1176 days ago | 0.24442 MOVR | ||||
1417709 | 1176 days ago | 0.13332 MOVR | ||||
1417709 | 1176 days ago | 0.48884 MOVR | ||||
1417685 | 1176 days ago | 0.24442 MOVR | ||||
1417685 | 1176 days ago | 1.111 MOVR | ||||
1417685 | 1176 days ago | 0.24442 MOVR | ||||
1417685 | 1176 days ago | 0.13332 MOVR | ||||
1417685 | 1176 days ago | 0.48884 MOVR |
Loading...
Loading
Contract Name:
BlvckMarketDvrkForest
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at moonriver.moonscan.io on 2022-01-29 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.1; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { 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) external; function transferFrom(address from, address to, uint256 tokenId) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); } interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } contract ERC165 is IERC165 { bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; mapping(bytes4 => bool) private _supportedInterfaces; function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return _supportedInterfaces[interfaceId]; } function _registerInterface(bytes4 interfaceId) internal virtual { require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); _supportedInterfaces[interfaceId] = true; } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library EnumerableSet { struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // Bytes32Set struct Bytes32Set { Set _inner; } function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } // AddressSet struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } library EnumerableMap { struct MapEntry { bytes32 _key; bytes32 _value; } struct Map { // Storage of map keys and values MapEntry[] _entries; // Position of the entry defined by a key in the `entries` array, plus 1 // because index 0 means a key is not in the map. mapping (bytes32 => uint256) _indexes; } /** * @dev Adds a key-value pair to a map, or updates the value for an existing * key. O(1). * * Returns true if the key was added to the map, that is if it was not * already present. */ function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) { // We read and store the key's index to prevent multiple reads from the same storage slot uint256 keyIndex = map._indexes[key]; if (keyIndex == 0) { // Equivalent to !contains(map, key) map._entries.push(MapEntry({ _key: key, _value: value })); // The entry is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value map._indexes[key] = map._entries.length; return true; } else { map._entries[keyIndex - 1]._value = value; return false; } } /** * @dev Removes a key-value pair from a map. O(1). * * Returns true if the key was removed from the map, that is if it was present. */ function _remove(Map storage map, bytes32 key) private returns (bool) { // We read and store the key's index to prevent multiple reads from the same storage slot uint256 keyIndex = map._indexes[key]; if (keyIndex != 0) { // Equivalent to contains(map, key) // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one // in the array, and then remove the last entry (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = keyIndex - 1; uint256 lastIndex = map._entries.length - 1; // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. MapEntry storage lastEntry = map._entries[lastIndex]; // Move the last entry to the index where the entry to delete is map._entries[toDeleteIndex] = lastEntry; // Update the index for the moved entry map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved entry was stored map._entries.pop(); // Delete the index for the deleted slot delete map._indexes[key]; return true; } else { return false; } } /** * @dev Returns true if the key is in the map. O(1). */ function _contains(Map storage map, bytes32 key) private view returns (bool) { return map._indexes[key] != 0; } /** * @dev Returns the number of key-value pairs in the map. O(1). */ function _length(Map storage map) private view returns (uint256) { return map._entries.length; } /** * @dev Returns the key-value pair stored at position `index` in the map. O(1). * * Note that there are no guarantees on the ordering of entries inside the * array, and it may change when more entries are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) { require(map._entries.length > index, "EnumerableMap: index out of bounds"); MapEntry storage entry = map._entries[index]; return (entry._key, entry._value); } /** * @dev Tries to returns the value associated with `key`. O(1). * Does not revert if `key` is not in the map. */ function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) { uint256 keyIndex = map._indexes[key]; if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key) return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based } /** * @dev Returns the value associated with `key`. O(1). * * Requirements: * * - `key` must be in the map. */ function _get(Map storage map, bytes32 key) private view returns (bytes32) { uint256 keyIndex = map._indexes[key]; require(keyIndex != 0, "EnumerableMap: nonexistent key"); // Equivalent to contains(map, key) return map._entries[keyIndex - 1]._value; // All indexes are 1-based } /** * @dev Same as {_get}, with a custom error message when `key` is not in the map. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {_tryGet}. */ function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) { uint256 keyIndex = map._indexes[key]; require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key) return map._entries[keyIndex - 1]._value; // All indexes are 1-based } // UintToAddressMap struct UintToAddressMap { Map _inner; } /** * @dev Adds a key-value pair to a map, or updates the value for an existing * key. O(1). * * Returns true if the key was added to the map, that is if it was not * already present. */ function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) { return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value)))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the key was removed from the map, that is if it was present. */ function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) { return _remove(map._inner, bytes32(key)); } /** * @dev Returns true if the key is in the map. O(1). */ function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) { return _contains(map._inner, bytes32(key)); } /** * @dev Returns the number of elements in the map. O(1). */ function length(UintToAddressMap storage map) internal view returns (uint256) { return _length(map._inner); } function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) { (bytes32 key, bytes32 value) = _at(map._inner, index); return (uint256(key), address(uint160(uint256(value)))); } /** * @dev Tries to returns the value associated with `key`. O(1). * Does not revert if `key` is not in the map. * * _Available since v3.4._ */ function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) { (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key)); return (success, address(uint160(uint256(value)))); } /** * @dev Returns the value associated with `key`. O(1). * * Requirements: * * - `key` must be in the map. */ function get(UintToAddressMap storage map, uint256 key) internal view returns (address) { return address(uint160(uint256(_get(map._inner, bytes32(key))))); } function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) { return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage)))); } } /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol 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); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ 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); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed 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); } } contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using SafeMath for uint256; using Address for address; using EnumerableSet for EnumerableSet.UintSet; using EnumerableMap for EnumerableMap.UintToAddressMap; using Strings for uint256; // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; // Mapping from holder address to their (enumerable) set of owned tokens mapping (address => EnumerableSet.UintSet) private _holderTokens; // Mapping from owner to list of owned token IDs mapping (address => uint256[]) internal ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) internal ownedTokensIndex; // Enumerable mapping from token ids to their owners EnumerableMap.UintToAddressMap private _tokenOwners; // Mapping from token ID to approved address mapping (uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping (address => mapping (address => bool)) private _operatorApprovals; // Token name string private _name; // Token symbol string private _symbol; // Optional mapping for token URIs mapping (uint256 => string) private _tokenURIs; // Array with all token ids, used for enumeration uint256[] internal allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) internal allTokensIndex; // Base URI string private _baseURI; bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd; bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f; bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; // register the supported interfaces to conform to ERC721 via ERC165 _registerInterface(_INTERFACE_ID_ERC721); _registerInterface(_INTERFACE_ID_ERC721_METADATA); _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE); } modifier onlyOwnerOf(uint256 _tokenId) { require(ownerOf(_tokenId) == msg.sender); _; } modifier canTransfer(uint256 _tokenId) { require(_isApprovedOrOwner(msg.sender, _tokenId)); _; } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _holderTokens[owner].length(); } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { return _tokenOwners.get(tokenId, "ERC721: owner query for nonexistent token"); } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = baseURI(); // If there is no base URI, return the token URI. if (bytes(base).length == 0) { return _tokenURI; } // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI. return string(abi.encodePacked(base, tokenId.toString())); } /** * @dev Returns the base URI set via {_setBaseURI}. This will be * automatically added as a prefix in {tokenURI} to each token's URI, or * to the token ID if no specific URI is set for that token ID. */ function baseURI() public view virtual returns (string memory) { return _baseURI; } function totalSupplyString() public view virtual returns (string memory) { return _tokenOwners.length().toString(); } function addTokenTo(address _to, uint256 _tokenId) internal { uint256 length = ownedTokens[_to].length; ownedTokens[_to].push(_tokenId); ownedTokensIndex[_tokenId] = length; } function removeTokenFrom(address _from, uint256 _tokenId) internal { uint256 tokenIndex = ownedTokensIndex[_tokenId]; uint256 lastTokenIndex = ownedTokens[_from].length.sub(1); uint256 lastToken = ownedTokens[_from][lastTokenIndex]; ownedTokens[_from][tokenIndex] = lastToken; ownedTokens[_from][lastTokenIndex] = 0; ownedTokens[_from].pop(); ownedTokensIndex[_tokenId] = 0; ownedTokensIndex[lastToken] = tokenIndex; } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { return _holderTokens[owner].at(index); } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { // _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds return _tokenOwners.length(); } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { (uint256 tokenId, ) = _tokenOwners.at(index); return tokenId; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom(address from, address to, uint256 tokenId) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId); } function _safeTransfer(address from, address to, uint256 tokenId) internal virtual { _transfer(from, to, tokenId); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _tokenOwners.contains(tokenId); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _mint(to, tokenId); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); allTokensIndex[tokenId] = allTokens.length; allTokens.push(tokenId); _beforeTokenTransfer(address(0), to, tokenId); _holderTokens[to].add(tokenId); addTokenTo(to, tokenId); _tokenOwners.set(tokenId, to); emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); // internal owner _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); removeTokenFrom(owner, tokenId); // Clear metadata (if any) if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } _holderTokens[owner].remove(tokenId); _tokenOwners.remove(tokenId); emit Transfer(owner, address(0), tokenId); } function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); // internal owner require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _holderTokens[from].remove(tokenId); _holderTokens[to].add(tokenId); removeTokenFrom(from, tokenId); addTokenTo(to, tokenId); _tokenOwners.set(tokenId, to); emit Transfer(from, to, tokenId); } function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } function _setBaseURI(string memory baseURI_) internal virtual { _baseURI = baseURI_; } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) { if (!to.isContract()) { return true; } bytes memory returndata = to.functionCall(abi.encodeWithSelector( IERC721Receiver(to).onERC721Received.selector, _msgSender(), from, tokenId, _data ), "ERC721: transfer to non ERC721Receiver implementer"); bytes4 retval = abi.decode(returndata, (bytes4)); return (retval == _ERC721_RECEIVED); } function _approve(address to, uint256 tokenId) private { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); // internal owner } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract BlvckMarketDvrkForest is Ownable, ERC721 { using Strings for string; using Strings for uint256; using SafeMath for uint256; constructor () ERC721("BlvckMarketDvrkForest" ,"BMADVRKFOREST"){} struct SnakeNFT { string ipfsHash; address publisher; uint id; } address payable public artistWallet = payable(0x43bF6C711ceA984e55926fCa73D602309769aBF6); address payable public teamWallet = payable(0x7E66E23b0Cc2eB712a1af1dE9b6aF0FbABbd42C3); address payable public treasuryWallet = payable(0x1196f89b8DA779CF24613cA7572B991927d3E9ad); address payable public taxWallet = payable(0xD5d8B27a62b46e4e4fA78F38aE8C843F1fD69b79); address payable public BMAWallet = payable(0x25f67d7e553174F8c170Cfa48A794FC5090e197F); uint public artistTax = 22; uint public teamTax = 6; uint public treasuryTax = 11; uint public taxTax = 50; uint public BMATax = 11; bool public enableSecurityPayment = false; bool public enableDutchAuction = false; bool public enableBlvcklist = true; uint256 public priceMint = 4000000000000000000; uint256 public priceMint1 = 1000000000000000000; uint256 public priceMint2 = 2000000000000000000; uint256 public priceMint3 = 3000000000000000000; uint256 public priceMint4 = 4000000000000000000; uint256 public mintCount = 0; uint256 public MAX_SNAKE = 1333; string public baseExtension = ".json"; bool public pauseMint = true; SnakeNFT[] public snakesNFTs; mapping (string => uint256) ipfsHashToTokenId; mapping(address => address) public blvcklist; mapping (address => uint256) internal publishedTokensCount; mapping (address => uint256[]) internal publishedTokens; mapping(address => mapping (uint256 => uint256)) internal publishedTokensIndex; 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 ? currentBaseURI : ""; } function withdraw() public onlyOwner { payable(msg.sender).transfer(address(this).balance); } function setBaseExtension(string memory _value) public onlyOwner { baseExtension = _value; } function setPricesDutchAuction( uint256 _value1, uint256 _value2, uint256 _value3, uint256 _value4 ) public onlyOwner { priceMint1 = _value1; priceMint2 = _value2; priceMint3 = _value3; priceMint4 = _value4; } function setPriceMint(uint256 _value) public onlyOwner { priceMint = _value; } function setBaseURI(string memory _value) public onlyOwner { _setBaseURI(_value); } function setPauseMint(bool _value) public onlyOwner { pauseMint = _value; } function setEnableSecurityPayment(bool _value) public onlyOwner { enableSecurityPayment = _value; } function setEnableDutchAuction(bool _value) public onlyOwner { enableDutchAuction = _value; } function setBMATax(uint _value) public onlyOwner { BMATax = _value; } function setTaxTax(uint _value) public onlyOwner { taxTax = _value; } function setTreasuryTax(uint _value) public onlyOwner { treasuryTax = _value; } function setTeamTax(uint _value) public onlyOwner { teamTax = _value; } function setArtistTax(uint _value) public onlyOwner { artistTax = _value; } function setBMAWallet(address payable _value) public onlyOwner { BMAWallet = _value; } function setTaxWallet(address payable _value) public onlyOwner { taxWallet = _value; } function setTreasuryWallet(address payable _value) public onlyOwner { treasuryWallet = _value; } function setTeamWallet(address payable _value) public onlyOwner { teamWallet = _value; } function setArtistWallet(address payable _value) public onlyOwner { artistWallet = _value; } function setBlvcklist(address[] memory _address) public onlyOwner { for(uint i = 0; _address.length > i; i++) blvcklist[_address[i]] = _address[i]; } function setEnableBlvcklist(bool _value) public onlyOwner { enableBlvcklist = _value; } function getIpfsHashToTokenId(string memory _string) public view returns (uint256){ return ipfsHashToTokenId[_string]; } function getOwnedTokens(address _owner) public view returns (uint256[] memory) { return ownedTokens[_owner]; } function mintNFT(uint256 _amount) public payable { require(!pauseMint, "Mint paused."); require(totalSupply().add(_amount) <= MAX_SNAKE, "Limit exceeded."); if(mintCount == 786) { setEnableBlvcklist(false); setPauseMint(true); } if(mintCount == 1129) { setPauseMint(true); } if(enableBlvcklist) { require(blvcklist[msg.sender] == msg.sender, "Blvcklist Not Found."); delete blvcklist[msg.sender]; } uint256 priceItemEther; if(enableDutchAuction){ require(msg.value == calculateDutchAuction().mul(_amount <= 0 ? 1 : _amount)); priceItemEther = calculateDutchAuction().mul(_amount <= 0 ? 1 : _amount); }else{ require(msg.value == priceMint1.mul(_amount <= 0 ? 1 : _amount)); priceItemEther = priceMint1.mul(_amount <= 0 ? 1 : _amount); } if(enableSecurityPayment){ BMAWallet.transfer(priceItemEther); }else{ artistWallet.transfer(priceItemEther.mul(artistTax).div(100)); teamWallet.transfer(priceItemEther.mul(teamTax).div(100)); treasuryWallet.transfer(priceItemEther.mul(treasuryTax).div(100)); taxWallet.transfer(priceItemEther.mul(taxTax).div(100)); BMAWallet.transfer(priceItemEther.mul(BMATax).div(100)); } for(uint256 i = 0; i < _amount; i++){ SnakeNFT memory _snakesNFT = SnakeNFT({ ipfsHash: " ", publisher: msg.sender, id: 0 }); snakesNFTs.push(_snakesNFT); uint256 newSnakesNFTId = snakesNFTs.length - 1; snakesNFTs[newSnakesNFTId].id = newSnakesNFTId; string memory baseURI = baseURI(); string memory hashMetadata = string(abi.encodePacked(baseURI, newSnakesNFTId.toString() , baseExtension)); snakesNFTs[newSnakesNFTId].ipfsHash = hashMetadata; ipfsHashToTokenId[hashMetadata] = newSnakesNFTId; _mint(msg.sender, newSnakesNFTId); publishedTokensCount[msg.sender]++; uint256 length = publishedTokens[msg.sender].length; publishedTokens[msg.sender].push(newSnakesNFTId); publishedTokensIndex[msg.sender][newSnakesNFTId] = length; mintCount++; } } function generateSnakes(address[] memory _addresses) public onlyOwner { require(totalSupply() <= MAX_SNAKE, "Limit exceeded."); for(uint256 i = 0; i < _addresses.length; i++){ SnakeNFT memory _snakesNFT = SnakeNFT({ ipfsHash: " ", publisher: _addresses[i], id: 0 }); snakesNFTs.push(_snakesNFT); uint256 newSnakesNFTId = snakesNFTs.length - 1; snakesNFTs[newSnakesNFTId].id = newSnakesNFTId; string memory baseURI = baseURI(); string memory hashMetadata = string(abi.encodePacked(baseURI, newSnakesNFTId.toString() , baseExtension)); snakesNFTs[newSnakesNFTId].ipfsHash = hashMetadata; ipfsHashToTokenId[hashMetadata] = newSnakesNFTId; _mint(_addresses[i], newSnakesNFTId); publishedTokensCount[_addresses[i]]++; uint256 length = publishedTokens[_addresses[i]].length; publishedTokens[_addresses[i]].push(newSnakesNFTId); publishedTokensIndex[_addresses[i]][newSnakesNFTId] = length; mintCount++; } } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } function calculateDutchAuction() public view returns (uint256) { uint256 price = mintCount <= 786 ? priceMint1 : mintCount > 786 && mintCount <= 871 ? priceMint4 : mintCount > 871 && mintCount <= 956 ? priceMint3 : mintCount > 956 ? priceMint2 : priceMint1; return price; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BMATax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BMAWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SNAKE","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":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"artistTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"artistWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"blvcklist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculateDutchAuction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableBlvcklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableDutchAuction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableSecurityPayment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"generateSnakes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_string","type":"string"}],"name":"getIpfsHashToTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getOwnedTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"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":"mintCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceMint1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceMint2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceMint3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceMint4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setArtistTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_value","type":"address"}],"name":"setArtistWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setBMATax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_value","type":"address"}],"name":"setBMAWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_value","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_value","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"setBlvcklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setEnableBlvcklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setEnableDutchAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setEnableSecurityPayment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setPauseMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setPriceMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value1","type":"uint256"},{"internalType":"uint256","name":"_value2","type":"uint256"},{"internalType":"uint256","name":"_value3","type":"uint256"},{"internalType":"uint256","name":"_value4","type":"uint256"}],"name":"setPricesDutchAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setTaxTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_value","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setTeamTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_value","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setTreasuryTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_value","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"snakesNFTs","outputs":[{"internalType":"string","name":"ipfsHash","type":"string"},{"internalType":"address","name":"publisher","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","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":[],"name":"taxTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupplyString","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"treasuryTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
600f80546001600160a01b03199081167343bf6c711cea984e55926fca73d602309769abf617909155601080548216737e66e23b0cc2eb712a1af1de9b6af0fbabbd42c3179055601180548216731196f89b8da779cf24613ca7572b991927d3e9ad17905560128054821673d5d8b27a62b46e4e4fa78f38ae8c843f1fd69b79179055601380549091167325f67d7e553174f8c170cfa48a794fc5090e197f179055601660148190556006601555600b9081905560326017556018556019805462ffffff191662010000179055673782dace9d900000601a819055670de0b6b3a7640000601b55671bc16d674ec80000601c556729a2241af62c0000601d55601e556000601f5561053560205560c06040526005608081905264173539b7b760d91b60a0908152620001359160219190620002fe565b506022805460ff191660011790553480156200015057600080fd5b506040518060400160405280601581526020017f426c76636b4d61726b65744476726b466f7265737400000000000000000000008152506040518060400160405280600d81526020016c10935051159492d193d49154d5609a1b8152506000620001bf6200027360201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35081516200021e906009906020850190620002fe565b5080516200023490600a906020840190620002fe565b50620002476380ac58cd60e01b62000277565b62000259635b5e139f60e01b62000277565b6200026b63780e9d6360e01b62000277565b5050620003e1565b3390565b6001600160e01b03198082161415620002d65760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b8280546200030c90620003a4565b90600052602060002090601f0160209004810192826200033057600085556200037b565b82601f106200034b57805160ff19168380011785556200037b565b828001600101855582156200037b579182015b828111156200037b5782518255916020019190600101906200035e565b50620003899291506200038d565b5090565b5b808211156200038957600081556001016200038e565b600181811c90821680620003b957607f821691505b60208210811415620003db57634e487b7160e01b600052602260045260246000fd5b50919050565b61398580620003f16000396000f3fe6080604052600436106104105760003560e01c8063710b3cdb1161021e578063cd85cdb511610123578063df38fd41116100ab578063ecfeb5ba1161007a578063ecfeb5ba14610c2d578063f2fde38b14610c43578063f59e26d014610c63578063f73fb6d814610c83578063fce57fd914610c9d57600080fd5b8063df38fd4114610b8e578063e985e9c514610ba4578063ea414b2814610bed578063eb77babc14610c0d57600080fd5b8063d862686b116100f2578063d862686b14610b03578063d9d6165514610b19578063da3ef23f14610b39578063da6fa46c14610b59578063ddcdaa9414610b6e57600080fd5b8063cd85cdb514610a94578063d122ae1314610aae578063d1fe033d14610ac4578063d34a6a3314610ae357600080fd5b8063a3342fba116101a6578063b2bdfa7b11610175578063b2bdfa7b146109ff578063b3eb583514610a1f578063c668286214610a3f578063c87b56dd14610a54578063cd6840d514610a7457600080fd5b8063a3342fba1461097a578063a40f232f1461099a578063a5b59043146109c9578063a8602fea146109df57600080fd5b806392642744116101ed5780639264274414610906578063932733c71461091957806395d89b411461092f5780639659867e14610944578063a22cb4651461095a57600080fd5b8063710b3cdb1461089d578063715018a6146108bd5780637cd1c310146108d25780638da5cb5b146108e857600080fd5b8063334635f01161032457806354fd1467116102ac5780635f7b144a1161027b5780635f7b144a146108125780636352211e146108285780636bb4c459146108485780636c0360eb1461086857806370a082311461087d57600080fd5b806354fd14671461077c57806355f804b3146107b257806356ea64ad146107d257806359927044146107f257600080fd5b806345136c4b116102f357806345136c4b146106f05780634626402b146107105780634f6ccce71461073057806354be17141461075057806354ed458a1461076657600080fd5b8063334635f0146106785780633ccfd60b1461068e57806342842e0e146106a3578063438b6300146106c357600080fd5b80631525ff7d116103a757806327ea2df01161037657806327ea2df0146105d857806329f3265b146105f85780632dc0562d146106185780632f745c59146106385780632fe5cba11461065857600080fd5b80631525ff7d1461056357806318160ddd1461058357806323b872dd14610598578063256a7998146105b857600080fd5b8063095ea7b3116103e3578063095ea7b3146104e0578063098154d2146105005780630dee18e4146105235780630ea427501461054357600080fd5b806301ffc9a7146104155780630256276d1461046457806306fdde0314610486578063081812fc146104a8575b600080fd5b34801561042157600080fd5b5061044f610430366004613455565b6001600160e01b03191660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561047057600080fd5b5061048461047f366004613514565b610cbd565b005b34801561049257600080fd5b5061049b610cf5565b60405161045b91906136af565b3480156104b457600080fd5b506104c86104c3366004613514565b610d87565b6040516001600160a01b03909116815260200161045b565b3480156104ec57600080fd5b506104846104fb366004613355565b610e0f565b34801561050c57600080fd5b50610515610f25565b60405190815260200161045b565b34801561052f57600080fd5b5061048461053e366004613514565b610f9f565b34801561054f57600080fd5b5061048461055e366004613381565b610fce565b34801561056f57600080fd5b5061048461057e366004613289565b611097565b34801561058f57600080fd5b506105156110e3565b3480156105a457600080fd5b506104846105b33660046132df565b6110f4565b3480156105c457600080fd5b5060195461044f9062010000900460ff1681565b3480156105e457600080fd5b506105156105f336600461347f565b611126565b34801561060457600080fd5b50610484610613366004613381565b61114e565b34801561062457600080fd5b506012546104c8906001600160a01b031681565b34801561064457600080fd5b50610515610653366004613355565b611511565b34801561066457600080fd5b506013546104c8906001600160a01b031681565b34801561068457600080fd5b50610515601d5481565b34801561069a57600080fd5b5061048461153a565b3480156106af57600080fd5b506104846106be3660046132df565b611593565b3480156106cf57600080fd5b506106e36106de366004613289565b6115c3565b60405161045b919061366b565b3480156106fc57600080fd5b5061048461070b366004613289565b611665565b34801561071c57600080fd5b506011546104c8906001600160a01b031681565b34801561073c57600080fd5b5061051561074b366004613514565b6116b1565b34801561075c57600080fd5b5061051560185481565b34801561077257600080fd5b50610515601c5481565b34801561078857600080fd5b506104c8610797366004613289565b6025602052600090815260409020546001600160a01b031681565b3480156107be57600080fd5b506104846107cd36600461347f565b6116bf565b3480156107de57600080fd5b506104846107ed366004613514565b6116f2565b3480156107fe57600080fd5b506010546104c8906001600160a01b031681565b34801561081e57600080fd5b5061051560175481565b34801561083457600080fd5b506104c8610843366004613514565b611721565b34801561085457600080fd5b50610484610863366004613514565b611749565b34801561087457600080fd5b5061049b611778565b34801561088957600080fd5b50610515610898366004613289565b611787565b3480156108a957600080fd5b506104846108b836600461352d565b611813565b3480156108c957600080fd5b50610484611851565b3480156108de57600080fd5b50610515601e5481565b3480156108f457600080fd5b506000546001600160a01b03166104c8565b610484610914366004613514565b6118c5565b34801561092557600080fd5b5061051560155481565b34801561093b57600080fd5b5061049b611eab565b34801561095057600080fd5b50610515601f5481565b34801561096657600080fd5b50610484610975366004613320565b611eba565b34801561098657600080fd5b50600f546104c8906001600160a01b031681565b3480156109a657600080fd5b506109ba6109b5366004613514565b611f7f565b60405161045b939291906136c2565b3480156109d557600080fd5b50610515601a5481565b3480156109eb57600080fd5b506104846109fa366004613289565b61204b565b348015610a0b57600080fd5b506000546104c8906001600160a01b031681565b348015610a2b57600080fd5b50610484610a3a366004613514565b612097565b348015610a4b57600080fd5b5061049b6120c6565b348015610a6057600080fd5b5061049b610a6f366004613514565b612154565b348015610a8057600080fd5b50610484610a8f366004613514565b6121ed565b348015610aa057600080fd5b5060225461044f9060ff1681565b348015610aba57600080fd5b50610515601b5481565b348015610ad057600080fd5b5060195461044f90610100900460ff1681565b348015610aef57600080fd5b50610484610afe36600461343a565b61221c565b348015610b0f57600080fd5b5061051560145481565b348015610b2557600080fd5b506106e3610b34366004613289565b612259565b348015610b4557600080fd5b50610484610b5436600461347f565b6122c5565b348015610b6557600080fd5b5061049b612302565b348015610b7a57600080fd5b50610484610b8936600461343a565b612316565b348015610b9a57600080fd5b5061051560205481565b348015610bb057600080fd5b5061044f610bbf3660046132a6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b348015610bf957600080fd5b50610484610c08366004613289565b61235a565b348015610c1957600080fd5b50610484610c2836600461343a565b6123a6565b348015610c3957600080fd5b5061051560165481565b348015610c4f57600080fd5b50610484610c5e366004613289565b6123ec565b348015610c6f57600080fd5b50610484610c7e36600461343a565b6124d6565b348015610c8f57600080fd5b5060195461044f9060ff1681565b348015610ca957600080fd5b50610484610cb8366004613289565b612513565b6000546001600160a01b03163314610cf05760405162461bcd60e51b8152600401610ce7906136f0565b60405180910390fd5b601555565b606060098054610d0490613839565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3090613839565b8015610d7d5780601f10610d5257610100808354040283529160200191610d7d565b820191906000526020600020905b815481529060010190602001808311610d6057829003601f168201915b5050505050905090565b6000610d928261255f565b610df35760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610ce7565b506000908152600760205260409020546001600160a01b031690565b6000610e1a82611721565b9050806001600160a01b0316836001600160a01b03161415610e885760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610ce7565b336001600160a01b0382161480610ea45750610ea48133610bbf565b610f165760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610ce7565b610f20838361256c565b505050565b600080610312601f541115610f9557610312601f54118015610f4b5750610367601f5411155b610f8d57610367601f54118015610f6657506103bc601f5411155b610f85576103bc601f5411610f7d57601b54610f99565b601c54610f99565b601d54610f99565b601e54610f99565b601b545b92915050565b6000546001600160a01b03163314610fc95760405162461bcd60e51b8152600401610ce7906136f0565b601a55565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610ce7906136f0565b60005b808251111561109357818181518110611016576110166138e5565b602002602001015160256000848481518110611034576110346138e5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061108b90613874565b915050610ffb565b5050565b6000546001600160a01b031633146110c15760405162461bcd60e51b8152600401610ce7906136f0565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60006110ef60056125da565b905090565b6110ff335b826125e4565b61111b5760405162461bcd60e51b8152600401610ce790613725565b610f208383836126ce565b6000602482604051611138919061358b565b9081526020016040518091039020549050919050565b6000546001600160a01b031633146111785760405162461bcd60e51b8152600401610ce7906136f0565b6020546111836110e3565b11156111c35760405162461bcd60e51b815260206004820152600f60248201526e2634b6b4ba1032bc31b2b2b232b21760891b6044820152606401610ce7565b60005b81518110156110935760006040518060600160405280604051806040016040528060018152602001600160fd1b815250815260200184848151811061120d5761120d6138e5565b6020908102919091018101516001600160a01b03168252600091810182905260238054600181018255925282518051939450849360039093027fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f4230019261127692849201906131db565b506020820151600182810180546001600160a01b0319166001600160a01b03909316929092179091556040909201516002909101556023546000916112ba916137f2565b905080602382815481106112d0576112d06138e5565b90600052602060002090600302016002018190555060006112ef611778565b90506000816112fd84612863565b6021604051602001611311939291906135a7565b60405160208183030381529060405290508060238481548110611336576113366138e5565b9060005260206000209060030201600001908051906020019061135a9291906131db565b508260248260405161136c919061358b565b9081526020016040518091039020819055506113a1868681518110611393576113936138e5565b602002602001015184612961565b602660008787815181106113b7576113b76138e5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906113f090613874565b919050555060006027600088888151811061140d5761140d6138e5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002080549050905060276000888881518110611451576114516138e5565b6020908102919091018101516001600160a01b031682528181019290925260400160009081208054600181018255908252918120909101859055875182916028918a908a9081106114a4576114a46138e5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086815260200190815260200160002081905550601f60008154809291906114f490613874565b91905055505050505050808061150990613874565b9150506111c6565b6001600160a01b03821660009081526002602052604081206115339083612ac3565b9392505050565b6000546001600160a01b031633146115645760405162461bcd60e51b8152600401610ce7906136f0565b60405133904780156108fc02916000818181858888f19350505050158015611590573d6000803e3d6000fd5b50565b61159c336110f9565b6115b85760405162461bcd60e51b8152600401610ce790613725565b610f2083838361111b565b606060006115d083611787565b905060008167ffffffffffffffff8111156115ed576115ed6138fb565b604051908082528060200260200182016040528015611616578160200160208202803683370190505b50905060005b8281101561165d5761162e8582611511565b828281518110611640576116406138e5565b60209081029190910101528061165581613874565b91505061161c565b509392505050565b6000546001600160a01b0316331461168f5760405162461bcd60e51b8152600401610ce7906136f0565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b60008061165d600584612acf565b6000546001600160a01b031633146116e95760405162461bcd60e51b8152600401610ce7906136f0565b61159081612aeb565b6000546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610ce7906136f0565b601455565b6000610f99826040518060600160405280602981526020016139276029913960059190612afe565b6000546001600160a01b031633146117735760405162461bcd60e51b8152600401610ce7906136f0565b601855565b6060600e8054610d0490613839565b60006001600160a01b0382166117f25760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610ce7565b6001600160a01b0382166000908152600260205260409020610f99906125da565b6000546001600160a01b0316331461183d5760405162461bcd60e51b8152600401610ce7906136f0565b601b93909355601c91909155601d55601e55565b6000546001600160a01b0316331461187b5760405162461bcd60e51b8152600401610ce7906136f0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60225460ff16156119075760405162461bcd60e51b815260206004820152600c60248201526b26b4b73a103830bab9b2b21760a11b6044820152606401610ce7565b60205461191c826119166110e3565b90612b0b565b111561195c5760405162461bcd60e51b815260206004820152600f60248201526e2634b6b4ba1032bc31b2b2b232b21760891b6044820152606401610ce7565b601f54610312141561197c5761197260006123a6565b61197c60016124d6565b601f5461046914156119925761199260016124d6565b60195462010000900460ff1615611a1e57336000818152602560205260409020546001600160a01b031614611a005760405162461bcd60e51b815260206004820152601460248201527321363b31b5b634b9ba102737ba102337bab7321760611b6044820152606401610ce7565b33600090815260256020526040902080546001600160a01b03191690555b601954600090610100900460ff1615611a7257611a518215611a405782611a43565b60015b611a4b610f25565b90612b6a565b3414611a5c57600080fd5b611a6b8215611a405782611a43565b9050611aaa565b611a8d8215611a815782611a84565b60015b601b5490612b6a565b3414611a9857600080fd5b611aa78215611a815782611a84565b90505b60195460ff1615611af5576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611aef573d6000803e3d6000fd5b50611c91565b600f546014546001600160a01b03909116906108fc90611b2390606490611b1d908690612b6a565b90612be9565b6040518115909202916000818181858888f19350505050158015611b4b573d6000803e3d6000fd5b506010546015546001600160a01b03909116906108fc90611b7490606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611b9c573d6000803e3d6000fd5b506011546016546001600160a01b03909116906108fc90611bc590606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611bed573d6000803e3d6000fd5b506012546017546001600160a01b03909116906108fc90611c1690606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611c3e573d6000803e3d6000fd5b506013546018546001600160a01b03909116906108fc90611c6790606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611c8f573d6000803e3d6000fd5b505b60005b82811015610f20576040805160a081018252600160608201818152600160fd1b60808401528252336020808401919091526000938301849052602380549283018155909352815180519293849360039093027fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300192611d1692849201906131db565b506020820151600182810180546001600160a01b0319166001600160a01b0390931692909217909155604090920151600290910155602354600091611d5a916137f2565b90508060238281548110611d7057611d706138e5565b9060005260206000209060030201600201819055506000611d8f611778565b9050600081611d9d84612863565b6021604051602001611db1939291906135a7565b60405160208183030381529060405290508060238481548110611dd657611dd66138e5565b90600052602060002090600302016000019080519060200190611dfa9291906131db565b5082602482604051611e0c919061358b565b90815260405190819003602001902055611e263384612961565b336000908152602660205260408120805491611e4183613874565b909155505033600081815260276020908152604080832080546001810182559084528284208101889055938352602882528083208784529091528120829055601f805491611e8e83613874565b919050555050505050508080611ea390613874565b915050611c94565b6060600a8054610d0490613839565b6001600160a01b038216331415611f135760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610ce7565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60238181548110611f8f57600080fd5b9060005260206000209060030201600091509050806000018054611fb290613839565b80601f0160208091040260200160405190810160405280929190818152602001828054611fde90613839565b801561202b5780601f106120005761010080835404028352916020019161202b565b820191906000526020600020905b81548152906001019060200180831161200e57829003601f168201915b50505050600183015460029093015491926001600160a01b031691905083565b6000546001600160a01b031633146120755760405162461bcd60e51b8152600401610ce7906136f0565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120c15760405162461bcd60e51b8152600401610ce7906136f0565b601755565b602180546120d390613839565b80601f01602080910402602001604051908101604052809291908181526020018280546120ff90613839565b801561214c5780601f106121215761010080835404028352916020019161214c565b820191906000526020600020905b81548152906001019060200180831161212f57829003601f168201915b505050505081565b606061215f8261255f565b6121c35760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610ce7565b60006121cd611778565b90506000815111610f995760405180602001604052806000815250611533565b6000546001600160a01b031633146122175760405162461bcd60e51b8152600401610ce7906136f0565b601655565b6000546001600160a01b031633146122465760405162461bcd60e51b8152600401610ce7906136f0565b6019805460ff1916911515919091179055565b6001600160a01b0381166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156122b957602002820191906000526020600020905b8154815260200190600101908083116122a5575b50505050509050919050565b6000546001600160a01b031633146122ef5760405162461bcd60e51b8152600401610ce7906136f0565b80516110939060219060208401906131db565b60606110ef61231160056125da565b612863565b6000546001600160a01b031633146123405760405162461bcd60e51b8152600401610ce7906136f0565b601980549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146123845760405162461bcd60e51b8152600401610ce7906136f0565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123d05760405162461bcd60e51b8152600401610ce7906136f0565b60198054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146124165760405162461bcd60e51b8152600401610ce7906136f0565b6001600160a01b03811661247b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125005760405162461bcd60e51b8152600401610ce7906136f0565b6022805460ff1916911515919091179055565b6000546001600160a01b0316331461253d5760405162461bcd60e51b8152600401610ce7906136f0565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f99600583612c44565b600081815260076020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125a182611721565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610f99825490565b60006125ef8261255f565b6126505760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610ce7565b600061265b83611721565b9050806001600160a01b0316846001600160a01b031614806126965750836001600160a01b031661268b84610d87565b6001600160a01b0316145b806126c657506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166126e182611721565b6001600160a01b0316146127495760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610ce7565b6001600160a01b0382166127ab5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce7565b6127b660008261256c565b6001600160a01b03831660009081526002602052604090206127d89082612c5c565b506001600160a01b03821660009081526002602052604090206127fb9082612c68565b506128068382612c74565b6128108282612dbe565b61281c60058284612dfa565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6060816128875750506040805180820190915260018152600360fc1b602082015290565b8160005b81156128b1578061289b81613874565b91506128aa9050600a836137bf565b915061288b565b60008167ffffffffffffffff8111156128cc576128cc6138fb565b6040519080825280601f01601f1916602001820160405280156128f6576020820181803683370190505b5090505b84156126c65761290b6001836137f2565b9150612918600a8661388f565b6129239060306137a7565b60f81b818381518110612938576129386138e5565b60200101906001600160f81b031916908160001a90535061295a600a866137bf565b94506128fa565b6001600160a01b0382166129b75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610ce7565b6129c08161255f565b15612a0d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610ce7565b600c80546000838152600d60209081526040808320849055600184019094557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c79092018490556001600160a01b0385168152600290915220612a6f9082612c68565b50612a7a8282612dbe565b612a8660058284612dfa565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006115338383612e10565b6000808080612ade8686612e96565b9097909650945050505050565b805161109390600e9060208401906131db565b60006126c6848484612f33565b600080612b1883856137a7565b9050838110156115335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ce7565b600082612b7957506000610f99565b6000612b8583856137d3565b905082612b9285836137bf565b146115335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ce7565b6000808211612c3a5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ce7565b61153382846137bf565b60008181526001830160205260408120541515611533565b60006115338383612f9c565b6000611533838361308f565b6000818152600460209081526040808320546001600160a01b03861684526003909252822054909190612ca89060016130de565b6001600160a01b03851660009081526003602052604081208054929350909183908110612cd757612cd76138e5565b906000526020600020015490508060036000876001600160a01b03166001600160a01b031681526020019081526020016000208481548110612d1b57612d1b6138e5565b60009182526020808320909101929092556001600160a01b0387168152600390915260408120805484908110612d5357612d536138e5565b60009182526020808320909101929092556001600160a01b0387168152600390915260409020805480612d8857612d886138cf565b60008281526020808220830160001990810183905590920190925594815260049094526040808520859055908452909220555050565b6001600160a01b039091166000908152600360209081526040808320805460018101825590845282842081018590559383526004909152902055565b60006126c684846001600160a01b03851661313a565b81546000908210612e6e5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610ce7565b826000018281548110612e8357612e836138e5565b9060005260206000200154905092915050565b815460009081908310612ef65760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610ce7565b6000846000018481548110612f0d57612f0d6138e5565b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281612f635760405162461bcd60e51b8152600401610ce791906136af565b5084612f706001836137f2565b81548110612f8057612f806138e5565b9060005260206000209060020201600101549150509392505050565b60008181526001830160205260408120548015613085576000612fc06001836137f2565b8554909150600090612fd4906001906137f2565b90506000866000018281548110612fed57612fed6138e5565b9060005260206000200154905080876000018481548110613010576130106138e5565b6000918252602090912001556130278360016137a7565b60008281526001890160205260409020558654879080613049576130496138cf565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610f99565b6000915050610f99565b60008181526001830160205260408120546130d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f99565b506000610f99565b6000828211156131305760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ce7565b61153382846137f2565b60008281526001840160205260408120548061319f575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611533565b82856131ac6001846137f2565b815481106131bc576131bc6138e5565b9060005260206000209060020201600101819055506000915050611533565b8280546131e790613839565b90600052602060002090601f016020900481019282613209576000855561324f565b82601f1061322257805160ff191683800117855561324f565b8280016001018555821561324f579182015b8281111561324f578251825591602001919060010190613234565b5061325b92915061325f565b5090565b5b8082111561325b5760008155600101613260565b8035801515811461328457600080fd5b919050565b60006020828403121561329b57600080fd5b813561153381613911565b600080604083850312156132b957600080fd5b82356132c481613911565b915060208301356132d481613911565b809150509250929050565b6000806000606084860312156132f457600080fd5b83356132ff81613911565b9250602084013561330f81613911565b929592945050506040919091013590565b6000806040838503121561333357600080fd5b823561333e81613911565b915061334c60208401613274565b90509250929050565b6000806040838503121561336857600080fd5b823561337381613911565b946020939093013593505050565b6000602080838503121561339457600080fd5b823567ffffffffffffffff808211156133ac57600080fd5b818501915085601f8301126133c057600080fd5b8135818111156133d2576133d26138fb565b8060051b91506133e3848301613776565b8181528481019084860184860187018a10156133fe57600080fd5b600095505b8386101561342d578035945061341885613911565b84835260019590950194918601918601613403565b5098975050505050505050565b60006020828403121561344c57600080fd5b61153382613274565b60006020828403121561346757600080fd5b81356001600160e01b03198116811461153357600080fd5b6000602080838503121561349257600080fd5b823567ffffffffffffffff808211156134aa57600080fd5b818501915085601f8301126134be57600080fd5b8135818111156134d0576134d06138fb565b6134e2601f8201601f19168501613776565b915080825286848285010111156134f857600080fd5b8084840185840137600090820190930192909252509392505050565b60006020828403121561352657600080fd5b5035919050565b6000806000806080858703121561354357600080fd5b5050823594602084013594506040840135936060013592509050565b60008151808452613577816020860160208601613809565b601f01601f19169290920160200192915050565b6000825161359d818460208701613809565b9190910192915050565b6000845160206135ba8285838a01613809565b8551918401916135cd8184848a01613809565b8554920191600090600181811c90808316806135ea57607f831692505b85831081141561360857634e487b7160e01b85526022600452602485fd5b80801561361c576001811461362d5761365a565b60ff1985168852838801955061365a565b60008b81526020902060005b858110156136525781548a820152908401908801613639565b505083880195505b50939b9a5050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136a357835183529284019291840191600101613687565b50909695505050505050565b602081526000611533602083018461355f565b6060815260006136d5606083018661355f565b6001600160a01b039490941660208301525060400152919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561379f5761379f6138fb565b604052919050565b600082198211156137ba576137ba6138a3565b500190565b6000826137ce576137ce6138b9565b500490565b60008160001904831182151516156137ed576137ed6138a3565b500290565b600082821015613804576138046138a3565b500390565b60005b8381101561382457818101518382015260200161380c565b83811115613833576000848401525b50505050565b600181811c9082168061384d57607f821691505b6020821081141561386e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613888576138886138a3565b5060010190565b60008261389e5761389e6138b9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461159057600080fdfe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212205a589acddf0980a69eb87176f945cb7f1867199b381a2713bb10fe2dbfd1093264736f6c63430008070033
Deployed Bytecode
0x6080604052600436106104105760003560e01c8063710b3cdb1161021e578063cd85cdb511610123578063df38fd41116100ab578063ecfeb5ba1161007a578063ecfeb5ba14610c2d578063f2fde38b14610c43578063f59e26d014610c63578063f73fb6d814610c83578063fce57fd914610c9d57600080fd5b8063df38fd4114610b8e578063e985e9c514610ba4578063ea414b2814610bed578063eb77babc14610c0d57600080fd5b8063d862686b116100f2578063d862686b14610b03578063d9d6165514610b19578063da3ef23f14610b39578063da6fa46c14610b59578063ddcdaa9414610b6e57600080fd5b8063cd85cdb514610a94578063d122ae1314610aae578063d1fe033d14610ac4578063d34a6a3314610ae357600080fd5b8063a3342fba116101a6578063b2bdfa7b11610175578063b2bdfa7b146109ff578063b3eb583514610a1f578063c668286214610a3f578063c87b56dd14610a54578063cd6840d514610a7457600080fd5b8063a3342fba1461097a578063a40f232f1461099a578063a5b59043146109c9578063a8602fea146109df57600080fd5b806392642744116101ed5780639264274414610906578063932733c71461091957806395d89b411461092f5780639659867e14610944578063a22cb4651461095a57600080fd5b8063710b3cdb1461089d578063715018a6146108bd5780637cd1c310146108d25780638da5cb5b146108e857600080fd5b8063334635f01161032457806354fd1467116102ac5780635f7b144a1161027b5780635f7b144a146108125780636352211e146108285780636bb4c459146108485780636c0360eb1461086857806370a082311461087d57600080fd5b806354fd14671461077c57806355f804b3146107b257806356ea64ad146107d257806359927044146107f257600080fd5b806345136c4b116102f357806345136c4b146106f05780634626402b146107105780634f6ccce71461073057806354be17141461075057806354ed458a1461076657600080fd5b8063334635f0146106785780633ccfd60b1461068e57806342842e0e146106a3578063438b6300146106c357600080fd5b80631525ff7d116103a757806327ea2df01161037657806327ea2df0146105d857806329f3265b146105f85780632dc0562d146106185780632f745c59146106385780632fe5cba11461065857600080fd5b80631525ff7d1461056357806318160ddd1461058357806323b872dd14610598578063256a7998146105b857600080fd5b8063095ea7b3116103e3578063095ea7b3146104e0578063098154d2146105005780630dee18e4146105235780630ea427501461054357600080fd5b806301ffc9a7146104155780630256276d1461046457806306fdde0314610486578063081812fc146104a8575b600080fd5b34801561042157600080fd5b5061044f610430366004613455565b6001600160e01b03191660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561047057600080fd5b5061048461047f366004613514565b610cbd565b005b34801561049257600080fd5b5061049b610cf5565b60405161045b91906136af565b3480156104b457600080fd5b506104c86104c3366004613514565b610d87565b6040516001600160a01b03909116815260200161045b565b3480156104ec57600080fd5b506104846104fb366004613355565b610e0f565b34801561050c57600080fd5b50610515610f25565b60405190815260200161045b565b34801561052f57600080fd5b5061048461053e366004613514565b610f9f565b34801561054f57600080fd5b5061048461055e366004613381565b610fce565b34801561056f57600080fd5b5061048461057e366004613289565b611097565b34801561058f57600080fd5b506105156110e3565b3480156105a457600080fd5b506104846105b33660046132df565b6110f4565b3480156105c457600080fd5b5060195461044f9062010000900460ff1681565b3480156105e457600080fd5b506105156105f336600461347f565b611126565b34801561060457600080fd5b50610484610613366004613381565b61114e565b34801561062457600080fd5b506012546104c8906001600160a01b031681565b34801561064457600080fd5b50610515610653366004613355565b611511565b34801561066457600080fd5b506013546104c8906001600160a01b031681565b34801561068457600080fd5b50610515601d5481565b34801561069a57600080fd5b5061048461153a565b3480156106af57600080fd5b506104846106be3660046132df565b611593565b3480156106cf57600080fd5b506106e36106de366004613289565b6115c3565b60405161045b919061366b565b3480156106fc57600080fd5b5061048461070b366004613289565b611665565b34801561071c57600080fd5b506011546104c8906001600160a01b031681565b34801561073c57600080fd5b5061051561074b366004613514565b6116b1565b34801561075c57600080fd5b5061051560185481565b34801561077257600080fd5b50610515601c5481565b34801561078857600080fd5b506104c8610797366004613289565b6025602052600090815260409020546001600160a01b031681565b3480156107be57600080fd5b506104846107cd36600461347f565b6116bf565b3480156107de57600080fd5b506104846107ed366004613514565b6116f2565b3480156107fe57600080fd5b506010546104c8906001600160a01b031681565b34801561081e57600080fd5b5061051560175481565b34801561083457600080fd5b506104c8610843366004613514565b611721565b34801561085457600080fd5b50610484610863366004613514565b611749565b34801561087457600080fd5b5061049b611778565b34801561088957600080fd5b50610515610898366004613289565b611787565b3480156108a957600080fd5b506104846108b836600461352d565b611813565b3480156108c957600080fd5b50610484611851565b3480156108de57600080fd5b50610515601e5481565b3480156108f457600080fd5b506000546001600160a01b03166104c8565b610484610914366004613514565b6118c5565b34801561092557600080fd5b5061051560155481565b34801561093b57600080fd5b5061049b611eab565b34801561095057600080fd5b50610515601f5481565b34801561096657600080fd5b50610484610975366004613320565b611eba565b34801561098657600080fd5b50600f546104c8906001600160a01b031681565b3480156109a657600080fd5b506109ba6109b5366004613514565b611f7f565b60405161045b939291906136c2565b3480156109d557600080fd5b50610515601a5481565b3480156109eb57600080fd5b506104846109fa366004613289565b61204b565b348015610a0b57600080fd5b506000546104c8906001600160a01b031681565b348015610a2b57600080fd5b50610484610a3a366004613514565b612097565b348015610a4b57600080fd5b5061049b6120c6565b348015610a6057600080fd5b5061049b610a6f366004613514565b612154565b348015610a8057600080fd5b50610484610a8f366004613514565b6121ed565b348015610aa057600080fd5b5060225461044f9060ff1681565b348015610aba57600080fd5b50610515601b5481565b348015610ad057600080fd5b5060195461044f90610100900460ff1681565b348015610aef57600080fd5b50610484610afe36600461343a565b61221c565b348015610b0f57600080fd5b5061051560145481565b348015610b2557600080fd5b506106e3610b34366004613289565b612259565b348015610b4557600080fd5b50610484610b5436600461347f565b6122c5565b348015610b6557600080fd5b5061049b612302565b348015610b7a57600080fd5b50610484610b8936600461343a565b612316565b348015610b9a57600080fd5b5061051560205481565b348015610bb057600080fd5b5061044f610bbf3660046132a6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b348015610bf957600080fd5b50610484610c08366004613289565b61235a565b348015610c1957600080fd5b50610484610c2836600461343a565b6123a6565b348015610c3957600080fd5b5061051560165481565b348015610c4f57600080fd5b50610484610c5e366004613289565b6123ec565b348015610c6f57600080fd5b50610484610c7e36600461343a565b6124d6565b348015610c8f57600080fd5b5060195461044f9060ff1681565b348015610ca957600080fd5b50610484610cb8366004613289565b612513565b6000546001600160a01b03163314610cf05760405162461bcd60e51b8152600401610ce7906136f0565b60405180910390fd5b601555565b606060098054610d0490613839565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3090613839565b8015610d7d5780601f10610d5257610100808354040283529160200191610d7d565b820191906000526020600020905b815481529060010190602001808311610d6057829003601f168201915b5050505050905090565b6000610d928261255f565b610df35760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610ce7565b506000908152600760205260409020546001600160a01b031690565b6000610e1a82611721565b9050806001600160a01b0316836001600160a01b03161415610e885760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610ce7565b336001600160a01b0382161480610ea45750610ea48133610bbf565b610f165760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610ce7565b610f20838361256c565b505050565b600080610312601f541115610f9557610312601f54118015610f4b5750610367601f5411155b610f8d57610367601f54118015610f6657506103bc601f5411155b610f85576103bc601f5411610f7d57601b54610f99565b601c54610f99565b601d54610f99565b601e54610f99565b601b545b92915050565b6000546001600160a01b03163314610fc95760405162461bcd60e51b8152600401610ce7906136f0565b601a55565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610ce7906136f0565b60005b808251111561109357818181518110611016576110166138e5565b602002602001015160256000848481518110611034576110346138e5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061108b90613874565b915050610ffb565b5050565b6000546001600160a01b031633146110c15760405162461bcd60e51b8152600401610ce7906136f0565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60006110ef60056125da565b905090565b6110ff335b826125e4565b61111b5760405162461bcd60e51b8152600401610ce790613725565b610f208383836126ce565b6000602482604051611138919061358b565b9081526020016040518091039020549050919050565b6000546001600160a01b031633146111785760405162461bcd60e51b8152600401610ce7906136f0565b6020546111836110e3565b11156111c35760405162461bcd60e51b815260206004820152600f60248201526e2634b6b4ba1032bc31b2b2b232b21760891b6044820152606401610ce7565b60005b81518110156110935760006040518060600160405280604051806040016040528060018152602001600160fd1b815250815260200184848151811061120d5761120d6138e5565b6020908102919091018101516001600160a01b03168252600091810182905260238054600181018255925282518051939450849360039093027fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f4230019261127692849201906131db565b506020820151600182810180546001600160a01b0319166001600160a01b03909316929092179091556040909201516002909101556023546000916112ba916137f2565b905080602382815481106112d0576112d06138e5565b90600052602060002090600302016002018190555060006112ef611778565b90506000816112fd84612863565b6021604051602001611311939291906135a7565b60405160208183030381529060405290508060238481548110611336576113366138e5565b9060005260206000209060030201600001908051906020019061135a9291906131db565b508260248260405161136c919061358b565b9081526020016040518091039020819055506113a1868681518110611393576113936138e5565b602002602001015184612961565b602660008787815181106113b7576113b76138e5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906113f090613874565b919050555060006027600088888151811061140d5761140d6138e5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002080549050905060276000888881518110611451576114516138e5565b6020908102919091018101516001600160a01b031682528181019290925260400160009081208054600181018255908252918120909101859055875182916028918a908a9081106114a4576114a46138e5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086815260200190815260200160002081905550601f60008154809291906114f490613874565b91905055505050505050808061150990613874565b9150506111c6565b6001600160a01b03821660009081526002602052604081206115339083612ac3565b9392505050565b6000546001600160a01b031633146115645760405162461bcd60e51b8152600401610ce7906136f0565b60405133904780156108fc02916000818181858888f19350505050158015611590573d6000803e3d6000fd5b50565b61159c336110f9565b6115b85760405162461bcd60e51b8152600401610ce790613725565b610f2083838361111b565b606060006115d083611787565b905060008167ffffffffffffffff8111156115ed576115ed6138fb565b604051908082528060200260200182016040528015611616578160200160208202803683370190505b50905060005b8281101561165d5761162e8582611511565b828281518110611640576116406138e5565b60209081029190910101528061165581613874565b91505061161c565b509392505050565b6000546001600160a01b0316331461168f5760405162461bcd60e51b8152600401610ce7906136f0565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b60008061165d600584612acf565b6000546001600160a01b031633146116e95760405162461bcd60e51b8152600401610ce7906136f0565b61159081612aeb565b6000546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610ce7906136f0565b601455565b6000610f99826040518060600160405280602981526020016139276029913960059190612afe565b6000546001600160a01b031633146117735760405162461bcd60e51b8152600401610ce7906136f0565b601855565b6060600e8054610d0490613839565b60006001600160a01b0382166117f25760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610ce7565b6001600160a01b0382166000908152600260205260409020610f99906125da565b6000546001600160a01b0316331461183d5760405162461bcd60e51b8152600401610ce7906136f0565b601b93909355601c91909155601d55601e55565b6000546001600160a01b0316331461187b5760405162461bcd60e51b8152600401610ce7906136f0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60225460ff16156119075760405162461bcd60e51b815260206004820152600c60248201526b26b4b73a103830bab9b2b21760a11b6044820152606401610ce7565b60205461191c826119166110e3565b90612b0b565b111561195c5760405162461bcd60e51b815260206004820152600f60248201526e2634b6b4ba1032bc31b2b2b232b21760891b6044820152606401610ce7565b601f54610312141561197c5761197260006123a6565b61197c60016124d6565b601f5461046914156119925761199260016124d6565b60195462010000900460ff1615611a1e57336000818152602560205260409020546001600160a01b031614611a005760405162461bcd60e51b815260206004820152601460248201527321363b31b5b634b9ba102737ba102337bab7321760611b6044820152606401610ce7565b33600090815260256020526040902080546001600160a01b03191690555b601954600090610100900460ff1615611a7257611a518215611a405782611a43565b60015b611a4b610f25565b90612b6a565b3414611a5c57600080fd5b611a6b8215611a405782611a43565b9050611aaa565b611a8d8215611a815782611a84565b60015b601b5490612b6a565b3414611a9857600080fd5b611aa78215611a815782611a84565b90505b60195460ff1615611af5576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611aef573d6000803e3d6000fd5b50611c91565b600f546014546001600160a01b03909116906108fc90611b2390606490611b1d908690612b6a565b90612be9565b6040518115909202916000818181858888f19350505050158015611b4b573d6000803e3d6000fd5b506010546015546001600160a01b03909116906108fc90611b7490606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611b9c573d6000803e3d6000fd5b506011546016546001600160a01b03909116906108fc90611bc590606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611bed573d6000803e3d6000fd5b506012546017546001600160a01b03909116906108fc90611c1690606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611c3e573d6000803e3d6000fd5b506013546018546001600160a01b03909116906108fc90611c6790606490611b1d908690612b6a565b6040518115909202916000818181858888f19350505050158015611c8f573d6000803e3d6000fd5b505b60005b82811015610f20576040805160a081018252600160608201818152600160fd1b60808401528252336020808401919091526000938301849052602380549283018155909352815180519293849360039093027fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300192611d1692849201906131db565b506020820151600182810180546001600160a01b0319166001600160a01b0390931692909217909155604090920151600290910155602354600091611d5a916137f2565b90508060238281548110611d7057611d706138e5565b9060005260206000209060030201600201819055506000611d8f611778565b9050600081611d9d84612863565b6021604051602001611db1939291906135a7565b60405160208183030381529060405290508060238481548110611dd657611dd66138e5565b90600052602060002090600302016000019080519060200190611dfa9291906131db565b5082602482604051611e0c919061358b565b90815260405190819003602001902055611e263384612961565b336000908152602660205260408120805491611e4183613874565b909155505033600081815260276020908152604080832080546001810182559084528284208101889055938352602882528083208784529091528120829055601f805491611e8e83613874565b919050555050505050508080611ea390613874565b915050611c94565b6060600a8054610d0490613839565b6001600160a01b038216331415611f135760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610ce7565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60238181548110611f8f57600080fd5b9060005260206000209060030201600091509050806000018054611fb290613839565b80601f0160208091040260200160405190810160405280929190818152602001828054611fde90613839565b801561202b5780601f106120005761010080835404028352916020019161202b565b820191906000526020600020905b81548152906001019060200180831161200e57829003601f168201915b50505050600183015460029093015491926001600160a01b031691905083565b6000546001600160a01b031633146120755760405162461bcd60e51b8152600401610ce7906136f0565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120c15760405162461bcd60e51b8152600401610ce7906136f0565b601755565b602180546120d390613839565b80601f01602080910402602001604051908101604052809291908181526020018280546120ff90613839565b801561214c5780601f106121215761010080835404028352916020019161214c565b820191906000526020600020905b81548152906001019060200180831161212f57829003601f168201915b505050505081565b606061215f8261255f565b6121c35760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610ce7565b60006121cd611778565b90506000815111610f995760405180602001604052806000815250611533565b6000546001600160a01b031633146122175760405162461bcd60e51b8152600401610ce7906136f0565b601655565b6000546001600160a01b031633146122465760405162461bcd60e51b8152600401610ce7906136f0565b6019805460ff1916911515919091179055565b6001600160a01b0381166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156122b957602002820191906000526020600020905b8154815260200190600101908083116122a5575b50505050509050919050565b6000546001600160a01b031633146122ef5760405162461bcd60e51b8152600401610ce7906136f0565b80516110939060219060208401906131db565b60606110ef61231160056125da565b612863565b6000546001600160a01b031633146123405760405162461bcd60e51b8152600401610ce7906136f0565b601980549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146123845760405162461bcd60e51b8152600401610ce7906136f0565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123d05760405162461bcd60e51b8152600401610ce7906136f0565b60198054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146124165760405162461bcd60e51b8152600401610ce7906136f0565b6001600160a01b03811661247b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125005760405162461bcd60e51b8152600401610ce7906136f0565b6022805460ff1916911515919091179055565b6000546001600160a01b0316331461253d5760405162461bcd60e51b8152600401610ce7906136f0565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f99600583612c44565b600081815260076020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125a182611721565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610f99825490565b60006125ef8261255f565b6126505760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610ce7565b600061265b83611721565b9050806001600160a01b0316846001600160a01b031614806126965750836001600160a01b031661268b84610d87565b6001600160a01b0316145b806126c657506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166126e182611721565b6001600160a01b0316146127495760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610ce7565b6001600160a01b0382166127ab5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce7565b6127b660008261256c565b6001600160a01b03831660009081526002602052604090206127d89082612c5c565b506001600160a01b03821660009081526002602052604090206127fb9082612c68565b506128068382612c74565b6128108282612dbe565b61281c60058284612dfa565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6060816128875750506040805180820190915260018152600360fc1b602082015290565b8160005b81156128b1578061289b81613874565b91506128aa9050600a836137bf565b915061288b565b60008167ffffffffffffffff8111156128cc576128cc6138fb565b6040519080825280601f01601f1916602001820160405280156128f6576020820181803683370190505b5090505b84156126c65761290b6001836137f2565b9150612918600a8661388f565b6129239060306137a7565b60f81b818381518110612938576129386138e5565b60200101906001600160f81b031916908160001a90535061295a600a866137bf565b94506128fa565b6001600160a01b0382166129b75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610ce7565b6129c08161255f565b15612a0d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610ce7565b600c80546000838152600d60209081526040808320849055600184019094557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c79092018490556001600160a01b0385168152600290915220612a6f9082612c68565b50612a7a8282612dbe565b612a8660058284612dfa565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006115338383612e10565b6000808080612ade8686612e96565b9097909650945050505050565b805161109390600e9060208401906131db565b60006126c6848484612f33565b600080612b1883856137a7565b9050838110156115335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ce7565b600082612b7957506000610f99565b6000612b8583856137d3565b905082612b9285836137bf565b146115335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ce7565b6000808211612c3a5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ce7565b61153382846137bf565b60008181526001830160205260408120541515611533565b60006115338383612f9c565b6000611533838361308f565b6000818152600460209081526040808320546001600160a01b03861684526003909252822054909190612ca89060016130de565b6001600160a01b03851660009081526003602052604081208054929350909183908110612cd757612cd76138e5565b906000526020600020015490508060036000876001600160a01b03166001600160a01b031681526020019081526020016000208481548110612d1b57612d1b6138e5565b60009182526020808320909101929092556001600160a01b0387168152600390915260408120805484908110612d5357612d536138e5565b60009182526020808320909101929092556001600160a01b0387168152600390915260409020805480612d8857612d886138cf565b60008281526020808220830160001990810183905590920190925594815260049094526040808520859055908452909220555050565b6001600160a01b039091166000908152600360209081526040808320805460018101825590845282842081018590559383526004909152902055565b60006126c684846001600160a01b03851661313a565b81546000908210612e6e5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610ce7565b826000018281548110612e8357612e836138e5565b9060005260206000200154905092915050565b815460009081908310612ef65760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610ce7565b6000846000018481548110612f0d57612f0d6138e5565b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281612f635760405162461bcd60e51b8152600401610ce791906136af565b5084612f706001836137f2565b81548110612f8057612f806138e5565b9060005260206000209060020201600101549150509392505050565b60008181526001830160205260408120548015613085576000612fc06001836137f2565b8554909150600090612fd4906001906137f2565b90506000866000018281548110612fed57612fed6138e5565b9060005260206000200154905080876000018481548110613010576130106138e5565b6000918252602090912001556130278360016137a7565b60008281526001890160205260409020558654879080613049576130496138cf565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610f99565b6000915050610f99565b60008181526001830160205260408120546130d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f99565b506000610f99565b6000828211156131305760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ce7565b61153382846137f2565b60008281526001840160205260408120548061319f575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611533565b82856131ac6001846137f2565b815481106131bc576131bc6138e5565b9060005260206000209060020201600101819055506000915050611533565b8280546131e790613839565b90600052602060002090601f016020900481019282613209576000855561324f565b82601f1061322257805160ff191683800117855561324f565b8280016001018555821561324f579182015b8281111561324f578251825591602001919060010190613234565b5061325b92915061325f565b5090565b5b8082111561325b5760008155600101613260565b8035801515811461328457600080fd5b919050565b60006020828403121561329b57600080fd5b813561153381613911565b600080604083850312156132b957600080fd5b82356132c481613911565b915060208301356132d481613911565b809150509250929050565b6000806000606084860312156132f457600080fd5b83356132ff81613911565b9250602084013561330f81613911565b929592945050506040919091013590565b6000806040838503121561333357600080fd5b823561333e81613911565b915061334c60208401613274565b90509250929050565b6000806040838503121561336857600080fd5b823561337381613911565b946020939093013593505050565b6000602080838503121561339457600080fd5b823567ffffffffffffffff808211156133ac57600080fd5b818501915085601f8301126133c057600080fd5b8135818111156133d2576133d26138fb565b8060051b91506133e3848301613776565b8181528481019084860184860187018a10156133fe57600080fd5b600095505b8386101561342d578035945061341885613911565b84835260019590950194918601918601613403565b5098975050505050505050565b60006020828403121561344c57600080fd5b61153382613274565b60006020828403121561346757600080fd5b81356001600160e01b03198116811461153357600080fd5b6000602080838503121561349257600080fd5b823567ffffffffffffffff808211156134aa57600080fd5b818501915085601f8301126134be57600080fd5b8135818111156134d0576134d06138fb565b6134e2601f8201601f19168501613776565b915080825286848285010111156134f857600080fd5b8084840185840137600090820190930192909252509392505050565b60006020828403121561352657600080fd5b5035919050565b6000806000806080858703121561354357600080fd5b5050823594602084013594506040840135936060013592509050565b60008151808452613577816020860160208601613809565b601f01601f19169290920160200192915050565b6000825161359d818460208701613809565b9190910192915050565b6000845160206135ba8285838a01613809565b8551918401916135cd8184848a01613809565b8554920191600090600181811c90808316806135ea57607f831692505b85831081141561360857634e487b7160e01b85526022600452602485fd5b80801561361c576001811461362d5761365a565b60ff1985168852838801955061365a565b60008b81526020902060005b858110156136525781548a820152908401908801613639565b505083880195505b50939b9a5050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136a357835183529284019291840191600101613687565b50909695505050505050565b602081526000611533602083018461355f565b6060815260006136d5606083018661355f565b6001600160a01b039490941660208301525060400152919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561379f5761379f6138fb565b604052919050565b600082198211156137ba576137ba6138a3565b500190565b6000826137ce576137ce6138b9565b500490565b60008160001904831182151516156137ed576137ed6138a3565b500290565b600082821015613804576138046138a3565b500390565b60005b8381101561382457818101518382015260200161380c565b83811115613833576000848401525b50505050565b600181811c9082168061384d57607f821691505b6020821081141561386e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613888576138886138a3565b5060010190565b60008261389e5761389e6138b9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461159057600080fdfe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212205a589acddf0980a69eb87176f945cb7f1867199b381a2713bb10fe2dbfd1093264736f6c63430008070033
Deployed Bytecode Sourcemap
38106:9464:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2292:150;;;;;;;;;;-1:-1:-1;2292:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;;2401:33:0;2377:4;2401:33;;;:20;:33;;;;;;;;;2292:150;;;;8352:14:1;;8345:22;8327:41;;8315:2;8300:18;2292:150:0;;;;;;;;41775:85;;;;;;;;;;-1:-1:-1;41775:85:0;;;;;:::i;:::-;;:::i;:::-;;27601:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;31246:221::-;;;;;;;;;;-1:-1:-1;31246:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7282:32:1;;;7264:51;;7252:2;7237:18;31246:221:0;7118:203:1;30776:404:0;;;;;;;;;;-1:-1:-1;30776:404:0;;;;;:::i;:::-;;:::i;47185:381::-;;;;;;;;;;;;;:::i;:::-;;;18008:25:1;;;17996:2;17981:18;47185:381:0;17862:177:1;40954:92:0;;;;;;;;;;-1:-1:-1;40954:92:0;;;;;:::i;:::-;;:::i;42529:176::-;;;;;;;;;;-1:-1:-1;42529:176:0;;;;;:::i;:::-;;:::i;42299:102::-;;;;;;;;;;-1:-1:-1;42299:102:0;;;;;:::i;:::-;;:::i;30254:211::-;;;;;;;;;;;;;:::i;32136:313::-;;;;;;;;;;-1:-1:-1;32136:313:0;;;;;:::i;:::-;;:::i;39171:34::-;;;;;;;;;;-1:-1:-1;39171:34:0;;;;;;;;;;;42822:134;;;;;;;;;;-1:-1:-1;42822:134:0;;;;;:::i;:::-;;:::i;45591:1188::-;;;;;;;;;;-1:-1:-1;45591:1188:0;;;;;:::i;:::-;;:::i;38730:86::-;;;;;;;;;;-1:-1:-1;38730:86:0;;;;-1:-1:-1;;;;;38730:86:0;;;30016:162;;;;;;;;;;-1:-1:-1;30016:162:0;;;;;:::i;:::-;;:::i;38823:86::-;;;;;;;;;;-1:-1:-1;38823:86:0;;;;-1:-1:-1;;;;;38823:86:0;;;39378:47;;;;;;;;;;;;;;;;40432:107;;;;;;;;;;;;;:::i;32520:258::-;;;;;;;;;;-1:-1:-1;32520:258:0;;;;;:::i;:::-;;:::i;46787:390::-;;;;;;;;;;-1:-1:-1;46787:390:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;41965:100::-;;;;;;;;;;-1:-1:-1;41965:100:0;;;;;:::i;:::-;;:::i;38632:91::-;;;;;;;;;;-1:-1:-1;38632:91:0;;;;-1:-1:-1;;;;;38632:91:0;;;30542:172;;;;;;;;;;-1:-1:-1;30542:172:0;;;;;:::i;:::-;;:::i;39046:23::-;;;;;;;;;;;;;;;;39324:47;;;;;;;;;;;;;;;;39734:44;;;;;;;;;;-1:-1:-1;39734:44:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;39734:44:0;;;41054:97;;;;;;;;;;-1:-1:-1;41054:97:0;;;;;:::i;:::-;;:::i;41868:89::-;;;;;;;;;;-1:-1:-1;41868:89:0;;;;;:::i;:::-;;:::i;38538:87::-;;;;;;;;;;-1:-1:-1;38538:87:0;;;;-1:-1:-1;;;;;38538:87:0;;;39016:23;;;;;;;;;;;;;;;;27357:177;;;;;;;;;;-1:-1:-1;27357:177:0;;;;;:::i;:::-;;:::i;41492:83::-;;;;;;;;;;-1:-1:-1;41492:83:0;;;;;:::i;:::-;;:::i;28976:97::-;;;;;;;;;;;;;:::i;27074:221::-;;;;;;;;;;-1:-1:-1;27074:221:0;;;;;:::i;:::-;;:::i;40661:285::-;;;;;;;;;;-1:-1:-1;40661:285:0;;;;;:::i;:::-;;:::i;37699:148::-;;;;;;;;;;;;;:::i;39432:47::-;;;;;;;;;;;;;;;;37476:87;;;;;;;;;;-1:-1:-1;37522:7:0;37549:6;-1:-1:-1;;;;;37549:6:0;37476:87;;43096:2487;;;;;;:::i;:::-;;:::i;38951:23::-;;;;;;;;;;;;;;;;27770:104;;;;;;;;;;;;;:::i;39488:28::-;;;;;;;;;;;;;;;;31539:295;;;;;;;;;;-1:-1:-1;31539:295:0;;;;;:::i;:::-;;:::i;38442:89::-;;;;;;;;;;-1:-1:-1;38442:89:0;;;;-1:-1:-1;;;;;38442:89:0;;;39645:28;;;;;;;;;;-1:-1:-1;39645:28:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;39214:47::-;;;;;;;;;;;;;;;;42181:110;;;;;;;;;;-1:-1:-1;42181:110:0;;;;;:::i;:::-;;:::i;37192:21::-;;;;;;;;;;-1:-1:-1;37192:21:0;;;;-1:-1:-1;;;;;37192:21:0;;;41583:83;;;;;;;;;;-1:-1:-1;41583:83:0;;;;;:::i;:::-;;:::i;39563:37::-;;;;;;;;;;;;;:::i;40003:421::-;;;;;;;;;;-1:-1:-1;40003:421:0;;;;;:::i;:::-;;:::i;41674:93::-;;;;;;;;;;-1:-1:-1;41674:93:0;;;;;:::i;:::-;;:::i;39607:28::-;;;;;;;;;;-1:-1:-1;39607:28:0;;;;;;;;39270:47;;;;;;;;;;;;;;;;39126:38;;;;;;;;;;-1:-1:-1;39126:38:0;;;;;;;;;;;41256:113;;;;;;;;;;-1:-1:-1;41256:113:0;;;;;:::i;:::-;;:::i;38918:26::-;;;;;;;;;;;;;;;;42964:124;;;;;;;;;;-1:-1:-1;42964:124:0;;;;;:::i;:::-;;:::i;40547:106::-;;;;;;;;;;-1:-1:-1;40547:106:0;;;;;:::i;:::-;;:::i;29081:131::-;;;;;;;;;;;;;:::i;41377:107::-;;;;;;;;;;-1:-1:-1;41377:107:0;;;;;:::i;:::-;;:::i;39525:31::-;;;;;;;;;;;;;;;;31905:164;;;;;;;;;;-1:-1:-1;31905:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;32026:25:0;;;32002:4;32026:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;31905:164;42073:100;;;;;;;;;;-1:-1:-1;42073:100:0;;;;;:::i;:::-;;:::i;42713:101::-;;;;;;;;;;-1:-1:-1;42713:101:0;;;;;:::i;:::-;;:::i;38981:28::-;;;;;;;;;;;;;;;;37855:244;;;;;;;;;;-1:-1:-1;37855:244:0;;;;;:::i;:::-;;:::i;41159:89::-;;;;;;;;;;-1:-1:-1;41159:89:0;;;;;:::i;:::-;;:::i;39078:41::-;;;;;;;;;;-1:-1:-1;39078:41:0;;;;;;;;42409:106;;;;;;;;;;-1:-1:-1;42409:106:0;;;;;:::i;:::-;;:::i;41775:85::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;;;;;;;;;41836:7:::1;:16:::0;41775:85::o;27601:100::-;27655:13;27688:5;27681:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27601:100;:::o;31246:221::-;31322:7;31350:16;31358:7;31350;:16::i;:::-;31342:73;;;;-1:-1:-1;;;31342:73:0;;15644:2:1;31342:73:0;;;15626:21:1;15683:2;15663:18;;;15656:30;15722:34;15702:18;;;15695:62;-1:-1:-1;;;15773:18:1;;;15766:42;15825:19;;31342:73:0;15442:408:1;31342:73:0;-1:-1:-1;31435:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;31435:24:0;;31246:221::o;30776:404::-;30857:13;30873:23;30888:7;30873:14;:23::i;:::-;30857:39;;30921:5;-1:-1:-1;;;;;30915:11:0;:2;-1:-1:-1;;;;;30915:11:0;;;30907:57;;;;-1:-1:-1;;;30907:57:0;;17244:2:1;30907:57:0;;;17226:21:1;17283:2;17263:18;;;17256:30;17322:34;17302:18;;;17295:62;-1:-1:-1;;;17373:18:1;;;17366:31;17414:19;;30907:57:0;17042:397:1;30907:57:0;191:10;-1:-1:-1;;;;;30985:21:0;;;;:69;;-1:-1:-1;31010:44:0;31034:5;191:10;31905:164;:::i;31010:44::-;30977:161;;;;-1:-1:-1;;;30977:161:0;;13642:2:1;30977:161:0;;;13624:21:1;13681:2;13661:18;;;13654:30;13720:34;13700:18;;;13693:62;13791:26;13771:18;;;13764:54;13835:19;;30977:161:0;13440:420:1;30977:161:0;31151:21;31160:2;31164:7;31151:8;:21::i;:::-;30846:334;30776:404;;:::o;47185:381::-;47239:7;47260:13;47290:3;47277:9;;:16;;:256;;47348:3;47336:9;;:15;:35;;;;;47368:3;47355:9;;:16;;47336:35;:197;;47426:3;47414:9;;:15;:35;;;;;47446:3;47433:9;;:16;;47414:35;:119;;47504:3;47492:9;;:15;:41;;47523:10;;47277:256;;47492:41;47510:10;;47277:256;;47414:119;47452:10;;47277:256;;47336:197;47374:10;;47277:256;;;47296:10;;47277:256;47260:273;47185:381;-1:-1:-1;;47185:381:0:o;40954:92::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41020:9:::1;:18:::0;40954:92::o;42529:176::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;42610:6:::1;42606:91;42640:1;42622:8;:15;:19;42606:91;;;42686:8;42695:1;42686:11;;;;;;;;:::i;:::-;;;;;;;42661:9;:22;42671:8;42680:1;42671:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;42661:22:0::1;-1:-1:-1::0;;;;;42661:22:0::1;;;;;;;;;;;;;:36;;;;;-1:-1:-1::0;;;;;42661:36:0::1;;;;;-1:-1:-1::0;;;;;42661:36:0::1;;;;;;42643:3;;;;;:::i;:::-;;;;42606:91;;;;42529:176:::0;:::o;42299:102::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;42374:10:::1;:19:::0;;-1:-1:-1;;;;;;42374:19:0::1;-1:-1:-1::0;;;;;42374:19:0;;;::::1;::::0;;;::::1;::::0;;42299:102::o;30254:211::-;30315:7;30436:21;:12;:19;:21::i;:::-;30429:28;;30254:211;:::o;32136:313::-;32297:41;191:10;32316:12;32330:7;32297:18;:41::i;:::-;32289:103;;;;-1:-1:-1;;;32289:103:0;;;;;;;:::i;:::-;32413:28;32423:4;32429:2;32433:7;32413:9;:28::i;42822:134::-;42896:7;42922:17;42940:7;42922:26;;;;;;:::i;:::-;;;;;;;;;;;;;;42915:33;;42822:134;;;:::o;45591:1188::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;45697:9:::1;;45680:13;:11;:13::i;:::-;:26;;45672:54;;;::::0;-1:-1:-1;;;45672:54:0;;12530:2:1;45672:54:0::1;::::0;::::1;12512:21:1::0;12569:2;12549:18;;;12542:30;-1:-1:-1;;;12588:18:1;;;12581:45;12643:18;;45672:54:0::1;12328:339:1::0;45672:54:0::1;45743:9;45739:1033;45762:10;:17;45758:1;:21;45739:1033;;;45800:26;45829:126;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;45829:126:0::1;;::::0;::::1;;;;45901:10;45912:1;45901:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;45829:126:0::1;::::0;;45938:1:::1;45829:126:::0;;::::1;::::0;;;45972:10:::1;:27:::0;;::::1;::::0;::::1;::::0;;;;;;;;45800:155;;-1:-1:-1;45800:155:0;;45972:27:::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;45972:27:0::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;45972:27:0::1;-1:-1:-1::0;;;;;45972:27:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;46041:10:::1;:17:::0;-1:-1:-1;;46041:21:0::1;::::0;::::1;:::i;:::-;46016:46;;46109:14;46077:10;46088:14;46077:26;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;:46;;;;46138:21;46162:9;:7;:9::i;:::-;46138:33;;46186:26;46239:7;46248:25;:14;:23;:25::i;:::-;46276:13;46222:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;46186:105;;46344:12;46306:10;46317:14;46306:26;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;:50;;;;;;;;;;;;:::i;:::-;;46405:14;46371:17;46389:12;46371:31;;;;;;:::i;:::-;;;;;;;;;;;;;:48;;;;46434:36;46440:10;46451:1;46440:13;;;;;;;;:::i;:::-;;;;;;;46455:14;46434:5;:36::i;:::-;46487:20;:35;46508:10;46519:1;46508:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;46487:35:0::1;-1:-1:-1::0;;;;;46487:35:0::1;;;;;;;;;;;;;:37;;;;;;;;;:::i;:::-;;;;;;46539:14;46556:15;:30;46572:10;46583:1;46572:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;46556:30:0::1;-1:-1:-1::0;;;;;46556:30:0::1;;;;;;;;;;;;:37;;;;46539:54;;46608:15;:30;46624:10;46635:1;46624:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;46608:30:0::1;::::0;;;;::::1;::::0;;;;;;-1:-1:-1;46608:30:0;;;:51;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;46695:13;;46728:6;;46674:20:::1;::::0;46695:10;;46706:1;;46695:13;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;46674:35:0::1;-1:-1:-1::0;;;;;46674:35:0::1;;;;;;;;;;;;:51;46710:14;46674:51;;;;;;;;;;;:60;;;;46749:9;;:11;;;;;;;;;:::i;:::-;;;;;;45785:987;;;;;45781:3;;;;;:::i;:::-;;;;45739:1033;;30016:162:::0;-1:-1:-1;;;;;30140:20:0;;30113:7;30140:20;;;:13;:20;;;;;:30;;30164:5;30140:23;:30::i;:::-;30133:37;30016:162;-1:-1:-1;;;30016:162:0:o;40432:107::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;40480:51:::1;::::0;40488:10:::1;::::0;40509:21:::1;40480:51:::0;::::1;;;::::0;::::1;::::0;;;40509:21;40488:10;40480:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;40432:107::o:0;32520:258::-;32632:41;191:10;32651:12;95:115;32632:41;32624:103;;;;-1:-1:-1;;;32624:103:0;;;;;;;:::i;:::-;32738:32;32752:4;32758:2;32762:7;32738:13;:32::i;46787:390::-;46874:16;46908:23;46934:17;46944:6;46934:9;:17::i;:::-;46908:43;;46962:25;47004:15;46990:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46990:30:0;;46962:58;;47036:9;47031:113;47051:15;47047:1;:19;47031:113;;;47102:30;47122:6;47130:1;47102:19;:30::i;:::-;47088:8;47097:1;47088:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;47068:3;;;;:::i;:::-;;;;47031:113;;;-1:-1:-1;47161:8:0;46787:390;-1:-1:-1;;;46787:390:0:o;41965:100::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;42039:9:::1;:18:::0;;-1:-1:-1;;;;;;42039:18:0::1;-1:-1:-1::0;;;;;42039:18:0;;;::::1;::::0;;;::::1;::::0;;41965:100::o;30542:172::-;30617:7;;30659:22;:12;30675:5;30659:15;:22::i;41054:97::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41124:19:::1;41136:6;41124:11;:19::i;41868:89::-:0;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41931:9:::1;:18:::0;41868:89::o;27357:177::-;27429:7;27456:70;27473:7;27456:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;41492:83::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41552:6:::1;:15:::0;41492:83::o;28976:97::-;29024:13;29057:8;29050:15;;;;;:::i;27074:221::-;27146:7;-1:-1:-1;;;;;27174:19:0;;27166:74;;;;-1:-1:-1;;;27166:74:0;;14067:2:1;27166:74:0;;;14049:21:1;14106:2;14086:18;;;14079:30;14145:34;14125:18;;;14118:62;-1:-1:-1;;;14196:18:1;;;14189:40;14246:19;;27166:74:0;13865:406:1;27166:74:0;-1:-1:-1;;;;;27258:20:0;;;;;;:13;:20;;;;;:29;;:27;:29::i;40661:285::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;40825:10:::1;:20:::0;;;;40856:10:::1;:20:::0;;;;40887:10:::1;:20:::0;40918:10:::1;:20:::0;40661:285::o;37699:148::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;37806:1:::1;37790:6:::0;;37769:40:::1;::::0;-1:-1:-1;;;;;37790:6:0;;::::1;::::0;37769:40:::1;::::0;37806:1;;37769:40:::1;37837:1;37820:19:::0;;-1:-1:-1;;;;;;37820:19:0::1;::::0;;37699:148::o;43096:2487::-;43165:9;;;;43164:10;43156:35;;;;-1:-1:-1;;;43156:35:0;;10009:2:1;43156:35:0;;;9991:21:1;10048:2;10028:18;;;10021:30;-1:-1:-1;;;10067:18:1;;;10060:42;10119:18;;43156:35:0;9807:336:1;43156:35:0;43240:9;;43210:26;43228:7;43210:13;:11;:13::i;:::-;:17;;:26::i;:::-;:39;;43202:67;;;;-1:-1:-1;;;43202:67:0;;12530:2:1;43202:67:0;;;12512:21:1;12569:2;12549:18;;;12542:30;-1:-1:-1;;;12588:18:1;;;12581:45;12643:18;;43202:67:0;12328:339:1;43202:67:0;43285:9;;43298:3;43285:16;43282:106;;;43318:25;43337:5;43318:18;:25::i;:::-;43358:18;43371:4;43358:12;:18::i;:::-;43403:9;;43416:4;43403:17;43400:67;;;43437:18;43450:4;43437:12;:18::i;:::-;43482:15;;;;;;;43479:159;;;43548:10;43523:21;;;;:9;:21;;;;;;-1:-1:-1;;;;;43523:21:0;:35;43515:68;;;;-1:-1:-1;;;43515:68:0;;11063:2:1;43515:68:0;;;11045:21:1;11102:2;11082:18;;;11075:30;-1:-1:-1;;;11121:18:1;;;11114:50;11181:18;;43515:68:0;10861:344:1;43515:68:0;43615:10;43605:21;;;;:9;:21;;;;;43598:28;;-1:-1:-1;;;;;;43598:28:0;;;43479:159;43688:18;;43650:22;;43688:18;;;;;43685:382;;;43743:55;43771:12;;:26;;43790:7;43771:26;;;43786:1;43771:26;43743:23;:21;:23::i;:::-;:27;;:55::i;:::-;43730:9;:68;43722:77;;;;;;43831:55;43859:12;;:26;;43878:7;43859:26;;43831:55;43814:72;;43685:382;;;43938:42;43953:12;;:26;;43972:7;43953:26;;;43968:1;43953:26;43938:10;;;:14;:42::i;:::-;43925:9;:55;43917:64;;;;;;44013:42;44028:12;;:26;;44047:7;44028:26;;44013:42;43996:59;;43685:382;44084:21;;;;44081:470;;;44121:9;;:34;;-1:-1:-1;;;;;44121:9:0;;;;:34;;;;;44140:14;;44121:9;:34;:9;:34;44140:14;44121:9;:34;;;;;;;;;;;;;;;;;;;;;44081:470;;;44186:12;;44227:9;;-1:-1:-1;;;;;44186:12:0;;;;:61;;44208:38;;44242:3;;44208:29;;:14;;:18;:29::i;:::-;:33;;:38::i;:::-;44186:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44262:10:0;;44301:7;;-1:-1:-1;;;;;44262:10:0;;;;:57;;44282:36;;44314:3;;44282:27;;:14;;:18;:27::i;:36::-;44262:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44334:14:0;;44377:11;;-1:-1:-1;;;;;44334:14:0;;;;:65;;44358:40;;44394:3;;44358:31;;:14;;:18;:31::i;:40::-;44334:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44414:9:0;;44452:6;;-1:-1:-1;;;;;44414:9:0;;;;:55;;44433:35;;44464:3;;44433:26;;:14;;:18;:26::i;:35::-;44414:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44484:9:0;;44522:6;;-1:-1:-1;;;;;44484:9:0;;;;:55;;44503:35;;44534:3;;44503:26;;:14;;:18;:26::i;:35::-;44484:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44081:470;44575:9;44571:1005;44594:7;44590:1;:11;44571:1005;;;44651:123;;;;;;;;;;;;;;;-1:-1:-1;;;44651:123:0;;;;;;44723:10;44651:123;;;;;;;;44622:26;44651:123;;;;;;44791:10;:27;;;;;;;;;;;;;;44651:123;;;;44791:27;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;44791:27:0;;;;;;;;;;-1:-1:-1;;;;;;44791:27:0;-1:-1:-1;;;;;44791:27:0;;;;;;;;;;;;;;;;;;;;44860:10;:17;-1:-1:-1;;44860:21:0;;;:::i;:::-;44835:46;;44928:14;44896:10;44907:14;44896:26;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;:46;;;;44957:21;44981:9;:7;:9::i;:::-;44957:33;;45005:26;45058:7;45067:25;:14;:23;:25::i;:::-;45095:13;45041:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;45005:105;;45163:12;45125:10;45136:14;45125:26;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;:50;;;;;;;;;;;;:::i;:::-;;45224:14;45190:17;45208:12;45190:31;;;;;;:::i;:::-;;;;;;;;;;;;;;:48;45253:33;45259:10;45271:14;45253:5;:33::i;:::-;45324:10;45303:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;45385:10:0;45352:14;45369:27;;;:15;:27;;;;;;;;:34;;45418:48;;;;;;;;;;;;;;;;45481:32;;;:20;:32;;;;;:48;;;;;;;;:57;;;45553:9;:11;;;;;;:::i;:::-;;;;;;44607:969;;;;;44603:3;;;;;:::i;:::-;;;;44571:1005;;27770:104;27826:13;27859:7;27852:14;;;;;:::i;31539:295::-;-1:-1:-1;;;;;31642:24:0;;191:10;31642:24;;31634:62;;;;-1:-1:-1;;;31634:62:0;;11817:2:1;31634:62:0;;;11799:21:1;11856:2;11836:18;;;11829:30;11895:27;11875:18;;;11868:55;11940:18;;31634:62:0;11615:349:1;31634:62:0;191:10;31709:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;31709:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;31709:53:0;;;;;;;;;;31778:48;;8327:41:1;;;31709:42:0;;191:10;31778:48;;8300:18:1;31778:48:0;;;;;;;31539:295;;:::o;39645:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;39645:28:0;;;;;;;;;;;-1:-1:-1;;;;;39645:28:0;;;-1:-1:-1;39645:28:0;:::o;42181:110::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;42260:14:::1;:23:::0;;-1:-1:-1;;;;;;42260:23:0::1;-1:-1:-1::0;;;;;42260:23:0;;;::::1;::::0;;;::::1;::::0;;42181:110::o;41583:83::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41643:6:::1;:15:::0;41583:83::o;39563:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;40003:421::-;40121:13;40170:16;40178:7;40170;:16::i;:::-;40152:105;;;;-1:-1:-1;;;40152:105:0;;16828:2:1;40152:105:0;;;16810:21:1;16867:2;16847:18;;;16840:30;16906:34;16886:18;;;16879:62;-1:-1:-1;;;16957:18:1;;;16950:45;17012:19;;40152:105:0;16626:411:1;40152:105:0;40278:28;40309:9;:7;:9::i;:::-;40278:40;;40367:1;40342:14;40336:28;:32;:80;;;;;;;;;;;;;;;;41674:93;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41739:11:::1;:20:::0;41674:93::o;41256:113::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41331:21:::1;:30:::0;;-1:-1:-1;;41331:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41256:113::o;42964:124::-;-1:-1:-1;;;;;43061:19:0;;;;;;:11;:19;;;;;;;;;43054:26;;;;;;;;;;;;;;;;;43025:16;;43054:26;;;43061:19;43054:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42964:124;;;:::o;40547:106::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;40623:22;;::::1;::::0;:13:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;29081:131::-:0;29139:13;29172:32;:21;:12;:19;:21::i;:::-;:30;:32::i;41377:107::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41449:18:::1;:27:::0;;;::::1;;;;-1:-1:-1::0;;41449:27:0;;::::1;::::0;;;::::1;::::0;;41377:107::o;42073:100::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;42147:9:::1;:18:::0;;-1:-1:-1;;;;;;42147:18:0::1;-1:-1:-1::0;;;;;42147:18:0;;;::::1;::::0;;;::::1;::::0;;42073:100::o;42713:101::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;42782:15:::1;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;42782:24:0;;::::1;::::0;;;::::1;::::0;;42713:101::o;37855:244::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37944:22:0;::::1;37936:73;;;::::0;-1:-1:-1;;;37936:73:0;;9602:2:1;37936:73:0::1;::::0;::::1;9584:21:1::0;9641:2;9621:18;;;9614:30;9680:34;9660:18;;;9653:62;-1:-1:-1;;;9731:18:1;;;9724:36;9777:19;;37936:73:0::1;9400:402:1::0;37936:73:0::1;38046:6;::::0;;38025:38:::1;::::0;-1:-1:-1;;;;;38025:38:0;;::::1;::::0;38046:6;::::1;::::0;38025:38:::1;::::0;::::1;38074:6;:17:::0;;-1:-1:-1;;;;;;38074:17:0::1;-1:-1:-1::0;;;;;38074:17:0;;;::::1;::::0;;;::::1;::::0;;37855:244::o;41159:89::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;41222:9:::1;:18:::0;;-1:-1:-1;;41222:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41159:89::o;42409:106::-;37522:7;37549:6;-1:-1:-1;;;;;37549:6:0;191:10;37611:23;37603:68;;;;-1:-1:-1;;;37603:68:0;;;;;;;:::i;:::-;42486:12:::1;:21:::0;;-1:-1:-1;;;;;;42486:21:0::1;-1:-1:-1::0;;;;;42486:21:0;;;::::1;::::0;;;::::1;::::0;;42409:106::o;32924:127::-;32989:4;33013:30;:12;33035:7;33013:21;:30::i;36866:183::-;36932:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;36932:29:0;-1:-1:-1;;;;;36932:29:0;;;;;;;;:24;;36986:23;36932:24;36986:14;:23::i;:::-;-1:-1:-1;;;;;36977:46:0;;;;;;;;;;;36866:183;;:::o;21082:123::-;21151:7;21178:19;21186:3;17744:19;;17661:110;33061:355;33154:4;33179:16;33187:7;33179;:16::i;:::-;33171:73;;;;-1:-1:-1;;;33171:73:0;;12874:2:1;33171:73:0;;;12856:21:1;12913:2;12893:18;;;12886:30;12952:34;12932:18;;;12925:62;-1:-1:-1;;;13003:18:1;;;12996:42;13055:19;;33171:73:0;12672:408:1;33171:73:0;33255:13;33271:23;33286:7;33271:14;:23::i;:::-;33255:39;;33324:5;-1:-1:-1;;;;;33313:16:0;:7;-1:-1:-1;;;;;33313:16:0;;:51;;;;33357:7;-1:-1:-1;;;;;33333:31:0;:20;33345:7;33333:11;:20::i;:::-;-1:-1:-1;;;;;33333:31:0;;33313:51;:94;;;-1:-1:-1;;;;;;32026:25:0;;;32002:4;32026:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;33368:39;33305:103;33061:355;-1:-1:-1;;;;33061:355:0:o;34672:684::-;34797:4;-1:-1:-1;;;;;34770:31:0;:23;34785:7;34770:14;:23::i;:::-;-1:-1:-1;;;;;34770:31:0;;34762:85;;;;-1:-1:-1;;;34762:85:0;;16418:2:1;34762:85:0;;;16400:21:1;16457:2;16437:18;;;16430:30;16496:34;16476:18;;;16469:62;-1:-1:-1;;;16547:18:1;;;16540:39;16596:19;;34762:85:0;16216:405:1;34762:85:0;-1:-1:-1;;;;;34884:16:0;;34876:65;;;;-1:-1:-1;;;34876:65:0;;11412:2:1;34876:65:0;;;11394:21:1;11451:2;11431:18;;;11424:30;11490:34;11470:18;;;11463:62;-1:-1:-1;;;11541:18:1;;;11534:34;11585:19;;34876:65:0;11210:400:1;34876:65:0;35058:29;35075:1;35079:7;35058:8;:29::i;:::-;-1:-1:-1;;;;;35100:19:0;;;;;;:13;:19;;;;;:35;;35127:7;35100:26;:35::i;:::-;-1:-1:-1;;;;;;35146:17:0;;;;;;:13;:17;;;;;:30;;35168:7;35146:21;:30::i;:::-;;35189;35205:4;35211:7;35189:15;:30::i;:::-;35230:23;35241:2;35245:7;35230:10;:23::i;:::-;35274:29;:12;35291:7;35300:2;35274:16;:29::i;:::-;;35340:7;35336:2;-1:-1:-1;;;;;35321:27:0;35330:4;-1:-1:-1;;;;;35321:27:0;;;;;;;;;;;34672:684;;;:::o;22669:723::-;22725:13;22946:10;22942:53;;-1:-1:-1;;22973:10:0;;;;;;;;;;;;-1:-1:-1;;;22973:10:0;;;;;22669:723::o;22942:53::-;23020:5;23005:12;23061:78;23068:9;;23061:78;;23094:8;;;;:::i;:::-;;-1:-1:-1;23117:10:0;;-1:-1:-1;23125:2:0;23117:10;;:::i;:::-;;;23061:78;;;23149:19;23181:6;23171:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23171:17:0;;23149:39;;23199:154;23206:10;;23199:154;;23233:11;23243:1;23233:11;;:::i;:::-;;-1:-1:-1;23302:10:0;23310:2;23302:5;:10;:::i;:::-;23289:24;;:2;:24;:::i;:::-;23276:39;;23259:6;23266;23259:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;23259:56:0;;;;;;;;-1:-1:-1;23330:11:0;23339:2;23330:11;;:::i;:::-;;;23199:154;;33534:529;-1:-1:-1;;;;;33614:16:0;;33606:61;;;;-1:-1:-1;;;33606:61:0;;14881:2:1;33606:61:0;;;14863:21:1;;;14900:18;;;14893:30;14959:34;14939:18;;;14932:62;15011:18;;33606:61:0;14679:356:1;33606:61:0;33687:16;33695:7;33687;:16::i;:::-;33686:17;33678:58;;;;-1:-1:-1;;;33678:58:0;;10350:2:1;33678:58:0;;;10332:21:1;10389:2;10369:18;;;10362:30;10428;10408:18;;;10401:58;10476:18;;33678:58:0;10148:352:1;33678:58:0;33775:9;:16;;33749:23;;;;:14;:23;;;;;;;;:42;;;33802:23;;;;;;;;;;;;;-1:-1:-1;;;;;33896:17:0;;;;:13;:17;;;;:30;;33749:23;33896:21;:30::i;:::-;;33939:23;33950:2;33954:7;33939:10;:23::i;:::-;33975:29;:12;33992:7;34001:2;33975:16;:29::i;:::-;-1:-1:-1;34022:33:0;;34047:7;;-1:-1:-1;;;;;34022:33:0;;;34039:1;;34022:33;;34039:1;;34022:33;33534:529;;:::o;14165:137::-;14236:7;14271:22;14275:3;14287:5;14271:3;:22::i;21215:236::-;21295:7;;;;21355:22;21359:3;21371:5;21355:3;:22::i;:::-;21324:53;;;;-1:-1:-1;21215:236:0;-1:-1:-1;;;;;21215:236:0:o;35589:100::-;35662:19;;;;:8;;:19;;;;;:::i;22223:213::-;22330:7;22381:44;22386:3;22406;22412:12;22381:4;:44::i;3590:179::-;3648:7;;3680:5;3684:1;3680;:5;:::i;:::-;3668:17;;3709:1;3704;:6;;3696:46;;;;-1:-1:-1;;;3696:46:0;;10707:2:1;3696:46:0;;;10689:21:1;10746:2;10726:18;;;10719:30;10785:29;10765:18;;;10758:57;10832:18;;3696:46:0;10505:351:1;3943:220:0;4001:7;4025:6;4021:20;;-1:-1:-1;4040:1:0;4033:8;;4021:20;4052:9;4064:5;4068:1;4064;:5;:::i;:::-;4052:17;-1:-1:-1;4097:1:0;4088:5;4092:1;4052:17;4088:5;:::i;:::-;:10;4080:56;;;;-1:-1:-1;;;4080:56:0;;15242:2:1;4080:56:0;;;15224:21:1;15281:2;15261:18;;;15254:30;15320:34;15300:18;;;15293:62;-1:-1:-1;;;15371:18:1;;;15364:31;15412:19;;4080:56:0;15040:397:1;4171:153:0;4229:7;4261:1;4257;:5;4249:44;;;;-1:-1:-1;;;4249:44:0;;13287:2:1;4249:44:0;;;13269:21:1;13326:2;13306:18;;;13299:30;13365:28;13345:18;;;13338:56;13411:18;;4249:44:0;13085:350:1;4249:44:0;4311:5;4315:1;4311;:5;:::i;20843:151::-;20927:4;17536:17;;;:12;;;:17;;;;;;:22;;20951:35;17441:125;13588:137;13658:4;13682:35;13690:3;13710:5;13682:7;:35::i;13281:131::-;13348:4;13372:32;13377:3;13397:5;13372:4;:32::i;29435:499::-;29513:18;29534:26;;;:16;:26;;;;;;;;;-1:-1:-1;;;;;29596:18:0;;;;:11;:18;;;;;:25;29534:26;;29513:18;29596:32;;29626:1;29596:29;:32::i;:::-;-1:-1:-1;;;;;29659:18:0;;29639:17;29659:18;;;:11;:18;;;;;:34;;29571:57;;-1:-1:-1;29639:17:0;;29571:57;;29659:34;;;;;;:::i;:::-;;;;;;;;;29639:54;;29739:9;29706:11;:18;29718:5;-1:-1:-1;;;;;29706:18:0;-1:-1:-1;;;;;29706:18:0;;;;;;;;;;;;29725:10;29706:30;;;;;;;;:::i;:::-;;;;;;;;;;;;:42;;;;-1:-1:-1;;;;;29759:18:0;;;;:11;:18;;;;;;:34;;29778:14;;29759:34;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;-1:-1:-1;;;;;29810:18:0;;;;:11;:18;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;29810:24:0;;;;;;;;;;;;29845:26;;;:16;:26;;;;;;;:30;;;29886:27;;;;;;:40;-1:-1:-1;;29435:499:0:o;29220:207::-;-1:-1:-1;;;;;29308:16:0;;;29291:14;29308:16;;;:11;:16;;;;;;;;:23;;29342:31;;;;;;;;;;;;;;;;29384:26;;;:16;:26;;;;;:35;29220:207::o;20266:185::-;20355:4;20379:64;20384:3;20404;-1:-1:-1;;;;;20418:23:0;;20379:4;:64::i;10877:204::-;10972:18;;10944:7;;10972:26;-1:-1:-1;10964:73:0;;;;-1:-1:-1;;;10964:73:0;;9199:2:1;10964:73:0;;;9181:21:1;9238:2;9218:18;;;9211:30;9277:34;9257:18;;;9250:62;-1:-1:-1;;;9328:18:1;;;9321:32;9370:19;;10964:73:0;8997:398:1;10964:73:0;11055:3;:11;;11067:5;11055:18;;;;;;;;:::i;:::-;;;;;;;;;11048:25;;10877:204;;;;:::o;18126:279::-;18230:19;;18193:7;;;;18230:27;-1:-1:-1;18222:74:0;;;;-1:-1:-1;;;18222:74:0;;14478:2:1;18222:74:0;;;14460:21:1;14517:2;14497:18;;;14490:30;14556:34;14536:18;;;14529:62;-1:-1:-1;;;14607:18:1;;;14600:32;14649:19;;18222:74:0;14276:398:1;18222:74:0;18309:22;18334:3;:12;;18347:5;18334:19;;;;;;;;:::i;:::-;;;;;;;;;;;18309:44;;18372:5;:10;;;18384:5;:12;;;18364:33;;;;;18126:279;;;;;:::o;19623:319::-;19717:7;19756:17;;;:12;;;:17;;;;;;19807:12;19792:13;19784:36;;;;-1:-1:-1;;;19784:36:0;;;;;;;;:::i;:::-;-1:-1:-1;19874:3:0;19887:12;19898:1;19887:8;:12;:::i;:::-;19874:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;;19867:40;;;19623:319;;;;;:::o;9587:1026::-;9653:4;9792:19;;;:12;;;:19;;;;;;9828:15;;9824:782;;9900:21;9924:14;9937:1;9924:10;:14;:::i;:::-;9973:18;;9900:38;;-1:-1:-1;9953:17:0;;9973:22;;9994:1;;9973:22;:::i;:::-;9953:42;;10012:17;10032:3;:11;;10044:9;10032:22;;;;;;;;:::i;:::-;;;;;;;;;10012:42;;10178:9;10149:3;:11;;10161:13;10149:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;10281:17;:13;10297:1;10281:17;:::i;:::-;10255:23;;;;:12;;;:23;;;;;:43;10407:17;;10255:3;;10407:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10502:3;:12;;:19;10515:5;10502:19;;;;;;;;;;;10495:26;;;10545:4;10538:11;;;;;;;;9824:782;10589:5;10582:12;;;;;9165:414;9228:4;17536:17;;;:12;;;:17;;;;;;9245:327;;-1:-1:-1;9288:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;9471:18;;9449:19;;;:12;;;:19;;;;;;:40;;;;9504:11;;9245:327;-1:-1:-1;9555:5:0;9548:12;;3777:158;3835:7;3868:1;3863;:6;;3855:49;;;;-1:-1:-1;;;3855:49:0;;12171:2:1;3855:49:0;;;12153:21:1;12210:2;12190:18;;;12183:30;12249:32;12229:18;;;12222:60;12299:18;;3855:49:0;11969:354:1;3855:49:0;3922:5;3926:1;3922;:5;:::i;14941:692::-;15017:4;15152:17;;;:12;;;:17;;;;;;15186:13;15182:444;;-1:-1:-1;;15271:38:0;;;;;;;;;;;;;;;;;;15253:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;15468:19;;15448:17;;;:12;;;:17;;;;;;;:39;15502:11;;15182:444;15582:5;15546:3;15559:12;15570:1;15559:8;:12;:::i;:::-;15546:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;:41;;;;15609:5;15602:12;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:160:1;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:52;;;836:1;833;826:12;788:52;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;691:388;;;;;:::o;1084:456::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:52;;;1246:1;1243;1236:12;1198:52;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1084:456;;1476:7;;-1:-1:-1;;;1530:2:1;1515:18;;;;1502:32;;1084:456::o;1545:315::-;1610:6;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1726:9;1713:23;1745:31;1770:5;1745:31;:::i;:::-;1795:5;-1:-1:-1;1819:35:1;1850:2;1835:18;;1819:35;:::i;:::-;1809:45;;1545:315;;;;;:::o;1865:::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:52;;;2010:1;2007;2000:12;1962:52;2049:9;2036:23;2068:31;2093:5;2068:31;:::i;:::-;2118:5;2170:2;2155:18;;;;2142:32;;-1:-1:-1;;;1865:315:1:o;2185:1032::-;2269:6;2300:2;2343;2331:9;2322:7;2318:23;2314:32;2311:52;;;2359:1;2356;2349:12;2311:52;2399:9;2386:23;2428:18;2469:2;2461:6;2458:14;2455:34;;;2485:1;2482;2475:12;2455:34;2523:6;2512:9;2508:22;2498:32;;2568:7;2561:4;2557:2;2553:13;2549:27;2539:55;;2590:1;2587;2580:12;2539:55;2626:2;2613:16;2648:2;2644;2641:10;2638:36;;;2654:18;;:::i;:::-;2700:2;2697:1;2693:10;2683:20;;2723:28;2747:2;2743;2739:11;2723:28;:::i;:::-;2785:15;;;2816:12;;;;2848:11;;;2878;;;2874:20;;2871:33;-1:-1:-1;2868:53:1;;;2917:1;2914;2907:12;2868:53;2939:1;2930:10;;2949:238;2963:2;2960:1;2957:9;2949:238;;;3034:3;3021:17;3008:30;;3051:31;3076:5;3051:31;:::i;:::-;3095:18;;;2981:1;2974:9;;;;;3133:12;;;;3165;;2949:238;;;-1:-1:-1;3206:5:1;2185:1032;-1:-1:-1;;;;;;;;2185:1032:1:o;3222:180::-;3278:6;3331:2;3319:9;3310:7;3306:23;3302:32;3299:52;;;3347:1;3344;3337:12;3299:52;3370:26;3386:9;3370:26;:::i;3407:286::-;3465:6;3518:2;3506:9;3497:7;3493:23;3489:32;3486:52;;;3534:1;3531;3524:12;3486:52;3560:23;;-1:-1:-1;;;;;;3612:32:1;;3602:43;;3592:71;;3659:1;3656;3649:12;3698:764;3767:6;3798:2;3841;3829:9;3820:7;3816:23;3812:32;3809:52;;;3857:1;3854;3847:12;3809:52;3897:9;3884:23;3926:18;3967:2;3959:6;3956:14;3953:34;;;3983:1;3980;3973:12;3953:34;4021:6;4010:9;4006:22;3996:32;;4066:7;4059:4;4055:2;4051:13;4047:27;4037:55;;4088:1;4085;4078:12;4037:55;4124:2;4111:16;4146:2;4142;4139:10;4136:36;;;4152:18;;:::i;:::-;4194:53;4237:2;4218:13;;-1:-1:-1;;4214:27:1;4210:36;;4194:53;:::i;:::-;4181:66;;4270:2;4263:5;4256:17;4310:7;4305:2;4300;4296;4292:11;4288:20;4285:33;4282:53;;;4331:1;4328;4321:12;4282:53;4386:2;4381;4377;4373:11;4368:2;4361:5;4357:14;4344:45;4430:1;4409:14;;;4405:23;;;4398:34;;;;-1:-1:-1;4413:5:1;3698:764;-1:-1:-1;;;3698:764:1:o;4467:180::-;4526:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:52;;;4595:1;4592;4585:12;4547:52;-1:-1:-1;4618:23:1;;4467:180;-1:-1:-1;4467:180:1:o;4652:385::-;4738:6;4746;4754;4762;4815:3;4803:9;4794:7;4790:23;4786:33;4783:53;;;4832:1;4829;4822:12;4783:53;-1:-1:-1;;4855:23:1;;;4925:2;4910:18;;4897:32;;-1:-1:-1;4976:2:1;4961:18;;4948:32;;5027:2;5012:18;4999:32;;-1:-1:-1;4652:385:1;-1:-1:-1;4652:385:1:o;5042:258::-;5084:3;5122:5;5116:12;5149:6;5144:3;5137:19;5165:63;5221:6;5214:4;5209:3;5205:14;5198:4;5191:5;5187:16;5165:63;:::i;:::-;5282:2;5261:15;-1:-1:-1;;5257:29:1;5248:39;;;;5289:4;5244:50;;5042:258;-1:-1:-1;;5042:258:1:o;5305:276::-;5436:3;5474:6;5468:13;5490:53;5536:6;5531:3;5524:4;5516:6;5512:17;5490:53;:::i;:::-;5559:16;;;;;5305:276;-1:-1:-1;;5305:276:1:o;5586:1527::-;5810:3;5848:6;5842:13;5874:4;5887:51;5931:6;5926:3;5921:2;5913:6;5909:15;5887:51;:::i;:::-;6001:13;;5960:16;;;;6023:55;6001:13;5960:16;6045:15;;;6023:55;:::i;:::-;6167:13;;6100:20;;;6140:1;;6227;6249:18;;;;6302;;;;6329:93;;6407:4;6397:8;6393:19;6381:31;;6329:93;6470:2;6460:8;6457:16;6437:18;6434:40;6431:167;;;-1:-1:-1;;;6497:33:1;;6553:4;6550:1;6543:15;6583:4;6504:3;6571:17;6431:167;6614:18;6641:110;;;;6765:1;6760:328;;;;6607:481;;6641:110;-1:-1:-1;;6676:24:1;;6662:39;;6721:20;;;;-1:-1:-1;6641:110:1;;6760:328;18397:1;18390:14;;;18434:4;18421:18;;6855:1;6869:169;6883:8;6880:1;6877:15;6869:169;;;6965:14;;6950:13;;;6943:37;7008:16;;;;6900:10;;6869:169;;;6873:3;;7069:8;7062:5;7058:20;7051:27;;6607:481;-1:-1:-1;7104:3:1;;5586:1527;-1:-1:-1;;;;;;;;;;;5586:1527:1:o;7550:632::-;7721:2;7773:21;;;7843:13;;7746:18;;;7865:22;;;7692:4;;7721:2;7944:15;;;;7918:2;7903:18;;;7692:4;7987:169;8001:6;7998:1;7995:13;7987:169;;;8062:13;;8050:26;;8131:15;;;;8096:12;;;;8023:1;8016:9;7987:169;;;-1:-1:-1;8173:3:1;;7550:632;-1:-1:-1;;;;;;7550:632:1:o;8379:220::-;8528:2;8517:9;8510:21;8491:4;8548:45;8589:2;8578:9;8574:18;8566:6;8548:45;:::i;8604:388::-;8809:2;8798:9;8791:21;8772:4;8829:45;8870:2;8859:9;8855:18;8847:6;8829:45;:::i;:::-;-1:-1:-1;;;;;8910:32:1;;;;8905:2;8890:18;;8883:60;-1:-1:-1;8974:2:1;8959:18;8952:34;8821:53;8604:388;-1:-1:-1;8604:388:1:o;15855:356::-;16057:2;16039:21;;;16076:18;;;16069:30;16135:34;16130:2;16115:18;;16108:62;16202:2;16187:18;;15855:356::o;17444:413::-;17646:2;17628:21;;;17685:2;17665:18;;;17658:30;17724:34;17719:2;17704:18;;17697:62;-1:-1:-1;;;17790:2:1;17775:18;;17768:47;17847:3;17832:19;;17444:413::o;18044:275::-;18115:2;18109:9;18180:2;18161:13;;-1:-1:-1;;18157:27:1;18145:40;;18215:18;18200:34;;18236:22;;;18197:62;18194:88;;;18262:18;;:::i;:::-;18298:2;18291:22;18044:275;;-1:-1:-1;18044:275:1:o;18450:128::-;18490:3;18521:1;18517:6;18514:1;18511:13;18508:39;;;18527:18;;:::i;:::-;-1:-1:-1;18563:9:1;;18450:128::o;18583:120::-;18623:1;18649;18639:35;;18654:18;;:::i;:::-;-1:-1:-1;18688:9:1;;18583:120::o;18708:168::-;18748:7;18814:1;18810;18806:6;18802:14;18799:1;18796:21;18791:1;18784:9;18777:17;18773:45;18770:71;;;18821:18;;:::i;:::-;-1:-1:-1;18861:9:1;;18708:168::o;18881:125::-;18921:4;18949:1;18946;18943:8;18940:34;;;18954:18;;:::i;:::-;-1:-1:-1;18991:9:1;;18881:125::o;19011:258::-;19083:1;19093:113;19107:6;19104:1;19101:13;19093:113;;;19183:11;;;19177:18;19164:11;;;19157:39;19129:2;19122:10;19093:113;;;19224:6;19221:1;19218:13;19215:48;;;19259:1;19250:6;19245:3;19241:16;19234:27;19215:48;;19011:258;;;:::o;19274:380::-;19353:1;19349:12;;;;19396;;;19417:61;;19471:4;19463:6;19459:17;19449:27;;19417:61;19524:2;19516:6;19513:14;19493:18;19490:38;19487:161;;;19570:10;19565:3;19561:20;19558:1;19551:31;19605:4;19602:1;19595:15;19633:4;19630:1;19623:15;19487:161;;19274:380;;;:::o;19659:135::-;19698:3;-1:-1:-1;;19719:17:1;;19716:43;;;19739:18;;:::i;:::-;-1:-1:-1;19786:1:1;19775:13;;19659:135::o;19799:112::-;19831:1;19857;19847:35;;19862:18;;:::i;:::-;-1:-1:-1;19896:9:1;;19799:112::o;19916:127::-;19977:10;19972:3;19968:20;19965:1;19958:31;20008:4;20005:1;19998:15;20032:4;20029:1;20022:15;20048:127;20109:10;20104:3;20100:20;20097:1;20090:31;20140:4;20137:1;20130:15;20164:4;20161:1;20154:15;20180:127;20241:10;20236:3;20232:20;20229:1;20222:31;20272:4;20269:1;20262:15;20296:4;20293:1;20286:15;20312:127;20373:10;20368:3;20364:20;20361:1;20354:31;20404:4;20401:1;20394:15;20428:4;20425:1;20418:15;20444:127;20505:10;20500:3;20496:20;20493:1;20486:31;20536:4;20533:1;20526:15;20560:4;20557:1;20550:15;20576:131;-1:-1:-1;;;;;20651:31:1;;20641:42;;20631:70;;20697:1;20694;20687:12
Swarm Source
ipfs://5a589acddf0980a69eb87176f945cb7f1867199b381a2713bb10fe2dbfd10932
Loading...
Loading
Loading...
Loading
OVERVIEW
BlvckSnakes Dvrk Forest. Limited collection by Joao Bosco.Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.