Contract 0xBbD9786f178e2AEBb4b4329c41A821921ca05339 3

Contract Overview

Vending Machines NFT: VMN Token
Balance:
212.738503769089870908 AVAX

AVAX Value:
$3,565.50 (@ $16.76/AVAX)
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x6b82061ddfaf885cb90d99a7b12dd3b6721f1757f5439459ba94ab7f0a41493eSet Approval For...276960002023-03-20 19:33:009 hrs 20 mins ago0x930c10d9ed7c9ae889ba15d270d69ca785f942d4 IN  Vending Machines NFT: VMN Token0 AVAX0.0012227365 26.5
0xc8f424810669cc596e657e963fdb42c26d14f9f60c6bc982cd60ce0e3e69262dSet Approval For...276731372023-03-20 6:48:0622 hrs 4 mins ago0xa450e80878b3d2df241829b79543e019f05a2cba IN  Vending Machines NFT: VMN Token0 AVAX0.0012249625 26.5
0x5db67f0b57fc11830e7e181d6ab6a7b1feb0abcca505472104e2675ef671cf23Set Approval For...276691962023-03-20 4:34:001 day 19 mins ago0x1cda025b63260d18e51c84f81def58782af53e9f IN  Vending Machines NFT: VMN Token0 AVAX0.0012249625 26.5
0xbbb61aaf637cb84e9d9899f1ab8737e5ac6d175aa90116d430fdc799aeec6791Set Approval For...276464582023-03-19 15:50:251 day 13 hrs ago0xdb368b61ac7c285c81bb557fb0c46ea7a764fac3 IN  Vending Machines NFT: VMN Token0 AVAX0.001243479201 26.900577647
0x20d26c25dd50125029ccbb32fb80a7fc657ab39c33e145f41addfd48ec1dd816Set Approval For...276293582023-03-19 6:20:131 day 22 hrs ago0x7b25b25a3425ef44704a0ac96327a2b085b06ec9 IN  Vending Machines NFT: VMN Token0 AVAX0.001242611205 26.8818
0x30508c76a5fcf6c53b5c7602d2dfa7bbcb8dbc2006c935f38e75889675c89980Claim Mint Rewar...276133642023-03-18 21:18:352 days 7 hrs ago0xf6d40bac2f554cf9b8f8b701d06793d6c2d502fa IN  Vending Machines NFT: VMN Token0 AVAX0.004150832521 27.146835064
0xd3b0a2bd54cc01d71ee76fd29cf943e7cd12d2eb15c38002529ac94a6ff355d6Set Approval For...275743222023-03-17 23:37:233 days 5 hrs ago0xc51d05dda9945c36ca29e388e6cca784c831cd99 IN  Vending Machines NFT: VMN Token0 AVAX0.0012711875 27.5
0xd3f2a4f590c2690f8d0f8f20e64a8c4dcafbacb28478fcd57be67c78d2285768Set Approval For...275703852023-03-17 21:29:003 days 7 hrs ago0xb8615203a49ec631078691b1f5da28da0ca3b0b1 IN  Vending Machines NFT: VMN Token0 AVAX0.00124113567 26.898759685
0x4c5510456800f399a46352960d183cd5b0b3199f83c39ef51337a604ef7c93ceCreate Listing275168662023-03-16 15:06:504 days 13 hrs ago0x4786cbca835a4103552bae482c0348298c81836f IN  Vending Machines NFT: VMN Token0 AVAX0.0108524625 27.5
0x7788c55b95fe1c4c84059ea5b00cde56ef7b8c9423909743011e5536bd94dd26Create Listing275168002023-03-16 15:04:354 days 13 hrs ago0x4786cbca835a4103552bae482c0348298c81836f IN  Vending Machines NFT: VMN Token0 AVAX0.0107823925 27.5
0x1a3719775c2a24e9deaf5c9f182ae206c5e370d43008df463fca67ec216bedcdCreate Listing275167662023-03-16 15:03:264 days 13 hrs ago0x4786cbca835a4103552bae482c0348298c81836f IN  Vending Machines NFT: VMN Token0 AVAX0.0107123225 27.5
0xbc071b009fa1d865d4d8a2f5c29899b6d695c51567e048cfa77dca7a89674e46Create Listing275167422023-03-16 15:02:394 days 13 hrs ago0x4786cbca835a4103552bae482c0348298c81836f IN  Vending Machines NFT: VMN Token0 AVAX0.0106422525 27.5
0x62266b6c667fc6cd68f931e0a51608a87f56a2c650ec751740483253a8066f93Set Approval For...274033742023-03-13 22:56:297 days 5 hrs ago0x4050bdbef63a00415e67b2f691bd8ff52e4215bb IN  Vending Machines NFT: VMN Token0 AVAX0.001225850404 26.567486718
0x1319beb353fe14aea26c9a4a32100b929e26aa606928c05af66b3d69319f0176Claim Mint Rewar...273933122023-03-13 17:17:107 days 11 hrs ago0xa25ebc740218974d39fd24ba45c2a96329a30b88 IN  Vending Machines NFT: VMN Token0 AVAX0.125130127176 26.547026712
0xf1e3f131da032ef6a2ba8e3eae1b5a61735707707cb4702d6bebd80a4b19e4fbSet Approval For...273789702023-03-13 9:16:577 days 19 hrs ago0xd7f9196371a663d8a64df9b01501a3ae0cad08d4 IN  Vending Machines NFT: VMN Token0 AVAX0.0012711875 27.5
0x61f6535bf982ec453f82f46053def80699e41a7e9a4b9a5abdc20d09accb1745Mint272197772023-03-09 16:26:1511 days 12 hrs ago0x033afb990374dc12260ad362fab3d0a4885f3798 IN  Vending Machines NFT: VMN Token2 AVAX0.010162964525 27.425
0xa30c31d5149f8f4b945c7766ad20db372dccbe9c943d1b49feb2288975c48f76Mint272195982023-03-09 16:20:1811 days 12 hrs ago0x033afb990374dc12260ad362fab3d0a4885f3798 IN  Vending Machines NFT: VMN Token10 AVAX0.0209577105 26.5
0x7e9c33fd0e8306de3762ebbdf61f16f1a95d90d0a7da98e9fa7ba2f7cec3947cMint272195582023-03-09 16:18:5511 days 12 hrs ago0x033afb990374dc12260ad362fab3d0a4885f3798 IN  Vending Machines NFT: VMN Token2 AVAX0.0098201845 26.5
0x24bd09aacfa49a64f2f7c389e3594d2b68509cd24a71e26bccaababd9b0df374Set Approval For...271609262023-03-08 6:42:3612 days 22 hrs ago0x78f7655d27cccb86200223a1b7b46e0ba8baa5de IN  Vending Machines NFT: VMN Token0 AVAX0.0012227365 26.5
0xc00f4905a6845b4ee7d2c4db03929117e07c375e3b32121d4bd9f51051250a92Claim Mint Rewar...271508742023-03-08 0:45:4213 days 4 hrs ago0x074afbac79ab82bd11b69037b8241dc5d292bce6 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0x3a81c507eeb734ed847b5f610559d95be738aef26bd386a0ad435aea462c4efeClaim Mint Rewar...271508652023-03-08 0:45:2413 days 4 hrs ago0x074afbac79ab82bd11b69037b8241dc5d292bce6 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0x2202517b1482912184522f7e29a8c4197fa76c2391079f6153e2597de0ecc43bClaim Mint Rewar...271508642023-03-08 0:45:2213 days 4 hrs ago0x074afbac79ab82bd11b69037b8241dc5d292bce6 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0xdc8549bcfd72de35093ff21d933234f65f0720db3be27581246e949733ccfb95Claim Mint Rewar...271508542023-03-08 0:45:0213 days 4 hrs ago0x074afbac79ab82bd11b69037b8241dc5d292bce6 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0xa8cf9a2677b7cbaa1290480a943d54301dbe4e129e345a5be1d1bc5cec89d834Claim Mint Rewar...271508522023-03-08 0:44:5813 days 4 hrs ago0x074afbac79ab82bd11b69037b8241dc5d292bce6 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0xd82ff3080c428710d14b1881952fd1142691180e950929b407ee596c0448d949Claim Mint Rewar...271508342023-03-08 0:44:2213 days 4 hrs ago0x074afbac79ab82bd11b69037b8241dc5d292bce6 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
[ Download CSV Export 

OVERVIEW

4444 unique Vending Machine NFTs have been introduced to the Avalanche network.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x30508c76a5fcf6c53b5c7602d2dfa7bbcb8dbc2006c935f38e75889675c89980276133642023-03-18 21:18:352 days 7 hrs ago Vending Machines NFT: VMN Token0xf6d40bac2f554cf9b8f8b701d06793d6c2d502fa0.016693897360360104 AVAX
0x1319beb353fe14aea26c9a4a32100b929e26aa606928c05af66b3d69319f0176273933122023-03-13 17:17:107 days 11 hrs ago Vending Machines NFT: VMN Token0xa25ebc740218974d39fd24ba45c2a96329a30b880.382953710213693082 AVAX
0xf2cece0fa1dea29f98882ffac90c279a5726266d8e9d7f8b0580b9e316f86f61273506292023-03-12 17:18:168 days 11 hrs ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMN Token0.0297 AVAX
0xc00f4905a6845b4ee7d2c4db03929117e07c375e3b32121d4bd9f51051250a92271508742023-03-08 0:45:4213 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0x3a81c507eeb734ed847b5f610559d95be738aef26bd386a0ad435aea462c4efe271508652023-03-08 0:45:2413 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0x2202517b1482912184522f7e29a8c4197fa76c2391079f6153e2597de0ecc43b271508642023-03-08 0:45:2213 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0xdc8549bcfd72de35093ff21d933234f65f0720db3be27581246e949733ccfb95271508542023-03-08 0:45:0213 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0xa8cf9a2677b7cbaa1290480a943d54301dbe4e129e345a5be1d1bc5cec89d834271508522023-03-08 0:44:5813 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0xd82ff3080c428710d14b1881952fd1142691180e950929b407ee596c0448d949271508342023-03-08 0:44:2213 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0x0f1741a8ab8978dfe90086a32080b058de49deb99d72647472b6246a589ec3a2271508312023-03-08 0:44:1613 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0xb2c953a33fc568acaf54758ff36d11bddd9252b4017fb92d0f9613d59e18b4b1271508282023-03-08 0:44:1013 days 4 hrs ago Vending Machines NFT: VMN Token0x074afbac79ab82bd11b69037b8241dc5d292bce60.015158904661395956 AVAX
0xefdd229bd3ef70be80b56d2e835c742156025fab755169d3eecd6d7187989184270400032023-03-05 7:36:1915 days 21 hrs ago Vending Machines NFT: VMN Token0x01bf343fb2670b5196b23630045765991d4746110.001798004587854149 AVAX
0xf370da0319147d391bbbdbf1089fd296e4be5a03ce9a841daebdba2c1d7bbfe4267718292023-02-26 20:09:0922 days 8 hrs ago Vending Machines NFT: VMN Token0x78f7655d27cccb86200223a1b7b46e0ba8baa5de1.26100000000000143 AVAX
0x424dd05667d5dd733dd8c015389c4d3ebc065d16943e36834cf36a208464d017267716072023-02-26 20:01:2222 days 8 hrs ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMN Token0.027 AVAX
0xbf9fcbccc64d8ae8ba6dd7060fbb486fe26fb219921e298b1cdae23306cf8902264236322023-02-18 16:10:5430 days 12 hrs ago Vending Machines NFT: VMN Token0x340fa019be2004d17a4c849125549287ee2f36b70.001132431462031836 AVAX
0xf227d4479e58a14655dc041f18901ab4bbb5b9cd10669e33b894f1cbf845aedc264236272023-02-18 16:10:4630 days 12 hrs ago Vending Machines NFT: VMN Token0x340fa019be2004d17a4c849125549287ee2f36b70.007538235284582663 AVAX
0x40952826dc7d996364c4782d1f9523b3fa6aae9ca58ec09abde2a12f49e98e5c264160762023-02-18 11:56:4930 days 16 hrs ago Vending Machines NFT: VMN Token0xbb8e0e3ac06b3741cef3797d4019d7ae9bd284ed0.000348816352361388 AVAX
0x43af13e0f1316c04b4a515c6d7a982e5c06102bc513b0a6c1acaa2efdc2d9472264160722023-02-18 11:56:4130 days 16 hrs ago Vending Machines NFT: VMN Token0xbb8e0e3ac06b3741cef3797d4019d7ae9bd284ed0.005825365731330855 AVAX
0x7a5eb8cc5d9ee8568ff81a61dea5b98e876773e0d864629856062e360b602c78262757632023-02-15 5:04:4633 days 23 hrs ago Vending Machines NFT: VMN Token0x91342c51ead36ab67a274dfde3a2252b233c66680.00847934580997775 AVAX
0x0a8f0cd7e97fd8eb35e221f4320ed32a397f98b67c31f76c34d9139f7ba3dc42262757532023-02-15 5:04:2733 days 23 hrs ago Vending Machines NFT: VMN Token0x91342c51ead36ab67a274dfde3a2252b233c66680.00847934580997775 AVAX
0x9ac71c1c3ee9f927be01eb62b2dd3ee538ca23ff5d5b5480b24a56bb9092ea7a262757272023-02-15 5:03:3533 days 23 hrs ago Vending Machines NFT: VMN Token0x91342c51ead36ab67a274dfde3a2252b233c66680.00847934580997775 AVAX
0xe73a4c136b6d6137485269cffe879a627174b9c9b38ee5588d1c643d4cef9efb262757152023-02-15 5:03:0933 days 23 hrs ago Vending Machines NFT: VMN Token0x91342c51ead36ab67a274dfde3a2252b233c66680.00847934580997775 AVAX
0xb05a7e3f806846d607d88d9dca464d4c815322e61fc2482a8d40204fb773091f262390992023-02-14 8:17:4234 days 20 hrs ago Vending Machines NFT: VMN Token0x97a00300af156677b46fed11fc4ac0ea6622b25a0.021171639275121828 AVAX
0x2fb4a2ca84dad15f9f5051e2e40063abaaab90f62b706ff06cfccdddab2b3381261782842023-02-12 21:42:0936 days 7 hrs ago Vending Machines NFT: VMN Token0x70f79ef4422f72793150cc8786bf1624f373c8e00.011179516275595624 AVAX
0x16ca45e948573b2ba70488dbecb13fbf47bccf0f31afac8f40bc230ac3379a67261782782023-02-12 21:41:5736 days 7 hrs ago Vending Machines NFT: VMN Token0x70f79ef4422f72793150cc8786bf1624f373c8e00.011179516275595624 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VendingMachinesNFT

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-01-30
*/

// SPDX-License-Identifier: MIT
// Created by petdomaa100 & xrpant

/*
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  @@  .******************,       @@
  @@ @@           &@     @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@     @@           @@ (@@& @@
  @@ @@@@@@@@@@@@@@@@@@@@@@ ,@@( @@
  @@ @@                  @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@        @@        @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@                  @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@      @@ @@       @@      @@
  @@  @@@@@@@@@@@@@@@@@@@@       @@
  @@                             @@
  @@    @              @.        @@
  @@    @              @.  ,@@*  @@
  @@    @@@@@@@@@@@@@@@@         @@
  @@                             @@
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     @.                       (@
*/



pragma solidity 0.8.11;


library Strings {
	function toString(uint256 value) internal pure returns(string memory) {
		if (value == 0) return "0";

		uint256 temp = value;
		uint256 digits;

		while (temp != 0) {
			digits++;
			temp /= 10;
		}

		bytes memory buffer = new bytes(digits);

		while (value != 0) {
			digits -= 1;
			buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
			value /= 10;
		}

		return string(buffer);
	}
}

library Address {
	function isContract(address account) internal view returns(bool) {
		return account.code.length > 0;
	}
}

library Counters {
	struct Counter {
		uint256 _value;
	}


	function current(Counter storage counter) internal view returns(uint256) {
		return counter._value;
	}

	function increment(Counter storage counter) internal {
		unchecked {
			counter._value += 1;
		}
	}

	function decrement(Counter storage counter) internal {
		uint256 value = counter._value;
		require(value > 0, "Counter: decrement overflow");

		unchecked {
			counter._value = value - 1;
		}
	}

	function reset(Counter storage counter) internal {
		counter._value = 0;
	}
}


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);

	function safeTransferFrom(address from, address to, uint256 tokenID, bytes calldata data) external;
}

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 IERC721Receiver {
	function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns(bytes4);
}

interface IERC2981Royalties {
	function royaltyInfo(uint256 tokenID, uint256 value) external view returns(address receiver, uint256 royaltyAmount);
}


abstract contract Context {
	function _msgSender() internal view virtual returns(address) {
		return msg.sender;
	}

	function _msgData() internal view virtual returns(bytes calldata) {
		return msg.data;
	}
}

abstract contract Ownable is Context {
	address private _owner;

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


	constructor() {
		_transferOwnership(_msgSender());
	}


	function owner() public view virtual returns(address) {
		return _owner;
	}

	modifier onlyOwner() {
		require(owner() == _msgSender(), "Ownable: caller is not the owner");
		_;
	}


	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");

		_transferOwnership(newOwner);
	}

	function _transferOwnership(address newOwner) internal virtual {
		address oldOwner = _owner;

		_owner = newOwner;

		emit OwnershipTransferred(oldOwner, newOwner);
	}
}

abstract contract ReentrancyGuard {
	uint256 private constant _NOT_ENTERED = 1;
	uint256 private constant _ENTERED = 2;

	uint256 private _status;

	constructor() {
		_status = _NOT_ENTERED;
	}


	modifier nonReentrant() {
		require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

		_status = _ENTERED;

		_;

		_status = _NOT_ENTERED;
	}
}


abstract contract ERC165 is IERC165 {
	function supportsInterface(bytes4 interfaceID) public view virtual override returns(bool) {
		return interfaceID == type(IERC165).interfaceId;
	}
}

abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
	using Address for address;
	using Strings for uint256;

	string private _name;
	string private _symbol;

	mapping(uint256 => address) private _owners;
	mapping(address => uint256) private _balances;
	mapping(uint256 => address) private _tokenApprovals;
	mapping(address => mapping(address => bool)) private _operatorApprovals;

	constructor(string memory name_, string memory symbol_) {
		_name = name_;
		_symbol = symbol_;
	}

	function supportsInterface(bytes4 interfaceID) public view virtual override(ERC165, IERC165) returns(bool) {
		return interfaceID == type(IERC721).interfaceId || interfaceID == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceID);
	}

	function balanceOf(address owner) public view virtual override returns(uint256) {
		require(owner != address(0), "ERC721: balance query for the zero address");

		return _balances[owner];
	}

	function ownerOf(uint256 tokenId) public view virtual override returns(address) {
		address owner = _owners[tokenId];

		require(owner != address(0), "ERC721: owner query for nonexistent token");

		return owner;
	}

	function name() public view virtual override returns(string memory) {
		return _name;
	}

	function symbol() public view virtual override returns(string memory) {
		return _symbol;
	}

	function tokenURI(uint256 tokenID) public view virtual override returns(string memory) {
		require(_exists(tokenID), "ERC721Metadata: URI query for nonexistent token");

		string memory baseURI = _baseURI();

		return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenID.toString())) : "";
	}

	function _baseURI() internal view virtual returns(string memory) {
		return "";
	}

	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 || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all");

		_approve(to, tokenID);
	}

	function getApproved(uint256 tokenID) public view virtual override returns(address) {
		require(_exists(tokenID), "ERC721: approved query for nonexistent token");

		return _tokenApprovals[tokenID];
	}

	function setApprovalForAll(address operator, bool approved) public virtual override {
		_setApprovalForAll(_msgSender(), operator, approved);
	}

	function isApprovedForAll(address owner, address operator) public view virtual override returns(bool) {
		return _operatorApprovals[owner][operator];
	}

	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);
	}

	function safeTransferFrom(address from, address to, uint256 tokenID) public virtual override {
		safeTransferFrom(from, to, tokenID, "");
	}

	function safeTransferFrom(address from, address to, uint256 tokenID, bytes memory _data) public virtual override {
		require(_isApprovedOrOwner(_msgSender(), tokenID), "ERC721: transfer caller is not owner nor approved");

		_safeTransfer(from, to, tokenID, _data);
	}

	function _safeTransfer(address from, address to, uint256 tokenID, bytes memory _data) internal virtual {
		_transfer(from, to, tokenID);

		require(_checkOnERC721Received(from, to, tokenID, _data), "ERC721: transfer to non ERC721Receiver implementer");
	}

	function _exists(uint256 tokenID) internal view virtual returns(bool) {
		return _owners[tokenID] != address(0);
	}

	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 || isApprovedForAll(owner, spender));
	}

	function _safeMint(address to, uint256 tokenID) internal virtual {
		_safeMint(to, tokenID, "");
	}

	function _safeMint(address to, uint256 tokenID, bytes memory _data) internal virtual {
		_mint(to, tokenID);

		require(_checkOnERC721Received(address(0), to, tokenID, _data), "ERC721: transfer to non ERC721Receiver implementer");
	}

	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");

		_beforeTokenTransfer(address(0), to, tokenID);

		_balances[to] += 1;
		_owners[tokenID] = to;

		emit Transfer(address(0), to, tokenID);

		_afterTokenTransfer(address(0), to, tokenID);
	}

	function _burn(uint256 tokenID) internal virtual {
		address owner = ERC721.ownerOf(tokenID);

		_beforeTokenTransfer(owner, address(0), tokenID);
		_approve(address(0), tokenID);

		_balances[owner] -= 1;
		delete _owners[tokenID];

		emit Transfer(owner, address(0), tokenID);

		_afterTokenTransfer(owner, address(0), tokenID);
	}

	function _transfer(address from, address to, uint256 tokenID) internal virtual {
		require(ERC721.ownerOf(tokenID) == from, "ERC721: transfer from incorrect owner");
		require(to != address(0), "ERC721: transfer to the zero address");

		_beforeTokenTransfer(from, to, tokenID);
		_approve(address(0), tokenID);

		_balances[from] -= 1;
		_balances[to] += 1;
		_owners[tokenID] = to;

		emit Transfer(from, to, tokenID);

		_afterTokenTransfer(from, to, tokenID);
	}

	function _approve(address to, uint256 tokenID) internal virtual {
		_tokenApprovals[tokenID] = to;

		emit Approval(ERC721.ownerOf(tokenID), to, tokenID);
	}

	function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
		require(owner != operator, "ERC721: approve to caller");

		_operatorApprovals[owner][operator] = approved;

		emit ApprovalForAll(owner, operator, approved);
	}

	function _checkOnERC721Received(address from, address to, uint256 tokenID, bytes memory _data) private returns(bool) {
		if (to.isContract()) {
			try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenID, _data) returns(bytes4 retval) {
				return retval == IERC721Receiver.onERC721Received.selector;
			} catch (bytes memory reason) {
				if (reason.length == 0) revert("ERC721: transfer to non ERC721Receiver implementer");

				else {
					assembly {
						revert(add(32, reason), mload(reason))
					}
				}
			}
		}

		else return true;
	}

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}

	function _afterTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}
}



contract VendingMachinesNFT is ERC721, ReentrancyGuard, Ownable {
	using Counters for Counters.Counter;
	using Strings for uint256;


	bool public paused;
	bool public revealed;
	bool public allowListings;
	bool public collectSalesRewardsFromThirdParty;

	string private unrevealedURI;
	string private baseURI;
	string private uriSuffix;

	uint256 public cost;
	uint256 public maxSupply;
	uint256 public reservedSupply;

	uint256 public maxMintAmountPerTX;

	uint256 public royalties;
	uint256 public dust;

	uint256 public mintRewards;
	uint256 public salesRewards;
	uint256 public mintRewardsIndex;
	uint256 public salesRewardsIndex;
	uint256 public totalMintRewardsVault;
	uint256 public totalSalesRewardsVault;

	mapping(uint256 => uint256) private lastCollectedMintRewardIndex;
	mapping(uint256 => uint256) private lastCollectedSalesRewardIndex;


	address private communityAddress;
	address private donationAddress;


	struct Listing {
		uint256 tokenID;
		uint256 price;
		address seller;
		uint256 timestamp;
	}

	Listing[] private listings;

	Counters.Counter private supply;


	uint256 private constant PERCENTAGE_MULTIPLIER = 10000;


	event NewListing(uint256 indexed tokenID, address indexed seller, uint256 price);
	event WithdrawnListing(uint256 indexed tokenID);
	event TokenSold(uint256 indexed tokenID, address indexed from, address indexed to, uint256 price);
	event ClaimedRewards(address indexed wallet, uint256 amount, uint8 indexed rewardType);
	event DisbursedRewards(uint256 amount);


	constructor(string memory _initUnrevealedURI, address _initCommunityAddress, address _initDonationAddress) ERC721("Vending Machines NFT", "VMN") {
		paused = true;
		revealed = false;
		allowListings = true;
		collectSalesRewardsFromThirdParty = true;

		cost = 2 ether;
		maxSupply = 4444;
		reservedSupply = 400;
		maxMintAmountPerTX = 10;

		royalties = 150;
		mintRewards = 1000;
		salesRewards = 150;
		dust = 100000000;

		mintRewardsIndex = 0;
		salesRewardsIndex = 0;

		communityAddress = _initCommunityAddress;
		donationAddress = _initDonationAddress;

		setURIsuffix(".json");
		setUnrevealedURI(_initUnrevealedURI);
	}


	function supportsInterface(bytes4 interfaceID) public view override returns(bool) {
		return interfaceID == type(IERC2981Royalties).interfaceId || super.supportsInterface(interfaceID);
	}


	function mint(uint256 amount) public payable nonReentrant {
		require(amount > 0 && amount <= maxMintAmountPerTX, "Invalid mint amount");

		uint256 newSupply = supply.current() + amount;

		require(newSupply <= maxSupply, "Max token supply exceeded");
		require(newSupply <= maxSupply - reservedSupply, "Remaining tokens are reserved");

		require(!paused, "Minting is paused");
		require(msg.value >= cost * amount, "Insufficient funds");


		uint256 mintRewardValue = 0;
		uint256 tokenIndex = supply.current();

		_mintLoop(_msgSender(), amount);


		for (uint256 i = 0; i < amount; i++) {
			if (tokenIndex > 0) {
				uint256 individualMintRewardValue = msg.value * mintRewards / PERCENTAGE_MULTIPLIER / amount / tokenIndex;

				mintRewardValue += individualMintRewardValue * tokenIndex;
				mintRewardsIndex += individualMintRewardValue;
			}

			tokenIndex++;
			lastCollectedMintRewardIndex[tokenIndex] = mintRewardsIndex;
		}

		totalMintRewardsVault += mintRewardValue;
	}

	function airDrop(address[] calldata addresses, uint8[] calldata amounts) public onlyOwner {
		assert(addresses.length == amounts.length);
		assert(addresses.length > 0 && amounts.length > 0);


		uint256 totalAmount;
		for (uint256 i = 0; i < amounts.length; i++) totalAmount += amounts[i];

		require(supply.current() + totalAmount <= maxSupply, "Max token supply exceeded");


		for (uint256 i = 0; i < addresses.length; i++) {
			uint8 amount = amounts[i];

			for (uint256 j = 0; j < amount; j++) {
				supply.increment();

				uint256 tokenID = supply.current();

				_safeMint(addresses[i], tokenID);

				lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex;
			}
		}
	}


	function flipPausedState() public onlyOwner {
		paused = !paused;
	}

	function flipAllowListingsState() public onlyOwner {
		allowListings = !allowListings;
	}

	function flipCollectSalesRewardsFromThirdParty() public onlyOwner {
		collectSalesRewardsFromThirdParty = !collectSalesRewardsFromThirdParty;
	}

	function reveal(string memory _initBaseURI) public onlyOwner {
		revealed = true;

		setBaseURI(_initBaseURI);
	}

	function claimMintRewards() public payable nonReentrant {
		uint256 reward = getMintRewardsOfAddress(_msgSender());
		require(reward > 0, "You don't have any rewards");


		uint256[] memory tokens = walletOfOwner(_msgSender());

		for (uint256 i = 0; i < tokens.length; i++) {
			uint256 tokenID = tokens[i];

			lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex;
		}

		totalMintRewardsVault -= reward;


		(bool success, ) = payable(_msgSender()).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(_msgSender(), reward, 1);
	}

	function claimMintRewardOfToken(uint256 tokenID) public payable nonReentrant {
		address owner = ownerOf(tokenID);
		require(_msgSender() == owner, "Only the owner of a token can claim rewards");

		uint256 reward = getMintRewardsOfToken(tokenID);
		require(reward > 0, "You don't have any rewards");


		totalMintRewardsVault -= reward;
		lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex;


		(bool success, ) = payable(owner).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(owner, reward, 1);
	}

	function claimSalesRewards() public payable nonReentrant {
		uint256 reward = getSalesRewardsOfAddress(_msgSender());
		require(reward > 0, "You don't have any rewards");


		uint256[] memory tokens = walletOfOwner(_msgSender());

		for (uint256 i = 0; i < tokens.length; i++) {
			uint256 tokenID = tokens[i];

			lastCollectedSalesRewardIndex[tokenID] = salesRewardsIndex;
		}

		totalSalesRewardsVault -= reward;


		(bool success, ) = payable(_msgSender()).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(_msgSender(), reward, 2);
	}

	function claimSalesRewardOfToken(uint256 tokenID) public payable nonReentrant {
		address owner = ownerOf(tokenID);
		require(_msgSender() == owner, "Only the owner of a token can claim rewards");

		uint256 reward = getSalesRewardsOfToken(tokenID);
		require(reward > 0, "You don't have any rewards");


		totalSalesRewardsVault -= reward;
		lastCollectedSalesRewardIndex[tokenID] = salesRewardsIndex;


		(bool success, ) = payable(owner).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(owner, reward, 2);
	}

	function withdraw() public onlyOwner {
		uint256 totalRewards = totalMintRewardsVault + totalSalesRewardsVault;
		uint256 balance_10percent = (address(this).balance - totalRewards) * 10 / 100;

		(bool success1, ) = payable(communityAddress).call{ value: balance_10percent * 3 }("");
		require(success1, "AVAX Transaction: Failed to transfer funds to community wallet!");

		(bool success2, ) = payable(donationAddress).call{ value: balance_10percent }("");
		require(success2, "AVAX Transaction: Failed to transfer funds to donation wallet!");

		(bool success3, ) = payable(owner()).call{ value: address(this).balance - (totalRewards + dust) }("");
		require(success3, "AVAX Transaction: Failed to transfer funds to the owner wallet!");
	}

	function emergencyWithdraw() public payable onlyOwner {
		(bool success, ) = payable(owner()).call{ value: address(this).balance }("");

		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function disburseRewards() public payable onlyOwner {
		uint256 currentSupply = supply.current();

		uint256 individualRewardValue = msg.value / currentSupply;
		uint256 rewardValue = individualRewardValue * currentSupply;

		mintRewardsIndex += individualRewardValue;
		totalMintRewardsVault += rewardValue;

		emit DisbursedRewards(msg.value);
	}


	function royaltyInfo(uint256, uint256 value) external view returns(address receiver, uint256 royaltyAmount) {
		receiver = address(this);

		royaltyAmount = value * (royalties + salesRewards) / PERCENTAGE_MULTIPLIER;
	}

	function createListing(uint256 tokenID, uint256 price) public nonReentrant {
		require(allowListings, "ERC721 Marketplace: Listings are currently disabled");
		require(price > 0, "ERC721 Marketplace: Invalid listing price");
		require(ownerOf(tokenID) == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Token is already listed");

		Listing memory sale = Listing(tokenID, price, _msgSender(), block.timestamp);

		listings.push(sale);

		emit NewListing(tokenID, _msgSender(), price);
	}

	function withdrawListing(uint256 tokenID) public nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);

		require(isListed, "ERC721 Marketplace: Token is not listed");
		require(listings[listingIndex].seller == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();

		emit WithdrawnListing(tokenID);
	}

	function fulfillListing(uint256 tokenID) public payable nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		Listing memory listing = listings[listingIndex];

		require(listing.seller != _msgSender(), "ERC721 Marketplace: Buyer and seller must be be different addresses");
		require(msg.value >= listing.price, "ERC721 Marketplace: Insufficient funds");

		uint256 royaltiesValue = msg.value * royalties / PERCENTAGE_MULTIPLIER;
		uint256 individualSalesRewardValue = msg.value * salesRewards / PERCENTAGE_MULTIPLIER / (supply.current() - 1);
		uint256 salesRewardValue = individualSalesRewardValue * (supply.current() - 1);


		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();


		salesRewardsIndex += individualSalesRewardValue;
		lastCollectedSalesRewardIndex[tokenID] += individualSalesRewardValue;

		totalSalesRewardsVault += salesRewardValue;


		emit TokenSold(tokenID, listing.seller, _msgSender(), msg.value);


		_safeTransfer(listing.seller, _msgSender(), tokenID, "");

		(bool success, ) = payable(listing.seller).call{ value: msg.value - (royaltiesValue + salesRewardValue) }("");
		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function isTokenListed(uint256 tokenID) public view returns(bool isListed, uint256 index) {
		for (uint256 i = 0; i < listings.length; i++) {
			if (listings[i].tokenID != tokenID) continue;

			isListed = true;
			index = i;

			break;
		}
	}

	function getListings() public view returns(Listing[] memory) {
		return listings;
	}

	function getListingByTokenID(uint256 tokenID) public view returns(Listing memory) {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		return listings[listingIndex];
	}

	function tokenURI(uint256 tokenID) public view override returns(string memory) {
		require(_exists(tokenID), "ERC721Metadata: URI query for nonexistent token");

		if (!revealed) return unrevealedURI;

		string memory currentBaseURI = _baseURI();

		return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked(currentBaseURI, tokenID.toString(), uriSuffix) ) : "";
	}

	function totalSupply() public view returns(uint256) {
		return supply.current();
	}

	function walletOfOwner(address _address) public view returns(uint256[] memory) {
		uint256 ownerTokenCount = balanceOf(_address);

		uint256[] memory ownedTokenIDs = new uint256[](ownerTokenCount);


		uint256 tokenIndex = 1;
		uint256 ownedTokenIndex = 0;

		while (ownedTokenIndex < ownerTokenCount && tokenIndex <= maxSupply) {
			address owner = ownerOf(tokenIndex);

			if (owner == _address) {
				ownedTokenIDs[ownedTokenIndex] = tokenIndex;

				ownedTokenIndex++;
			}

			tokenIndex++;
		}


		return ownedTokenIDs;
	}

	function getMintRewardsOfAddress(address _address) public view returns(uint256) {
		uint256[] memory tokens = walletOfOwner(_address);
		uint256 total = 0;

		for (uint256 i = 0; i < tokens.length; i++) {
			total += getMintRewardsOfToken(tokens[i]);
		}

		return total;
	}

	function getSalesRewardsOfAddress(address _address) public view returns(uint256) {
		uint256[] memory tokens = walletOfOwner(_address);
		uint256 total = 0;

		for (uint256 i = 0; i < tokens.length; i++) {
			total += getSalesRewardsOfToken(tokens[i]);
		}

		return total;
	}

	function getMintRewardsOfToken(uint256 tokenID) public view returns(uint256) {
		require(supply.current() >= tokenID, "Query for nonexistent token");

		return mintRewardsIndex - lastCollectedMintRewardIndex[tokenID];
	}

	function getSalesRewardsOfToken(uint256 tokenID) public view returns(uint256) {
		require(supply.current() >= tokenID, "Query for nonexistent token");

		return salesRewardsIndex - lastCollectedSalesRewardIndex[tokenID];
	}


	function setBaseURI(string memory newBaseURI) public onlyOwner {
		baseURI = newBaseURI;
	}

	function setUnrevealedURI(string memory newUnrevealedURI) public onlyOwner {
		unrevealedURI = newUnrevealedURI;
	}

	function setURIsuffix(string memory newSuffix) public onlyOwner {
		uriSuffix = newSuffix;
	}

	function setMaxSupply(uint256 newAmount) public onlyOwner {
		maxSupply = newAmount;
	}

	function setReservedSupply(uint256 newAmount) public onlyOwner {
		reservedSupply = newAmount;
	}

	function setMaxMintAmountPerTX(uint256 newAmount) public onlyOwner {
		maxMintAmountPerTX = newAmount;
	}

	function setCost(uint256 newCost) public onlyOwner {
		cost = newCost;
	}

	function setMintRewards(uint256 newValue) public onlyOwner {
		mintRewards = newValue;
	}

	function setSalesRewards(uint256 newValue) public onlyOwner {
		salesRewards = newValue;
	}

	function setRoyalties(uint256 newValue) public onlyOwner {
		royalties = newValue;
	}

	function setDust(uint256 newValue) public onlyOwner {
		dust = newValue;
	}

	function setMintRewardsIndex(uint256 newAmount) public onlyOwner {
		mintRewardsIndex = newAmount;
	}

	function setSalesRewardsIndex(uint256 newAmount) public onlyOwner {
		salesRewardsIndex = newAmount;
	}

	function setWithdrawAddresses(address newCommunityAddress, address newDonationAddress) public onlyOwner {
		communityAddress = newCommunityAddress;
		donationAddress = newDonationAddress;
	}


	function _baseURI() internal view override returns(string memory) {
		return baseURI;
	}

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal override {
		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Unable to transfer a listed token");


		super._beforeTokenTransfer(from, to, tokenID);
	}

	function _mintLoop(address to, uint256 amount) internal {
		for (uint256 i = 0; i < amount; i++) {
			supply.increment();

			_safeMint(to, supply.current());
		}
	}


	receive() external payable {
		uint256 currentSupply = supply.current();

		if (collectSalesRewardsFromThirdParty == true && currentSupply > 0) {
			uint256 individualSalesRewardValue = msg.value / (salesRewards + royalties) * salesRewards / currentSupply;
			uint256 salesRewardValue = individualSalesRewardValue * currentSupply;

			salesRewardsIndex += individualSalesRewardValue;

			totalSalesRewardsVault += salesRewardValue;
		}
	}
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initUnrevealedURI","type":"string"},{"internalType":"address","name":"_initCommunityAddress","type":"address"},{"internalType":"address","name":"_initDonationAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"rewardType","type":"uint8"}],"name":"ClaimedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DisbursedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"NewListing","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":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"WithdrawnListing","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"amounts","type":"uint8[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowListings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"claimMintRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimMintRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"claimSalesRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimSalesRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"collectSalesRewardsFromThirdParty","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"createListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disburseRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"flipAllowListingsState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipCollectSalesRewardsFromThirdParty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPausedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"fulfillListing","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getListingByTokenID","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VendingMachinesNFT.Listing","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getListings","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VendingMachinesNFT.Listing[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getMintRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getMintRewardsOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSalesRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getSalesRewardsOfToken","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":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"isTokenListed","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintRewardsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"salesRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"salesRewardsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxMintAmountPerTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMintRewardsIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setReservedSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSalesRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSalesRewardsIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSuffix","type":"string"}],"name":"setURIsuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCommunityAddress","type":"address"},{"internalType":"address","name":"newDonationAddress","type":"address"}],"name":"setWithdrawAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMintRewardsVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSalesRewardsVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"withdrawListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162004b8b38038062004b8b833981016040819052620000349162000370565b604080518082018252601481527f56656e64696e67204d616368696e6573204e46540000000000000000000000006020808301918252835180850190945260038452622b26a760e91b908401528151919291620000949160009162000297565b508051620000aa90600190602084019062000297565b5050600160065550620000bd3362000182565b60078054630101000160a01b63ffffffff60a01b19909116179055671bc16d674ec80000600b5561115c600c55610190600d55600a600e556096600f8190556103e86011556012556305f5e10060105560006013819055601455601980546001600160a01b038085166001600160a01b031992831617909255601a805492841692909116919091179055604080518082019091526005815264173539b7b760d91b60208201526200016e90620001d4565b62000179836200023c565b505050620004b0565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6007546001600160a01b03163314620002235760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064015b60405180910390fd5b80516200023890600a90602084019062000297565b5050565b6007546001600160a01b03163314620002875760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064016200021a565b8051620002389060089060208401905b828054620002a59062000473565b90600052602060002090601f016020900481019282620002c9576000855562000314565b82601f10620002e457805160ff191683800117855562000314565b8280016001018555821562000314579182015b8281111562000314578251825591602001919060010190620002f7565b506200032292915062000326565b5090565b5b8082111562000322576000815560010162000327565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200036b57600080fd5b919050565b6000806000606084860312156200038657600080fd5b83516001600160401b03808211156200039e57600080fd5b818601915086601f830112620003b357600080fd5b815181811115620003c857620003c86200033d565b604051601f8201601f19908116603f01168101908382118183101715620003f357620003f36200033d565b816040528281526020935089848487010111156200041057600080fd5b600091505b8282101562000434578482018401518183018501529083019062000415565b82821115620004465760008484830101525b96506200045891505086820162000353565b935050506200046a6040850162000353565b90509250925092565b600181811c908216806200048857607f821691505b60208210811415620004aa57634e487b7160e01b600052602260045260246000fd5b50919050565b6146ab80620004c06000396000f3fe6080604052600436106104145760003560e01c80637ef6f6561161021e578063b5350ebf11610123578063e02f3993116100ab578063f1b2d6a31161007a578063f1b2d6a314610c56578063f2fde38b14610c78578063f9daade414610c98578063fad9aba314610cb8578063fe2c7fee14610cce57600080fd5b8063e02f399314610bf7578063e985e9c514610c0d578063f053dc5c14610c2d578063f1629d1314610c4357600080fd5b8063d5abeb01116100f2578063d5abeb0114610b8d578063d6fb650c14610ba3578063db2e21bc14610bc3578063dceb262914610bcb578063dd76cba314610be157600080fd5b8063b5350ebf14610b2f578063b88d4fde14610b37578063bf72daad14610b57578063c87b56dd14610b6d57600080fd5b80639b83cddc116101a6578063a22cb46511610175578063a22cb46514610a8f578063a79123a914610aaf578063aec6e27314610acf578063aff7214114610aef578063b36a206414610b0f57600080fd5b80639b83cddc14610a0f578063a0712d6814610a46578063a0ba1bbf14610a59578063a17bd78314610a7a57600080fd5b80638d5190d9116101ed5780638d5190d9146109875780638da5cb5b146109a75780638e6fe1a3146109c557806393eff851146109e557806395d89b41146109fa57600080fd5b80637ef6f65614610912578063825875741461093257806384917f4a1461095257806389ac1fa81461097f57600080fd5b80633ccfd60b116103245780634c261247116102ac57806356fcf95b1161027b57806356fcf95b146108715780635c975abb146108915780636352211e146108b25780636f8b44b0146108d257806370a08231146108f257600080fd5b80634c261247146107ef5780634f8a1db51461080f578063518302271461083057806355f804b31461085157600080fd5b8063437552c0116102f3578063437552c01461074c578063438b63001461076c57806344a0d68a1461079957806344d19d2b146107b957806347d616bc146107cf57600080fd5b80633ccfd60b146106fc5780633e57bb141461071157806342842e0e1461071957806342bba11a1461073957600080fd5b806318160ddd116103a757806328e3a0b21161037657806328e3a0b21461065e5780632a55205a146106745780632b80183f146106b35780632dfa9d00146106d35780633912fc85146106e957600080fd5b806318160ddd146105f35780631e13f86b14610608578063234cb0511461062857806323b872dd1461063e57600080fd5b80630798e5c9116103e35780630798e5c91461056e578063081812fc14610585578063095ea7b3146105bd57806313faede6146105dd57600080fd5b806301ffc9a7146104c9578063048d228b146104fe57806305e79db21461052c57806306fdde031461054c57600080fd5b366104c4576000610424601c5490565b600754909150600160b81b900460ff16151560011480156104455750600081115b156104c157600081601254600f546012546104609190613ccf565b61046a9034613cfd565b6104749190613d11565b61047e9190613cfd565b9050600061048c8383613d11565b905081601460008282546104a09190613ccf565b9250508190555080601660008282546104b99190613ccf565b909155505050505b50005b600080fd5b3480156104d557600080fd5b506104e96104e4366004613d46565b610cee565b60405190151581526020015b60405180910390f35b34801561050a57600080fd5b5061051e610519366004613d7f565b610d19565b6040519081526020016104f5565b34801561053857600080fd5b5061051e610547366004613d9a565b610d7c565b34801561055857600080fd5b50610561610df7565b6040516104f59190613e0b565b34801561057a57600080fd5b50610583610e89565b005b34801561059157600080fd5b506105a56105a0366004613d9a565b610ed4565b6040516001600160a01b0390911681526020016104f5565b3480156105c957600080fd5b506105836105d8366004613e1e565b610f69565b3480156105e957600080fd5b5061051e600b5481565b3480156105ff57600080fd5b5061051e61107f565b34801561061457600080fd5b50610583610623366004613d9a565b61108f565b34801561063457600080fd5b5061051e60115481565b34801561064a57600080fd5b50610583610659366004613e48565b6110be565b34801561066a57600080fd5b5061051e60135481565b34801561068057600080fd5b5061069461068f366004613e84565b6110ef565b604080516001600160a01b0390931683526020830191909152016104f5565b3480156106bf57600080fd5b506105836106ce366004613d9a565b611124565b3480156106df57600080fd5b5061051e600e5481565b6105836106f7366004613d9a565b611153565b34801561070857600080fd5b506105836115c6565b610583611883565b34801561072557600080fd5b50610583610734366004613e48565b611a06565b610583610747366004613d9a565b611a21565b34801561075857600080fd5b50610583610767366004613d9a565b611b95565b34801561077857600080fd5b5061078c610787366004613d7f565b611bc4565b6040516104f59190613ea6565b3480156107a557600080fd5b506105836107b4366004613d9a565b611ca5565b3480156107c557600080fd5b5061051e600d5481565b3480156107db57600080fd5b506105836107ea366004613d9a565b611cd4565b3480156107fb57600080fd5b5061058361080a366004613f76565b611d03565b34801561081b57600080fd5b506007546104e990600160b81b900460ff1681565b34801561083c57600080fd5b506007546104e990600160a81b900460ff1681565b34801561085d57600080fd5b5061058361086c366004613f76565b611d4c565b34801561087d57600080fd5b5061058361088c366004613d9a565b611d8d565b34801561089d57600080fd5b506007546104e990600160a01b900460ff1681565b3480156108be57600080fd5b506105a56108cd366004613d9a565b611dbc565b3480156108de57600080fd5b506105836108ed366004613d9a565b611e33565b3480156108fe57600080fd5b5061051e61090d366004613d7f565b611e62565b34801561091e57600080fd5b5061058361092d366004613fbf565b611ee9565b34801561093e57600080fd5b5061051e61094d366004613d9a565b611f41565b34801561095e57600080fd5b5061097261096d366004613d9a565b611fb7565b6040516104f59190613fe9565b61058361207d565b34801561099357600080fd5b506105836109a2366004613d9a565b6121b8565b3480156109b357600080fd5b506007546001600160a01b03166105a5565b3480156109d157600080fd5b506105836109e0366004613d9a565b6121e7565b3480156109f157600080fd5b50610583612216565b348015610a0657600080fd5b50610561612261565b348015610a1b57600080fd5b50610a2f610a2a366004613d9a565b612270565b6040805192151583526020830191909152016104f5565b610583610a54366004613d9a565b6122d4565b348015610a6557600080fd5b506007546104e990600160b01b900460ff1681565b348015610a8657600080fd5b50610583612596565b348015610a9b57600080fd5b50610583610aaa36600461401d565b6125e1565b348015610abb57600080fd5b50610583610aca366004613e84565b6125ec565b348015610adb57600080fd5b50610583610aea366004613d9a565b6128c6565b348015610afb57600080fd5b50610583610b0a366004613f76565b612a7d565b348015610b1b57600080fd5b5061051e610b2a366004613d7f565b612aba565b610583612b15565b348015610b4357600080fd5b50610583610b52366004614059565b612bd0565b348015610b6357600080fd5b5061051e60145481565b348015610b7957600080fd5b50610561610b88366004613d9a565b612c08565b348015610b9957600080fd5b5061051e600c5481565b348015610baf57600080fd5b50610583610bbe366004613d9a565b612d89565b610583612db8565b348015610bd757600080fd5b5061051e60155481565b348015610bed57600080fd5b5061051e60165481565b348015610c0357600080fd5b5061051e60125481565b348015610c1957600080fd5b506104e9610c28366004613fbf565b612e66565b348015610c3957600080fd5b5061051e600f5481565b610583610c51366004613d9a565b612e94565b348015610c6257600080fd5b50610c6b612ff5565b6040516104f591906140d5565b348015610c8457600080fd5b50610583610c93366004613d7f565b61307f565b348015610ca457600080fd5b50610583610cb336600461418a565b613117565b348015610cc457600080fd5b5061051e60105481565b348015610cda57600080fd5b50610583610ce9366004613f76565b6132f1565b60006001600160e01b0319821663152a902d60e11b1480610d135750610d138261332e565b92915050565b600080610d2583611bc4565b90506000805b8251811015610d7457610d56838281518110610d4957610d496141f6565b6020026020010151610d7c565b610d609083613ccf565b915080610d6c8161420c565b915050610d2b565b509392505050565b600081610d88601c5490565b1015610ddb5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e000000000060448201526064015b60405180910390fd5b600082815260186020526040902054601454610d139190614227565b606060008054610e069061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e329061423e565b8015610e7f5780601f10610e5457610100808354040283529160200191610e7f565b820191906000526020600020905b815481529060010190602001808311610e6257829003601f168201915b5050505050905090565b6007546001600160a01b03163314610eb35760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000818152600260205260408120546001600160a01b0316610f4d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b506000908152600460205260409020546001600160a01b031690565b6000610f7482611dbc565b9050806001600160a01b0316836001600160a01b03161415610fe25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dd2565b336001600160a01b0382161480610ffe5750610ffe8133612e66565b6110705760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dd2565b61107a838361337e565b505050565b600061108a601c5490565b905090565b6007546001600160a01b031633146110b95760405162461bcd60e51b8152600401610dd290614279565b600d55565b6110c833826133ec565b6110e45760405162461bcd60e51b8152600401610dd2906142ae565b61107a8383836134c3565b601254600f5430916000916127109161110791613ccf565b6111119085613d11565b61111b9190613cfd565b90509250929050565b6007546001600160a01b0316331461114e5760405162461bcd60e51b8152600401610dd290614279565b600f55565b600260065414156111765760405162461bcd60e51b8152600401610dd2906142ff565b600260065560008061118783612270565b91509150816111a85760405162461bcd60e51b8152600401610dd290614336565b6000601b82815481106111bd576111bd6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b031690820152600390910154606082015290506112103390565b6001600160a01b031681604001516001600160a01b031614156112a75760405162461bcd60e51b815260206004820152604360248201527f455243373231204d61726b6574706c6163653a20427579657220616e6420736560448201527f6c6c6572206d75737420626520626520646966666572656e742061646472657360648201526273657360e81b608482015260a401610dd2565b806020015134101561130a5760405162461bcd60e51b815260206004820152602660248201527f455243373231204d61726b6574706c6163653a20496e73756666696369656e746044820152652066756e647360d01b6064820152608401610dd2565b6000612710600f543461131d9190613d11565b6113279190613cfd565b905060006001611336601c5490565b6113409190614227565b612710601254346113519190613d11565b61135b9190613cfd565b6113659190613cfd565b905060006001611374601c5490565b61137e9190614227565b6113889083613d11565b601b80549192509061139c90600190614227565b815481106113ac576113ac6141f6565b9060005260206000209060040201601b86815481106113cd576113cd6141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b80548061142c5761142c61437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560148054849290611477908490613ccf565b90915550506000878152601860205260408120805484929061149a908490613ccf565b9250508190555080601660008282546114b39190613ccf565b909155503390506001600160a01b031684604001516001600160a01b0316887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af95563460405161150391815260200190565b60405180910390a4611530846040015161151a3390565b896040518060200160405280600081525061366a565b60408401516000906001600160a01b031661154b8386613ccf565b6115559034614227565b604051600081818185875af1925050503d8060008114611591576040519150601f19603f3d011682016040523d82523d6000602084013e611596565b606091505b50509050806115b75760405162461bcd60e51b8152600401610dd290614393565b50506001600655505050505050565b6007546001600160a01b031633146115f05760405162461bcd60e51b8152600401610dd290614279565b60006016546015546116029190613ccf565b9050600060646116128347614227565b61161d90600a613d11565b6116279190613cfd565b6019549091506000906001600160a01b0316611644836003613d11565b604051600081818185875af1925050503d8060008114611680576040519150601f19603f3d011682016040523d82523d6000602084013e611685565b606091505b50509050806116ea5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20636f6d6d756e6974792077616c6c657421006064820152608401610dd2565b601a546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611737576040519150601f19603f3d011682016040523d82523d6000602084013e61173c565b606091505b50509050806117a15760405162461bcd60e51b815260206004820152603e602482015260008051602061465683398151915260448201527f736665722066756e647320746f20646f6e6174696f6e2077616c6c65742100006064820152608401610dd2565b60006117b56007546001600160a01b031690565b6001600160a01b0316601054866117cc9190613ccf565b6117d69047614227565b604051600081818185875af1925050503d8060008114611812576040519150601f19603f3d011682016040523d82523d6000602084013e611817565b606091505b505090508061187c5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20746865206f776e65722077616c6c657421006064820152608401610dd2565b5050505050565b600260065414156118a65760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006118b633610d19565b9050600081116118d85760405162461bcd60e51b8152600401610dd2906143cb565b60006118e333611bc4565b905060005b8151811015611936576000828281518110611905576119056141f6565b602090810291909101810151601454600091825260189092526040902055508061192e8161420c565b9150506118e8565b5081601660008282546119499190614227565b9091555050604051600090339084908381818185875af1925050503d8060008114611990576040519150601f19603f3d011682016040523d82523d6000602084013e611995565b606091505b50509050806119b65760405162461bcd60e51b8152600401610dd290614393565b6002335b6001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba9856040516119f491815260200190565b60405180910390a35050600160065550565b61107a83838360405180602001604052806000815250612bd0565b60026006541415611a445760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000611a5482611dbc565b9050336001600160a01b03821614611a7e5760405162461bcd60e51b8152600401610dd290614402565b6000611a8983610d7c565b905060008111611aab5760405162461bcd60e51b8152600401610dd2906143cb565b8060166000828254611abd9190614227565b90915550506014546000848152601860205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114611b1f576040519150601f19603f3d011682016040523d82523d6000602084013e611b24565b606091505b5050905080611b455760405162461bcd60e51b8152600401610dd290614393565b6002836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b60405180910390a3505060016006555050565b6007546001600160a01b03163314611bbf5760405162461bcd60e51b8152600401610dd290614279565b601055565b60606000611bd183611e62565b905060008167ffffffffffffffff811115611bee57611bee613eea565b604051908082528060200260200182016040528015611c17578160200160208202803683370190505b509050600160005b8381108015611c305750600c548211155b15611c9b576000611c4083611dbc565b9050866001600160a01b0316816001600160a01b03161415611c885782848381518110611c6f57611c6f6141f6565b602090810291909101015281611c848161420c565b9250505b82611c928161420c565b93505050611c1f565b5090949350505050565b6007546001600160a01b03163314611ccf5760405162461bcd60e51b8152600401610dd290614279565b600b55565b6007546001600160a01b03163314611cfe5760405162461bcd60e51b8152600401610dd290614279565b601355565b6007546001600160a01b03163314611d2d5760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a81b1916600160a81b179055611d4981611d4c565b50565b6007546001600160a01b03163314611d765760405162461bcd60e51b8152600401610dd290614279565b8051611d89906009906020840190613c20565b5050565b6007546001600160a01b03163314611db75760405162461bcd60e51b8152600401610dd290614279565b601255565b6000818152600260205260408120546001600160a01b031680610d135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dd2565b6007546001600160a01b03163314611e5d5760405162461bcd60e51b8152600401610dd290614279565b600c55565b60006001600160a01b038216611ecd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dd2565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b03163314611f135760405162461bcd60e51b8152600401610dd290614279565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b600081611f4d601c5490565b1015611f9b5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610dd2565b600082815260176020526040902054601354610d139190614227565b611feb6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b600080611ff784612270565b91509150816120185760405162461bcd60e51b8152600401610dd290614336565b601b818154811061202b5761202b6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b0316908201526003909101546060820152949350505050565b600260065414156120a05760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006120b033612aba565b9050600081116120d25760405162461bcd60e51b8152600401610dd2906143cb565b60006120dd33611bc4565b905060005b81518110156121305760008282815181106120ff576120ff6141f6565b60209081029190910181015160135460009182526017909252604090205550806121288161420c565b9150506120e2565b5081601560008282546121439190614227565b9091555050604051600090339084908381818185875af1925050503d806000811461218a576040519150601f19603f3d011682016040523d82523d6000602084013e61218f565b606091505b50509050806121b05760405162461bcd60e51b8152600401610dd290614393565b6001336119ba565b6007546001600160a01b031633146121e25760405162461bcd60e51b8152600401610dd290614279565b601455565b6007546001600160a01b031633146122115760405162461bcd60e51b8152600401610dd290614279565b600e55565b6007546001600160a01b031633146122405760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a01b198116600160a01b9182900460ff1615909102179055565b606060018054610e069061423e565b60008060005b601b548110156122ce5783601b8281548110612294576122946141f6565b906000526020600020906004020160000154146122b0576122bc565b600192508091506122ce565b806122c68161420c565b915050612276565b50915091565b600260065414156122f75760405162461bcd60e51b8152600401610dd2906142ff565b6002600655801580159061230d5750600e548111155b61234f5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b5a5b9d08185b5bdd5b9d606a1b6044820152606401610dd2565b60008161235b601c5490565b6123659190613ccf565b9050600c548111156123b55760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b600d54600c546123c59190614227565b8111156124145760405162461bcd60e51b815260206004820152601d60248201527f52656d61696e696e6720746f6b656e73206172652072657365727665640000006044820152606401610dd2565b600754600160a01b900460ff16156124625760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610dd2565b81600b546124709190613d11565b3410156124b45760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610dd2565b6000806124c0601c5490565b90506124cc338561369d565b60005b848110156125735781156125415760008286612710601154346124f29190613d11565b6124fc9190613cfd565b6125069190613cfd565b6125109190613cfd565b905061251c8382613d11565b6125269085613ccf565b9350806013600082825461253a9190613ccf565b9091555050505b8161254b8161420c565b601354600082815260176020526040902055925081905061256b8161420c565b9150506124cf565b5081601560008282546125869190613ccf565b9091555050600160065550505050565b6007546001600160a01b031633146125c05760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b01b198116600160b01b9182900460ff1615909102179055565b611d893383836136da565b6002600654141561260f5760405162461bcd60e51b8152600401610dd2906142ff565b6002600655600754600160b01b900460ff166126895760405162461bcd60e51b815260206004820152603360248201527f455243373231204d61726b6574706c6163653a204c697374696e6773206172656044820152720818dd5c9c995b9d1b1e48191a5cd8589b1959606a1b6064820152608401610dd2565b600081116126eb5760405162461bcd60e51b815260206004820152602960248201527f455243373231204d61726b6574706c6163653a20496e76616c6964206c697374604482015268696e6720707269636560b81b6064820152608401610dd2565b336126f583611dbc565b6001600160a01b03161461271b5760405162461bcd60e51b8152600401610dd29061444d565b600061272683612270565b509050801561278b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231204d61726b6574706c6163653a20546f6b656e20697320616c7260448201526a1958591e481b1a5cdd195960aa1b6064820152608401610dd2565b600060405180608001604052808581526020018481526020016127ab3390565b6001600160a01b03908116825242602092830152601b805460018101825560009190915283517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1600490920291820155918301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc283015560408301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc3830180546001600160a01b0319169190921617905560608201517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc4909101559050336001600160a01b0316847fda5118e11956b6ccec7a349074d6efada2b70b987d2eabba029de60d8f67b1aa85604051611b8291815260200190565b600260065414156128e95760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000806128fa83612270565b915091508161291b5760405162461bcd60e51b8152600401610dd290614336565b336001600160a01b0316601b8281548110612938576129386141f6565b60009182526020909120600260049092020101546001600160a01b0316146129725760405162461bcd60e51b8152600401610dd29061444d565b601b805461298290600190614227565b81548110612992576129926141f6565b9060005260206000209060040201601b82815481106129b3576129b36141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b805480612a1257612a1261437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560405184917fd61f1a8b7be6805af2e554cc25e9395d458bbd556fa7c01c166ffbd9197347de91a25050600160065550565b6007546001600160a01b03163314612aa75760405162461bcd60e51b8152600401610dd290614279565b8051611d8990600a906020840190613c20565b600080612ac683611bc4565b90506000805b8251811015610d7457612af7838281518110612aea57612aea6141f6565b6020026020010151611f41565b612b019083613ccf565b915080612b0d8161420c565b915050612acc565b6007546001600160a01b03163314612b3f5760405162461bcd60e51b8152600401610dd290614279565b6000612b4a601c5490565b90506000612b588234613cfd565b90506000612b668383613d11565b90508160136000828254612b7a9190613ccf565b925050819055508060156000828254612b939190613ccf565b90915550506040513481527ff47d3b5520326a887c3a79604ff206e16718a200fe11d7f3b555b2a4ddd93faa9060200160405180910390a1505050565b612bda33836133ec565b612bf65760405162461bcd60e51b8152600401610dd2906142ae565b612c028484848461366a565b50505050565b6000818152600260205260409020546060906001600160a01b0316612c875760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dd2565b600754600160a81b900460ff16612d2a5760088054612ca59061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054612cd19061423e565b8015612d1e5780601f10612cf357610100808354040283529160200191612d1e565b820191906000526020600020905b815481529060010190602001808311612d0157829003601f168201915b50505050509050919050565b6000612d346137a9565b90506000815111612d545760405180602001604052806000815250612d82565b80612d5e846137b8565b600a604051602001612d7293929190614498565b6040516020818303038152906040525b9392505050565b6007546001600160a01b03163314612db35760405162461bcd60e51b8152600401610dd290614279565b601155565b6007546001600160a01b03163314612de25760405162461bcd60e51b8152600401610dd290614279565b6000612df66007546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612e40576040519150601f19603f3d011682016040523d82523d6000602084013e612e45565b606091505b5050905080611d495760405162461bcd60e51b8152600401610dd290614393565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60026006541415612eb75760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000612ec782611dbc565b9050336001600160a01b03821614612ef15760405162461bcd60e51b8152600401610dd290614402565b6000612efc83611f41565b905060008111612f1e5760405162461bcd60e51b8152600401610dd2906143cb565b8060156000828254612f309190614227565b90915550506013546000848152601760205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114612f92576040519150601f19603f3d011682016040523d82523d6000602084013e612f97565b606091505b5050905080612fb85760405162461bcd60e51b8152600401610dd290614393565b6001836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156130765760008481526020908190206040805160808101825260048602909201805483526001808201548486015260028201546001600160a01b0316928401929092526003015460608301529083529092019101613019565b50505050905090565b6007546001600160a01b031633146130a95760405162461bcd60e51b8152600401610dd290614279565b6001600160a01b03811661310e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd2565b611d49816138b6565b6007546001600160a01b031633146131415760405162461bcd60e51b8152600401610dd290614279565b8281146131505761315061455c565b821580159061315e57508015155b61316a5761316a61455c565b6000805b828110156131be57838382818110613188576131886141f6565b905060200201602081019061319d9190614572565b6131aa9060ff1683613ccf565b9150806131b68161420c565b91505061316e565b50600c54816131cc601c5490565b6131d69190613ccf565b11156132205760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b60005b848110156132e957600084848381811061323f5761323f6141f6565b90506020020160208101906132549190614572565b905060005b8160ff168110156132d457613272601c80546001019055565b600061327d601c5490565b90506132af898986818110613294576132946141f6565b90506020020160208101906132a99190613d7f565b82613908565b60135460009182526017602052604090912055806132cc8161420c565b915050613259565b505080806132e19061420c565b915050613223565b505050505050565b6007546001600160a01b0316331461331b5760405162461bcd60e51b8152600401610dd290614279565b8051611d89906008906020840190613c20565b60006001600160e01b031982166380ac58cd60e01b148061335f57506001600160e01b03198216635b5e139f60e01b145b80610d1357506301ffc9a760e01b6001600160e01b0319831614610d13565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133b382611dbc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166134655760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b600061347083611dbc565b9050806001600160a01b0316846001600160a01b031614806134ab5750836001600160a01b03166134a084610ed4565b6001600160a01b0316145b806134bb57506134bb8185612e66565b949350505050565b826001600160a01b03166134d682611dbc565b6001600160a01b03161461353a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dd2565b6001600160a01b03821661359c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dd2565b6135a7838383613922565b6135b260008261337e565b6001600160a01b03831660009081526003602052604081208054600192906135db908490614227565b90915550506001600160a01b0382166000908152600360205260408120805460019290613609908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6136758484846134c3565b613681848484846139a1565b612c025760405162461bcd60e51b8152600401610dd290614595565b60005b8181101561107a576136b6601c80546001019055565b6136c8836136c3601c5490565b613908565b806136d28161420c565b9150506136a0565b816001600160a01b0316836001600160a01b0316141561373c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dd2565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060098054610e069061423e565b6060816137dc5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561380657806137f08161420c565b91506137ff9050600a83613cfd565b91506137e0565b60008167ffffffffffffffff81111561382157613821613eea565b6040519080825280601f01601f19166020018201604052801561384b576020820181803683370190505b5090505b84156134bb57613860600183614227565b915061386d600a866145e7565b613878906030613ccf565b60f81b81838151811061388d5761388d6141f6565b60200101906001600160f81b031916908160001a9053506138af600a86613cfd565b945061384f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611d89828260405180602001604052806000815250613a9f565b600061392d82612270565b509050801561399c5760405162461bcd60e51b815260206004820152603560248201527f455243373231204d61726b6574706c6163653a20556e61626c6520746f20747260448201527430b739b332b91030903634b9ba32b2103a37b5b2b760591b6064820152608401610dd2565b612c02565b60006001600160a01b0384163b15613a9457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906139e59033908990889088906004016145fb565b6020604051808303816000875af1925050508015613a20575060408051601f3d908101601f19168201909252613a1d91810190614638565b60015b613a7a573d808015613a4e576040519150601f19603f3d011682016040523d82523d6000602084013e613a53565b606091505b508051613a725760405162461bcd60e51b8152600401610dd290614595565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506134bb565b506001949350505050565b613aa98383613ad2565b613ab660008484846139a1565b61107a5760405162461bcd60e51b8152600401610dd290614595565b6001600160a01b038216613b285760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dd2565b6000818152600260205260409020546001600160a01b031615613b8d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dd2565b613b9960008383613922565b6001600160a01b0382166000908152600360205260408120805460019290613bc2908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054613c2c9061423e565b90600052602060002090601f016020900481019282613c4e5760008555613c94565b82601f10613c6757805160ff1916838001178555613c94565b82800160010185558215613c94579182015b82811115613c94578251825591602001919060010190613c79565b50613ca0929150613ca4565b5090565b5b80821115613ca05760008155600101613ca5565b634e487b7160e01b600052601160045260246000fd5b60008219821115613ce257613ce2613cb9565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613d0c57613d0c613ce7565b500490565b6000816000190483118215151615613d2b57613d2b613cb9565b500290565b6001600160e01b031981168114611d4957600080fd5b600060208284031215613d5857600080fd5b8135612d8281613d30565b80356001600160a01b0381168114613d7a57600080fd5b919050565b600060208284031215613d9157600080fd5b612d8282613d63565b600060208284031215613dac57600080fd5b5035919050565b60005b83811015613dce578181015183820152602001613db6565b83811115612c025750506000910152565b60008151808452613df7816020860160208601613db3565b601f01601f19169290920160200192915050565b602081526000612d826020830184613ddf565b60008060408385031215613e3157600080fd5b613e3a83613d63565b946020939093013593505050565b600080600060608486031215613e5d57600080fd5b613e6684613d63565b9250613e7460208501613d63565b9150604084013590509250925092565b60008060408385031215613e9757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613ede57835183529284019291840191600101613ec2565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115613f1b57613f1b613eea565b604051601f8501601f19908116603f01168101908282118183101715613f4357613f43613eea565b81604052809350858152868686011115613f5c57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613f8857600080fd5b813567ffffffffffffffff811115613f9f57600080fd5b8201601f81018413613fb057600080fd5b6134bb84823560208401613f00565b60008060408385031215613fd257600080fd5b613fdb83613d63565b915061111b60208401613d63565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610d13565b6000806040838503121561403057600080fd5b61403983613d63565b91506020830135801515811461404e57600080fd5b809150509250929050565b6000806000806080858703121561406f57600080fd5b61407885613d63565b935061408660208601613d63565b925060408501359150606085013567ffffffffffffffff8111156140a957600080fd5b8501601f810187136140ba57600080fd5b6140c987823560208401613f00565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015613ede5761412b83855180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b92840192608092909201916001016140f1565b60008083601f84011261415057600080fd5b50813567ffffffffffffffff81111561416857600080fd5b6020830191508360208260051b850101111561418357600080fd5b9250929050565b600080600080604085870312156141a057600080fd5b843567ffffffffffffffff808211156141b857600080fd5b6141c48883890161413e565b909650945060208701359150808211156141dd57600080fd5b506141ea8782880161413e565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561422057614220613cb9565b5060010190565b60008282101561423957614239613cb9565b500390565b600181811c9082168061425257607f821691505b6020821081141561427357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526027908201527f455243373231204d61726b6574706c6163653a20546f6b656e206973206e6f74604082015266081b1a5cdd195960ca1b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6020808252602a90820152600080516020614656833981519152604082015269736665722066756e647360b01b606082015260800190565b6020808252601a908201527f596f7520646f6e2774206861766520616e792072657761726473000000000000604082015260600190565b6020808252602b908201527f4f6e6c7920746865206f776e6572206f66206120746f6b656e2063616e20636c60408201526a61696d207265776172647360a81b606082015260800190565b6020808252602b908201527f455243373231204d61726b6574706c6163653a2043616c6c6572206973206e6f60408201526a3a103a34329037bbb732b960a91b606082015260800190565b6000845160206144ab8285838a01613db3565b8551918401916144be8184848a01613db3565b8554920191600090600181811c90808316806144db57607f831692505b8583108114156144f957634e487b7160e01b85526022600452602485fd5b80801561450d576001811461451e5761454b565b60ff1985168852838801955061454b565b60008b81526020902060005b858110156145435781548a82015290840190880161452a565b505083880195505b50939b9a5050505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561458457600080fd5b813560ff81168114612d8257600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826145f6576145f6613ce7565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061462e90830184613ddf565b9695505050505050565b60006020828403121561464a57600080fd5b8151612d8281613d3056fe41564158205472616e73616374696f6e3a204661696c656420746f207472616ea2646970667358221220231cfdd045f4645ddf8d5ffcdc4d6bf17dfb7d7add3fff60b2a9098ae989e60464736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d5731337876337974445175697a647251425241586836546b51764d5558797131633941375167633378333239000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d5731337876337974445175697a647251425241586836546b51764d5558797131633941375167633378333239000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _initUnrevealedURI (string): QmW13xv3ytDQuizdrQBRAXh6TkQvMUXyq1c9A7Qgc3x329
Arg [1] : _initCommunityAddress (address): 0x4057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : _initDonationAddress (address): 0x1070aa92aa80d0bdf14692352726bc22cd8d9130

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : 0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130
Arg [3] : 000000000000000000000000000000000000000000000000000000000000002e
Arg [4] : 516d5731337876337974445175697a647251425241586836546b51764d555879
Arg [5] : 7131633941375167633378333239000000000000000000000000000000000000


Deployed ByteCode Sourcemap

12214:16168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27962:21;27986:16;:6;1612:14;;1527:104;27986:16;28013:33;;27962:40;;-1:-1:-1;;;;28013:33:0;;;;:41;;28050:4;28013:41;:62;;;;;28074:1;28058:13;:17;28013:62;28009:366;;;28083:34;28176:13;28161:12;;28148:9;;28133:12;;:24;;;;:::i;:::-;28120:38;;:9;:38;:::i;:::-;:53;;;;:::i;:::-;:69;;;;:::i;:::-;28083:106;-1:-1:-1;28195:24:0;28222:42;28251:13;28083:106;28222:42;:::i;:::-;28195:69;;28293:26;28272:17;;:47;;;;;;;:::i;:::-;;;;;;;;28353:16;28327:22;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;28009:366:0;27957:422;12214:16168;;;;;14448:189;;;;;;;;;;-1:-1:-1;14448:189:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;14448:189:0;;;;;;;;25126:285;;;;;;;;;;-1:-1:-1;25126:285:0;;;;;:::i;:::-;;:::i;:::-;;;1802:25:1;;;1790:2;1775:18;25126:285:0;1656:177:1;25645:227:0;;;;;;;;;;-1:-1:-1;25645:227:0;;;;;:::i;:::-;;:::i;6513:90::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16546:146::-;;;;;;;;;;;;;:::i;:::-;;7467:205;;;;;;;;;;-1:-1:-1;7467:205:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2938:32:1;;;2920:51;;2908:2;2893:18;7467:205:0;2774:203:1;7115:347:0;;;;;;;;;;-1:-1:-1;7115:347:0;;;;;:::i;:::-;;:::i;12568:19::-;;;;;;;;;;;;;;;;24192:85;;;;;;;;;;;;;:::i;26293:99::-;;;;;;;;;;-1:-1:-1;26293:99:0;;;;;:::i;:::-;;:::i;12746:26::-;;;;;;;;;;;;;;;;7987:284;;;;;;;;;;-1:-1:-1;7987:284:0;;;;;:::i;:::-;;:::i;12807:31::-;;;;;;;;;;;;;;;;20612:223;;;;;;;;;;-1:-1:-1;20612:223:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4019:32:1;;;4001:51;;4083:2;4068:18;;4061:34;;;;3974:18;20612:223:0;3827:274:1;26783:87:0;;;;;;;;;;-1:-1:-1;26783:87:0;;;;;:::i;:::-;;:::i;12654:33::-;;;;;;;;;;;;;;;;21877:1315;;;;;;:::i;:::-;;:::i;19275:753::-;;;;;;;;;;;;;:::i;18042:627::-;;;:::i;8276:142::-;;;;;;;;;;-1:-1:-1;8276:142:0;;;;;:::i;:::-;;:::i;18674:596::-;;;;;;:::i;:::-;;:::i;26875:77::-;;;;;;;;;;-1:-1:-1;26875:77:0;;;;;:::i;:::-;;:::i;24282:551::-;;;;;;;;;;-1:-1:-1;24282:551:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26509:75::-;;;;;;;;;;-1:-1:-1;26509:75:0;;;;;:::i;:::-;;:::i;12619:29::-;;;;;;;;;;;;;;;;26957:103;;;;;;;;;;-1:-1:-1;26957:103:0;;;;;:::i;:::-;;:::i;16697:117::-;;;;;;;;;;-1:-1:-1;16697:117:0;;;;;:::i;:::-;;:::i;12429:45::-;;;;;;;;;;-1:-1:-1;12429:45:0;;;;-1:-1:-1;;;12429:45:0;;;;;;12376:20;;;;;;;;;;-1:-1:-1;12376:20:0;;;;-1:-1:-1;;;12376:20:0;;;;;;25879:93;;;;;;;;;;-1:-1:-1;25879:93:0;;;;;:::i;:::-;;:::i;26685:::-;;;;;;;;;;-1:-1:-1;26685:93:0;;;;;:::i;:::-;;:::i;12354:18::-;;;;;;;;;;-1:-1:-1;12354:18:0;;;;-1:-1:-1;;;12354:18:0;;;;;;6287:221;;;;;;;;;;-1:-1:-1;6287:221:0;;;;;:::i;:::-;;:::i;26199:89::-;;;;;;;;;;-1:-1:-1;26199:89:0;;;;;:::i;:::-;;:::i;6088:194::-;;;;;;;;;;-1:-1:-1;6088:194:0;;;;;:::i;:::-;;:::i;27175:193::-;;;;;;;;;;-1:-1:-1;27175:193:0;;;;;:::i;:::-;;:::i;25416:224::-;;;;;;;;;;-1:-1:-1;25416:224:0;;;;;:::i;:::-;;:::i;23545:255::-;;;;;;;;;;-1:-1:-1;23545:255:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16819:622::-;;;:::i;27065:105::-;;;;;;;;;;-1:-1:-1;27065:105:0;;;;;:::i;:::-;;:::i;4169:77::-;;;;;;;;;;-1:-1:-1;4235:6:0;;-1:-1:-1;;;;;4235:6:0;4169:77;;26397:107;;;;;;;;;;-1:-1:-1;26397:107:0;;;;;:::i;:::-;;:::i;16375:70::-;;;;;;;;;;;;;:::i;6608:94::-;;;;;;;;;;;;;:::i;23197:252::-;;;;;;;;;;-1:-1:-1;23197:252:0;;;;;:::i;:::-;;:::i;:::-;;;;6969:14:1;;6962:22;6944:41;;7016:2;7001:18;;6994:34;;;;6917:18;23197:252:0;6776:258:1;14644:1014:0;;;;;;:::i;:::-;;:::i;12400:25::-;;;;;;;;;;-1:-1:-1;12400:25:0;;;;-1:-1:-1;;;12400:25:0;;;;;;16450:91;;;;;;;;;;;;;:::i;7677:146::-;;;;;;;;;;-1:-1:-1;7677:146:0;;;;;:::i;:::-;;:::i;20840:603::-;;;;;;;;;;-1:-1:-1;20840:603:0;;;;;:::i;:::-;;:::i;21448:424::-;;;;;;;;;;-1:-1:-1;21448:424:0;;;;;:::i;:::-;;:::i;26099:95::-;;;;;;;;;;-1:-1:-1;26099:95:0;;;;;:::i;:::-;;:::i;24838:283::-;;;;;;;;;;-1:-1:-1;24838:283:0;;;;;:::i;:::-;;:::i;20247:358::-;;;:::i;8423:272::-;;;;;;;;;;-1:-1:-1;8423:272:0;;;;;:::i;:::-;;:::i;12842:32::-;;;;;;;;;;;;;;;;23805:382;;;;;;;;;;-1:-1:-1;23805:382:0;;;;;:::i;:::-;;:::i;12591:24::-;;;;;;;;;;;;;;;;26589:91;;;;;;;;;;-1:-1:-1;26589:91:0;;;;;:::i;:::-;;:::i;20033:209::-;;;:::i;12878:36::-;;;;;;;;;;;;;;;;12918:37;;;;;;;;;;;;;;;;12776:27;;;;;;;;;;;;;;;;7828:154;;;;;;;;;;-1:-1:-1;7828:154:0;;;;;:::i;:::-;;:::i;12693:24::-;;;;;;;;;;;;;;;;17446:591;;;;;;:::i;:::-;;:::i;23454:86::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4363:188::-;;;;;;;;;;-1:-1:-1;4363:188:0;;;;;:::i;:::-;;:::i;15663:705::-;;;;;;;;;;-1:-1:-1;15663:705:0;;;;;:::i;:::-;;:::i;12721:19::-;;;;;;;;;;;;;;;;25977:117;;;;;;;;;;-1:-1:-1;25977:117:0;;;;;:::i;:::-;;:::i;14448:189::-;14524:4;-1:-1:-1;;;;;;14542:50:0;;-1:-1:-1;;;14542:50:0;;:90;;;14596:36;14620:11;14596:23;:36::i;:::-;14535:97;14448:189;-1:-1:-1;;14448:189:0:o;25126:285::-;25198:7;25212:23;25238;25252:8;25238:13;:23::i;:::-;25212:49;;25266:13;25295:9;25290:98;25314:6;:13;25310:1;:17;25290:98;;;25349:33;25372:6;25379:1;25372:9;;;;;;;;:::i;:::-;;;;;;;25349:22;:33::i;:::-;25340:42;;;;:::i;:::-;;-1:-1:-1;25329:3:0;;;;:::i;:::-;;;;25290:98;;;-1:-1:-1;25401:5:0;25126:285;-1:-1:-1;;;25126:285:0:o;25645:227::-;25714:7;25756;25736:16;:6;1612:14;;1527:104;25736:16;:27;;25728:67;;;;-1:-1:-1;;;25728:67:0;;10393:2:1;25728:67:0;;;10375:21:1;10432:2;10412:18;;;10405:30;10471:29;10451:18;;;10444:57;10518:18;;25728:67:0;;;;;;;;;25829:38;;;;:29;:38;;;;;;25809:17;;:58;;25829:38;25809:58;:::i;6513:90::-;6566:13;6593:5;6586:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6513:90;:::o;16546:146::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16654:33:::1;::::0;;-1:-1:-1;;;;16617:70:0;::::1;-1:-1:-1::0;;;16654:33:0;;;::::1;;;16653:34;16617:70:::0;;::::1;;::::0;;16546:146::o;7467:205::-;7542:7;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;7556:73;;;;-1:-1:-1;;;7556:73:0;;11625:2:1;7556:73:0;;;11607:21:1;11664:2;11644:18;;;11637:30;11703:34;11683:18;;;11676:62;-1:-1:-1;;;11754:18:1;;;11747:42;11806:19;;7556:73:0;11423:408:1;7556:73:0;-1:-1:-1;7643:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;7643:24:0;;7467:205::o;7115:347::-;7190:13;7206:23;7221:7;7206:14;:23::i;:::-;7190:39;;7248:5;-1:-1:-1;;;;;7242:11:0;:2;-1:-1:-1;;;;;7242:11:0;;;7234:57;;;;-1:-1:-1;;;7234:57:0;;12038:2:1;7234:57:0;;;12020:21:1;12077:2;12057:18;;;12050:30;12116:34;12096:18;;;12089:62;-1:-1:-1;;;12167:18:1;;;12160:31;12208:19;;7234:57:0;11836:397:1;7234:57:0;3828:10;-1:-1:-1;;;;;7306:21:0;;;;:62;;-1:-1:-1;7331:37:0;7348:5;3828:10;7828:154;:::i;7331:37::-;7298:131;;;;-1:-1:-1;;;7298:131:0;;12440:2:1;7298:131:0;;;12422:21:1;12479:2;12459:18;;;12452:30;12518:34;12498:18;;;12491:62;12589:26;12569:18;;;12562:54;12633:19;;7298:131:0;12238:420:1;7298:131:0;7436:21;7445:2;7449:7;7436:8;:21::i;:::-;7185:277;7115:347;;:::o;24192:85::-;24235:7;24256:16;:6;1612:14;;1527:104;24256:16;24249:23;;24192:85;:::o;26293:99::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26361:14:::1;:26:::0;26293:99::o;7987:284::-;8136:41;3828:10;8169:7;8136:18;:41::i;:::-;8128:103;;;;-1:-1:-1;;;8128:103:0;;;;;;;:::i;:::-;8238:28;8248:4;8254:2;8258:7;8238:9;:28::i;20612:223::-;20793:12;;20781:9;;20744:4;;20679:16;;13401:5;;20781:24;;;:::i;:::-;20772:34;;:5;:34;:::i;:::-;:58;;;;:::i;:::-;20756:74;;20612:223;;;;;:::o;26783:87::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26845:9:::1;:20:::0;26783:87::o;21877:1315::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;21952:13:::1;::::0;21991:22:::1;22005:7:::0;21991:13:::1;:22::i;:::-;21951:62;;;;22026:8;22018:60;;;;-1:-1:-1::0;;;22018:60:0::1;;;;;;;:::i;:::-;22085:22;22110:8;22119:12;22110:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;22085:47:::1;::::0;;::::1;::::0;::::1;::::0;;22110:22:::1;::::0;;::::1;::::0;;::::1;22085:47:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;22085:47:0::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;22165:12:0::1;3828:10:::0;;3755:88;22165:12:::1;-1:-1:-1::0;;;;;22147:30:0::1;:7;:14;;;-1:-1:-1::0;;;;;22147:30:0::1;;;22139:110;;;::::0;-1:-1:-1;;;22139:110:0;;14051:2:1;22139:110:0::1;::::0;::::1;14033:21:1::0;14090:2;14070:18;;;14063:30;14129:34;14109:18;;;14102:62;14200:34;14180:18;;;14173:62;-1:-1:-1;;;14251:19:1;;;14244:34;14295:19;;22139:110:0::1;13849:471:1::0;22139:110:0::1;22275:7;:13;;;22262:9;:26;;22254:77;;;::::0;-1:-1:-1;;;22254:77:0;;14527:2:1;22254:77:0::1;::::0;::::1;14509:21:1::0;14566:2;14546:18;;;14539:30;14605:34;14585:18;;;14578:62;-1:-1:-1;;;14656:18:1;;;14649:36;14702:19;;22254:77:0::1;14325:402:1::0;22254:77:0::1;22338:22;13401:5;22375:9;;22363;:21;;;;:::i;:::-;:45;;;;:::i;:::-;22338:70;;22413:34;22521:1;22502:16;:6;1612:14:::0;;1527:104;22502:16:::1;:20;;;;:::i;:::-;13401:5;22462:12;;22450:9;:24;;;;:::i;:::-;:48;;;;:::i;:::-;:73;;;;:::i;:::-;22413:110;;22528:24;22604:1;22585:16;:6;1612:14:::0;;1527:104;22585:16:::1;:20;;;;:::i;:::-;22555:51;::::0;:26;:51:::1;:::i;:::-;22640:8;22649:15:::0;;22528:78;;-1:-1:-1;22640:8:0;22649:19:::1;::::0;22667:1:::1;::::0;22649:19:::1;:::i;:::-;22640:29;;;;;;;;:::i;:::-;;;;;;;;;;;22615:8;22624:12;22615:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;22615:54:0::1;-1:-1:-1::0;;;;;22615:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;22674:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;22674:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;22674:14:0::1;::::0;;::::1;;::::0;;;;;22697:17:::1;:47:::0;;22718:26;;22674:14;22697:47:::1;::::0;22718:26;;22697:47:::1;:::i;:::-;::::0;;;-1:-1:-1;;22749:38:0::1;::::0;;;:29:::1;:38;::::0;;;;:68;;22791:26;;22749:38;:68:::1;::::0;22791:26;;22749:68:::1;:::i;:::-;;;;;;;;22850:16;22824:22;;:42;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;3828:10:0;;-1:-1:-1;;;;;;22880:59:0::1;22899:7;:14;;;-1:-1:-1::0;;;;;22880:59:0::1;22890:7;22880:59;22929:9;22880:59;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;22880:59:0::1;;;;;;;;22948:56;22962:7;:14;;;22978:12;3828:10:::0;;3755:88;22978:12:::1;22992:7;22948:56;;;;;;;;;;;::::0;:13:::1;:56::i;:::-;23038:14;::::0;::::1;::::0;23012:12:::1;::::0;-1:-1:-1;;;;;23030:28:0::1;23080:33;23097:16:::0;23080:14;:33:::1;:::i;:::-;23067:47;::::0;:9:::1;:47;:::i;:::-;23030:90;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23011:109;;;23133:7;23125:62;;;;-1:-1:-1::0;;;23125:62:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;;;;;;21877:1315:0:o;19275:753::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;19317:20:::1;19364:22;;19340:21;;:46;;;;:::i;:::-;19317:69:::0;-1:-1:-1;19391:25:0::1;19465:3;19420:36;19317:69:::0;19420:21:::1;:36;:::i;:::-;19419:43;::::0;19460:2:::1;19419:43;:::i;:::-;:49;;;;:::i;:::-;19503:16;::::0;19391:77;;-1:-1:-1;19476:13:0::1;::::0;-1:-1:-1;;;;;19503:16:0::1;19534:21;19391:77:::0;19554:1:::1;19534:21;:::i;:::-;19495:66;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19475:86;;;19574:8;19566:84;;;::::0;-1:-1:-1;;;19566:84:0;;15687:2:1;19566:84:0::1;::::0;::::1;15669:21:1::0;15726:2;15706:18;;;15699:30;-1:-1:-1;;;;;;;;;;;15745:18:1;;;15738:62;15836:33;15816:18;;;15809:61;15887:19;;19566:84:0::1;15485:427:1::0;19566:84:0::1;19685:15;::::0;19677:61:::1;::::0;19658:13:::1;::::0;-1:-1:-1;;;;;19685:15:0::1;::::0;19715:17;;19658:13;19677:61;19658:13;19677:61;19715:17;19685:15;19677:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19657:81;;;19751:8;19743:83;;;::::0;-1:-1:-1;;;19743:83:0;;16119:2:1;19743:83:0::1;::::0;::::1;16101:21:1::0;16158:2;16138:18;;;16131:30;-1:-1:-1;;;;;;;;;;;16177:18:1;;;16170:62;16268:32;16248:18;;;16241:60;16318:19;;19743:83:0::1;15917:426:1::0;19743:83:0::1;19834:13;19861:7;4235:6:::0;;-1:-1:-1;;;;;4235:6:0;;4169:77;19861:7:::1;-1:-1:-1::0;;;;;19853:21:0::1;19923:4;;19908:12;:19;;;;:::i;:::-;19883:45;::::0;:21:::1;:45;:::i;:::-;19853:81;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19833:101;;;19947:8;19939:84;;;::::0;-1:-1:-1;;;19939:84:0;;16550:2:1;19939:84:0::1;::::0;::::1;16532:21:1::0;16589:2;16569:18;;;16562:30;-1:-1:-1;;;;;;;;;;;16608:18:1;;;16601:62;16699:33;16679:18;;;16672:61;16750:19;;19939:84:0::1;16348:427:1::0;19939:84:0::1;19312:716;;;;;19275:753::o:0;18042:627::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;18104:14:::1;18121:38;3828:10:::0;25126:285;:::i;18121:38::-:1;18104:55;;18181:1;18172:6;:10;18164:49;;;;-1:-1:-1::0;;;18164:49:0::1;;;;;;;:::i;:::-;18222:23;18248:27;3828:10:::0;24282:551;:::i;18248:27::-:1;18222:53;;18287:9;18282:149;18306:6;:13;18302:1;:17;18282:149;;;18332:15;18350:6;18357:1;18350:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;18408:17:::1;::::0;18367:38:::1;::::0;;;:29:::1;:38:::0;;;;;;:58;-1:-1:-1;18321:3:0;::::1;::::0;::::1;:::i;:::-;;;;18282:149;;;;18463:6;18437:22;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;18497:47:0::1;::::0;18479:12:::1;::::0;3828:10;;18532:6;;18479:12;18497:47;18479:12;18497:47;18532:6;3828:10;18497:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18478:66;;;18557:7;18549:62;;;;-1:-1:-1::0;;;18549:62:0::1;;;;;;;:::i;:::-;18662:1;3828:10:::0;18640:12:::1;-1:-1:-1::0;;;;;18625:39:0::1;;18654:6;18625:39;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;18625:39:0::1;;;;;;;;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;18042:627:0:o;8276:142::-;8374:39;8391:4;8397:2;8401:7;8374:39;;;;;;;;;;;;:16;:39::i;18674:596::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;18757:13:::1;18773:16;18781:7:::0;18773::::1;:16::i;:::-;18757:32:::0;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;18802:21:0;::::1;;18794:77;;;;-1:-1:-1::0;;;18794:77:0::1;;;;;;;:::i;:::-;18878:14;18895:31;18918:7;18895:22;:31::i;:::-;18878:48;;18948:1;18939:6;:10;18931:49;;;;-1:-1:-1::0;;;18931:49:0::1;;;;;;;:::i;:::-;19015:6;18989:22;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;19067:17:0::1;::::0;19026:38:::1;::::0;;;:29:::1;:38;::::0;;;;;:58;;;;19112:40;;-1:-1:-1;;;;;19112:19:0;::::1;::::0;19140:6;;19026:38;19112:40;19026:38;19112:40;19140:6;19112:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19093:59;;;19165:7;19157:62;;;;-1:-1:-1::0;;;19157:62:0::1;;;;;;;:::i;:::-;19263:1;19248:5;-1:-1:-1::0;;;;;19233:32:0::1;;19255:6;19233:32;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;19233:32:0::1;;;;;;;;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;;18674:596:0:o;26875:77::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26932:4:::1;:15:::0;26875:77::o;24282:551::-;24343:16;24366:23;24392:19;24402:8;24392:9;:19::i;:::-;24366:45;;24418:30;24465:15;24451:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24451:30:0;-1:-1:-1;24418:63:0;-1:-1:-1;24511:1:0;24490:18;24551:249;24576:15;24558;:33;:60;;;;;24609:9;;24595:10;:23;;24558:60;24551:249;;;24626:13;24642:19;24650:10;24642:7;:19::i;:::-;24626:35;;24682:8;-1:-1:-1;;;;;24673:17:0;:5;-1:-1:-1;;;;;24673:17:0;;24669:106;;;24732:10;24699:13;24713:15;24699:30;;;;;;;;:::i;:::-;;;;;;;;;;:43;24751:17;;;;:::i;:::-;;;;24669:106;24782:12;;;;:::i;:::-;;;;24620:180;24551:249;;;-1:-1:-1;24815:13:0;;24282:551;-1:-1:-1;;;;24282:551:0:o;26509:75::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26565:4:::1;:14:::0;26509:75::o;26957:103::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27027:16:::1;:28:::0;26957:103::o;16697:117::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16763:8:::1;:15:::0;;-1:-1:-1;;;;16763:15:0::1;-1:-1:-1::0;;;16763:15:0::1;::::0;;16785:24:::1;16796:12:::0;16785:10:::1;:24::i;:::-;16697:117:::0;:::o;25879:93::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;25947:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;;25879:93:::0;:::o;26685:::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26750:12:::1;:23:::0;26685:93::o;6287:221::-;6358:7;6388:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6388:16:0;6419:19;6411:73;;;;-1:-1:-1;;;6411:73:0;;17749:2:1;6411:73:0;;;17731:21:1;17788:2;17768:18;;;17761:30;17827:34;17807:18;;;17800:62;-1:-1:-1;;;17878:18:1;;;17871:39;17927:19;;6411:73:0;17547:405:1;26199:89:0;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26262:9:::1;:21:::0;26199:89::o;6088:194::-;6159:7;-1:-1:-1;;;;;6181:19:0;;6173:74;;;;-1:-1:-1;;;6173:74:0;;18159:2:1;6173:74:0;;;18141:21:1;18198:2;18178:18;;;18171:30;18237:34;18217:18;;;18210:62;-1:-1:-1;;;18288:18:1;;;18281:40;18338:19;;6173:74:0;17957:406:1;6173:74:0;-1:-1:-1;;;;;;6261:16:0;;;;;:9;:16;;;;;;;6088:194::o;27175:193::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27284:16:::1;:38:::0;;-1:-1:-1;;;;;27284:38:0;;::::1;-1:-1:-1::0;;;;;;27284:38:0;;::::1;;::::0;;;27327:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;27175:193::o;25416:224::-;25484:7;25526;25506:16;:6;1612:14;;1527:104;25506:16;:27;;25498:67;;;;-1:-1:-1;;;25498:67:0;;10393:2:1;25498:67:0;;;10375:21:1;10432:2;10412:18;;;10405:30;10471:29;10451:18;;;10444:57;10518:18;;25498:67:0;10191:351:1;25498:67:0;25598:37;;;;:28;:37;;;;;;25579:16;;:56;;25598:37;25579:56;:::i;23545:255::-;23611:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23611:14:0;23633:13;23648:20;23672:22;23686:7;23672:13;:22::i;:::-;23632:62;;;;23707:8;23699:60;;;;-1:-1:-1;;;23699:60:0;;;;;;;:::i;:::-;23773:8;23782:12;23773:22;;;;;;;;:::i;:::-;;;;;;;;;;23766:29;;;;;;;;23773:22;;;;;;;23766:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23766:29:0;;;;;;;;;;;;;;;23545:255;-1:-1:-1;;;;23545:255:0:o;16819:622::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;16880:14:::1;16897:37;3828:10:::0;24838:283;:::i;16897:37::-:1;16880:54;;16956:1;16947:6;:10;16939:49;;;;-1:-1:-1::0;;;16939:49:0::1;;;;;;;:::i;:::-;16997:23;17023:27;3828:10:::0;24282:551;:::i;17023:27::-:1;16997:53;;17062:9;17057:147;17081:6;:13;17077:1;:17;17057:147;;;17107:15;17125:6;17132:1;17125:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;17182:16:::1;::::0;17142:37:::1;::::0;;;:28:::1;:37:::0;;;;;;:56;-1:-1:-1;17096:3:0;::::1;::::0;::::1;:::i;:::-;;;;17057:147;;;;17235:6;17210:21;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17269:47:0::1;::::0;17251:12:::1;::::0;3828:10;;17304:6;;17251:12;17269:47;17251:12;17269:47;17304:6;3828:10;17269:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17250:66;;;17329:7;17321:62;;;;-1:-1:-1::0;;;17321:62:0::1;;;;;;;:::i;:::-;17434:1;3828:10:::0;17412:12:::1;3755:88:::0;27065:105;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27136:17:::1;:29:::0;27065:105::o;26397:107::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26469:18:::1;:30:::0;26397:107::o;16375:70::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16434:6:::1;::::0;;-1:-1:-1;;;;16424:16:0;::::1;-1:-1:-1::0;;;16434:6:0;;;::::1;;;16433:7;16424:16:::0;;::::1;;::::0;;16375:70::o;6608:94::-;6663:13;6690:7;6683:14;;;;;:::i;23197:252::-;23257:13;23272;23297:9;23292:153;23316:8;:15;23312:19;;23292:153;;;23371:7;23348:8;23357:1;23348:11;;;;;;;;:::i;:::-;;;;;;;;;;;:19;;;:30;23344:44;;23380:8;;23344:44;23407:4;23396:15;;23425:1;23417:9;;23434:5;;23292:153;23333:3;;;;:::i;:::-;;;;23292:153;;;;23197:252;;;:::o;14644:1014::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;14715:10;;;;;:42:::1;;;14739:18;;14729:6;:28;;14715:42;14707:74;;;::::0;-1:-1:-1;;;14707:74:0;;18570:2:1;14707:74:0::1;::::0;::::1;18552:21:1::0;18609:2;18589:18;;;18582:30;-1:-1:-1;;;18628:18:1;;;18621:49;18687:18;;14707:74:0::1;18368:343:1::0;14707:74:0::1;14788:17;14827:6;14808:16;:6;1612:14:::0;;1527:104;14808:16:::1;:25;;;;:::i;:::-;14788:45;;14861:9;;14848;:22;;14840:60;;;::::0;-1:-1:-1;;;14840:60:0;;18918:2:1;14840:60:0::1;::::0;::::1;18900:21:1::0;18957:2;18937:18;;;18930:30;-1:-1:-1;;;18976:18:1;;;18969:55;19041:18;;14840:60:0::1;18716:349:1::0;14840:60:0::1;14938:14;;14926:9;;:26;;;;:::i;:::-;14913:9;:39;;14905:81;;;::::0;-1:-1:-1;;;14905:81:0;;19272:2:1;14905:81:0::1;::::0;::::1;19254:21:1::0;19311:2;19291:18;;;19284:30;19350:31;19330:18;;;19323:59;19399:18;;14905:81:0::1;19070:353:1::0;14905:81:0::1;15002:6;::::0;-1:-1:-1;;;15002:6:0;::::1;;;15001:7;14993:37;;;::::0;-1:-1:-1;;;14993:37:0;;19630:2:1;14993:37:0::1;::::0;::::1;19612:21:1::0;19669:2;19649:18;;;19642:30;-1:-1:-1;;;19688:18:1;;;19681:47;19745:18;;14993:37:0::1;19428:341:1::0;14993:37:0::1;15063:6;15056:4;;:13;;;;:::i;:::-;15043:9;:26;;15035:57;;;::::0;-1:-1:-1;;;15035:57:0;;19976:2:1;15035:57:0::1;::::0;::::1;19958:21:1::0;20015:2;19995:18;;;19988:30;-1:-1:-1;;;20034:18:1;;;20027:48;20092:18;;15035:57:0::1;19774:342:1::0;15035:57:0::1;15101:23;15133:18:::0;15154:16:::1;:6;1612:14:::0;;1527:104;15154:16:::1;15133:37:::0;-1:-1:-1;15177:31:0::1;3828:10:::0;15201:6:::1;15177:9;:31::i;:::-;15222:9;15217:390;15241:6;15237:1;:10;15217:390;;;15264:14:::0;;15260:257:::1;;15287:33;15382:10;15373:6;13401:5;15335:11;;15323:9;:23;;;;:::i;:::-;:47;;;;:::i;:::-;:56;;;;:::i;:::-;:69;;;;:::i;:::-;15287:105:::0;-1:-1:-1;15420:38:0::1;15448:10:::0;15287:105;15420:38:::1;:::i;:::-;15401:57;::::0;;::::1;:::i;:::-;;;15485:25;15465:16;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;15260:257:0::1;15524:12:::0;::::1;::::0;::::1;:::i;:::-;15585:16;::::0;15542:40:::1;::::0;;;:28:::1;:40;::::0;;;;:59;15524:12;-1:-1:-1;15249:3:0;;-1:-1:-1;15249:3:0::1;::::0;::::1;:::i;:::-;;;;15217:390;;;;15638:15;15613:21;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4815:1:0;5077:7;:22;-1:-1:-1;;;;14644:1014:0:o;16450:91::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16523:13:::1;::::0;;-1:-1:-1;;;;16506:30:0;::::1;-1:-1:-1::0;;;16523:13:0;;;::::1;;;16522:14;16506:30:::0;;::::1;;::::0;;16450:91::o;7677:146::-;7766:52;3828:10;7799:8;7809;7766:18;:52::i;20840:603::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;20928:13:::1;::::0;-1:-1:-1;;;20928:13:0;::::1;;;20920:77;;;::::0;-1:-1:-1;;;20920:77:0;;20323:2:1;20920:77:0::1;::::0;::::1;20305:21:1::0;20362:2;20342:18;;;20335:30;20401:34;20381:18;;;20374:62;-1:-1:-1;;;20452:18:1;;;20445:49;20511:19;;20920:77:0::1;20121:415:1::0;20920:77:0::1;21018:1;21010:5;:9;21002:63;;;::::0;-1:-1:-1;;;21002:63:0;;20743:2:1;21002:63:0::1;::::0;::::1;20725:21:1::0;20782:2;20762:18;;;20755:30;20821:34;20801:18;;;20794:62;-1:-1:-1;;;20872:18:1;;;20865:39;20921:19;;21002:63:0::1;20541:405:1::0;21002:63:0::1;3828:10:::0;21078:16:::1;21086:7:::0;21078::::1;:16::i;:::-;-1:-1:-1::0;;;;;21078:32:0::1;;21070:88;;;;-1:-1:-1::0;;;21070:88:0::1;;;;;;;:::i;:::-;21166:13;21185:22;21199:7;21185:13;:22::i;:::-;21165:42;;;21221:8;21220:9;21212:65;;;::::0;-1:-1:-1;;;21212:65:0;;21565:2:1;21212:65:0::1;::::0;::::1;21547:21:1::0;21604:2;21584:18;;;21577:30;21643:34;21623:18;;;21616:62;-1:-1:-1;;;21694:18:1;;;21687:41;21745:19;;21212:65:0::1;21363:407:1::0;21212:65:0::1;21284:19;21306:54;;;;;;;;21314:7;21306:54;;;;21323:5;21306:54;;;;21330:12;3828:10:::0;;3755:88;21330:12:::1;-1:-1:-1::0;;;;;21306:54:0;;::::1;::::0;;21344:15:::1;21306:54;::::0;;::::1;::::0;21367:8:::1;:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;21367:19:0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;;;;;21367:19:0::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;21398:40:0::1;21409:7;21398:40;21432:5;21398:40;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;21448:424:0;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;21516:13:::1;::::0;21555:22:::1;21569:7:::0;21555:13:::1;:22::i;:::-;21515:62;;;;21592:8;21584:60;;;;-1:-1:-1::0;;;21584:60:0::1;;;;;;;:::i;:::-;3828:10:::0;-1:-1:-1;;;;;21657:45:0::1;:8;21666:12;21657:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29:::1;:22;::::0;;::::1;;:29;::::0;-1:-1:-1;;;;;21657:29:0::1;:45;21649:101;;;;-1:-1:-1::0;;;21649:101:0::1;;;;;;;:::i;:::-;21782:8;21791:15:::0;;:19:::1;::::0;21809:1:::1;::::0;21791:19:::1;:::i;:::-;21782:29;;;;;;;;:::i;:::-;;;;;;;;;;;21757:8;21766:12;21757:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;21757:54:0::1;-1:-1:-1::0;;;;;21757:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;21816:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;21816:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;21816:14:0::1;::::0;;::::1;;::::0;;;;;21842:25:::1;::::0;21859:7;;21842:25:::1;::::0;::::1;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;21448:424:0:o;26099:95::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26168:21;;::::1;::::0;:9:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;24838:283::-:0;24909:7;24923:23;24949;24963:8;24949:13;:23::i;:::-;24923:49;;24977:13;25006:9;25001:97;25025:6;:13;25021:1;:17;25001:97;;;25060:32;25082:6;25089:1;25082:9;;;;;;;;:::i;:::-;;;;;;;25060:21;:32::i;:::-;25051:41;;;;:::i;:::-;;-1:-1:-1;25040:3:0;;;;:::i;:::-;;;;25001:97;;20247:358;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;20304:21:::1;20328:16;:6;1612:14:::0;;1527:104;20328:16:::1;20304:40:::0;-1:-1:-1;20351:29:0::1;20383:25;20304:40:::0;20383:9:::1;:25;:::i;:::-;20351:57:::0;-1:-1:-1;20413:19:0::1;20435:37;20459:13:::0;20351:57;20435:37:::1;:::i;:::-;20413:59;;20499:21;20479:16;;:41;;;;;;;:::i;:::-;;;;;;;;20550:11;20525:21;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20573:27:0::1;::::0;20590:9:::1;1802:25:1::0;;20573:27:0::1;::::0;1790:2:1;1775:18;20573:27:0::1;;;;;;;20299:306;;;20247:358::o:0;8423:272::-;8549:41;3828:10;8582:7;8549:18;:41::i;:::-;8541:103;;;;-1:-1:-1;;;8541:103:0;;;;;;;:::i;:::-;8651:39;8665:4;8671:2;8675:7;8684:5;8651:13;:39::i;:::-;8423:272;;;;:::o;23805:382::-;9028:4;9046:16;;;:7;:16;;;;;;23869:13;;-1:-1:-1;;;;;9046:16:0;23889:76;;;;-1:-1:-1;;;23889:76:0;;21977:2:1;23889:76:0;;;21959:21:1;22016:2;21996:18;;;21989:30;22055:34;22035:18;;;22028:62;-1:-1:-1;;;22106:18:1;;;22099:45;22161:19;;23889:76:0;21775:411:1;23889:76:0;23977:8;;-1:-1:-1;;;23977:8:0;;;;23972:35;;23994:13;23987:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23805:382;;;:::o;23972:35::-;24014:28;24045:10;:8;:10::i;:::-;24014:41;;24100:1;24075:14;24069:28;:32;:113;;;;;;;;;;;;;;;;;24129:14;24145:18;:7;:16;:18::i;:::-;24165:9;24112:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24069:113;24062:120;23805:382;-1:-1:-1;;;23805:382:0:o;26589:91::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26653:11:::1;:22:::0;26589:91::o;20033:209::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;20093:12:::1;20119:7;4235:6:::0;;-1:-1:-1;;;;;4235:6:0;;4169:77;20119:7:::1;-1:-1:-1::0;;;;;20111:21:0::1;20141;20111:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20092:76;;;20183:7;20175:62;;;;-1:-1:-1::0;;;20175:62:0::1;;;;;;;:::i;7828:154::-:0;-1:-1:-1;;;;;7942:25:0;;;7924:4;7942:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7828:154::o;17446:591::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;17528:13:::1;17544:16;17552:7:::0;17544::::1;:16::i;:::-;17528:32:::0;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;17573:21:0;::::1;;17565:77;;;;-1:-1:-1::0;;;17565:77:0::1;;;;;;;:::i;:::-;17649:14;17666:30;17688:7;17666:21;:30::i;:::-;17649:47;;17718:1;17709:6;:10;17701:49;;;;-1:-1:-1::0;;;17701:49:0::1;;;;;;;:::i;:::-;17784:6;17759:21;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17835:16:0::1;::::0;17795:37:::1;::::0;;;:28:::1;:37;::::0;;;;;:56;;;;17879:40;;-1:-1:-1;;;;;17879:19:0;::::1;::::0;17907:6;;17795:37;17879:40;17795:37;17879:40;17907:6;17879:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17860:59;;;17932:7;17924:62;;;;-1:-1:-1::0;;;17924:62:0::1;;;;;;;:::i;:::-;18030:1;18015:5;-1:-1:-1::0;;;;;18000:32:0::1;;18022:6;18000:32;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;23454:86:0;23497:16;23527:8;23520:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23520:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23454:86;:::o;4363:188::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4446:22:0;::::1;4438:73;;;::::0;-1:-1:-1;;;4438:73:0;;24051:2:1;4438:73:0::1;::::0;::::1;24033:21:1::0;24090:2;24070:18;;;24063:30;24129:34;24109:18;;;24102:62;-1:-1:-1;;;24180:18:1;;;24173:36;24226:19;;4438:73:0::1;23849:402:1::0;4438:73:0::1;4518:28;4537:8;4518:18;:28::i;15663:705::-:0;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;15765:34;;::::1;15758:42;;;;:::i;:::-;15812:20:::0;;;;;:42:::1;;-1:-1:-1::0;15836:18:0;;;15812:42:::1;15805:50;;;;:::i;:::-;15864:19;::::0;15888:70:::1;15908:18:::0;;::::1;15888:70;;;15948:7;;15956:1;15948:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15933:25;::::0;::::1;;::::0;::::1;:::i;:::-;::::0;-1:-1:-1;15928:3:0;::::1;::::0;::::1;:::i;:::-;;;;15888:70;;;;16007:9;;15992:11;15973:16;:6;1612:14:::0;;1527:104;15973:16:::1;:30;;;;:::i;:::-;:43;;15965:81;;;::::0;-1:-1:-1;;;15965:81:0;;18918:2:1;15965:81:0::1;::::0;::::1;18900:21:1::0;18957:2;18937:18;;;18930:30;-1:-1:-1;;;18976:18:1;;;18969:55;19041:18;;15965:81:0::1;18716:349:1::0;15965:81:0::1;16060:9;16055:309;16075:20:::0;;::::1;16055:309;;;16108:12;16123:7;;16131:1;16123:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16108:25;;16146:9;16141:218;16165:6;16161:10;;:1;:10;16141:218;;;16185:18;:6;1710:19:::0;;1728:1;1710:19;;;1636:103;16185:18:::1;16212:15;16230:16;:6;1612:14:::0;;1527:104;16230:16:::1;16212:34;;16255:32;16265:9;;16275:1;16265:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16279:7;16255:9;:32::i;:::-;16336:16;::::0;16296:37:::1;::::0;;;:28:::1;:37;::::0;;;;;:56;16173:3;::::1;::::0;::::1;:::i;:::-;;;;16141:218;;;;16102:262;16097:3;;;;;:::i;:::-;;;;16055:309;;;;15753:615;15663:705:::0;;;;:::o;25977:117::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26057:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;5827:256::-:0;5928:4;-1:-1:-1;;;;;;5946:40:0;;-1:-1:-1;;;5946:40:0;;:92;;-1:-1:-1;;;;;;;5990:48:0;;-1:-1:-1;;;5990:48:0;5946:92;:132;;;-1:-1:-1;;;;;;;;;;5255:40:0;;;6042:36;5153:147;11003:161;11072:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11072:29:0;-1:-1:-1;;;;;11072:29:0;;;;;;;;:24;;11122:23;11072:24;11122:14;:23::i;:::-;-1:-1:-1;;;;;11113:46:0;;;;;;;;;;;11003:161;;:::o;9086:330::-;9178:4;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;9189:73;;;;-1:-1:-1;;;9189:73:0;;24864:2:1;9189:73:0;;;24846:21:1;24903:2;24883:18;;;24876:30;24942:34;24922:18;;;24915:62;-1:-1:-1;;;24993:18:1;;;24986:42;25045:19;;9189:73:0;24662:408:1;9189:73:0;9269:13;9285:23;9300:7;9285:14;:23::i;:::-;9269:39;;9334:5;-1:-1:-1;;;;;9323:16:0;:7;-1:-1:-1;;;;;9323:16:0;;:51;;;;9367:7;-1:-1:-1;;;;;9343:31:0;:20;9355:7;9343:11;:20::i;:::-;-1:-1:-1;;;;;9343:31:0;;9323:51;:87;;;;9378:32;9395:5;9402:7;9378:16;:32::i;:::-;9315:96;9086:330;-1:-1:-1;;;;9086:330:0:o;10518:480::-;10637:4;-1:-1:-1;;;;;10610:31:0;:23;10625:7;10610:14;:23::i;:::-;-1:-1:-1;;;;;10610:31:0;;10602:81;;;;-1:-1:-1;;;10602:81:0;;25277:2:1;10602:81:0;;;25259:21:1;25316:2;25296:18;;;25289:30;25355:34;25335:18;;;25328:62;-1:-1:-1;;;25406:18:1;;;25399:35;25451:19;;10602:81:0;25075:401:1;10602:81:0;-1:-1:-1;;;;;10696:16:0;;10688:65;;;;-1:-1:-1;;;10688:65:0;;25683:2:1;10688:65:0;;;25665:21:1;25722:2;25702:18;;;25695:30;25761:34;25741:18;;;25734:62;-1:-1:-1;;;25812:18:1;;;25805:34;25856:19;;10688:65:0;25481:400:1;10688:65:0;10760:39;10781:4;10787:2;10791:7;10760:20;:39::i;:::-;10804:29;10821:1;10825:7;10804:8;:29::i;:::-;-1:-1:-1;;;;;10840:15:0;;;;;;:9;:15;;;;;:20;;10859:1;;10840:15;:20;;10859:1;;10840:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10865:13:0;;;;;;:9;:13;;;;;:18;;10882:1;;10865:13;:18;;10882:1;;10865:18;:::i;:::-;;;;-1:-1:-1;;10888:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10888:21:0;-1:-1:-1;;;;;10888:21:0;;;;;;;;;10921:27;;10888:16;;10921:27;;;;;;;7185:277;7115:347;;:::o;8700:259::-;8808:28;8818:4;8824:2;8828:7;8808:9;:28::i;:::-;8851:48;8874:4;8880:2;8884:7;8893:5;8851:22;:48::i;:::-;8843:111;;;;-1:-1:-1;;;8843:111:0;;;;;;;:::i;27752:171::-;27818:9;27813:106;27837:6;27833:1;:10;27813:106;;;27856:18;:6;1710:19;;1728:1;1710:19;;;1636:103;27856:18;27882:31;27892:2;27896:16;:6;1612:14;;1527:104;27896:16;27882:9;:31::i;:::-;27845:3;;;;:::i;:::-;;;;27813:106;;11169:264;11284:8;-1:-1:-1;;;;;11275:17:0;:5;-1:-1:-1;;;;;11275:17:0;;;11267:55;;;;-1:-1:-1;;;11267:55:0;;26507:2:1;11267:55:0;;;26489:21:1;26546:2;26526:18;;;26519:30;26585:27;26565:18;;;26558:55;26630:18;;11267:55:0;26305:349:1;11267:55:0;-1:-1:-1;;;;;11329:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11329:46:0;;;;;;;;;;11387:41;;1235::1;;;11387::0;;1208:18:1;11387:41:0;;;;;;;11169:264;;;:::o;27375:90::-;27426:13;27453:7;27446:14;;;;;:::i;908:413::-;963:13;987:10;983:26;;-1:-1:-1;;999:10:0;;;;;;;;;;;;-1:-1:-1;;;999:10:0;;;;;908:413::o;983:26::-;1031:5;1016:12;1062:54;1069:9;;1062:54;;1086:8;;;;:::i;:::-;;-1:-1:-1;1100:10:0;;-1:-1:-1;1108:2:0;1100:10;;:::i;:::-;;;1062:54;;;1122:19;1154:6;1144:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1144:17:0;;1122:39;;1168:121;1175:10;;1168:121;;1193:11;1203:1;1193:11;;:::i;:::-;;-1:-1:-1;1253:10:0;1261:2;1253:5;:10;:::i;:::-;1240:24;;:2;:24;:::i;:::-;1227:39;;1210:6;1217;1210:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1210:56:0;;;;;;;;-1:-1:-1;1272:11:0;1281:2;1272:11;;:::i;:::-;;;1168:121;;4556:174;4643:6;;;-1:-1:-1;;;;;4656:17:0;;;-1:-1:-1;;;;;;4656:17:0;;;;;;;4685:40;;4643:6;;;4656:17;4643:6;;4685:40;;4624:16;;4685:40;4619:111;4556:174;:::o;9421:101::-;9491:26;9501:2;9505:7;9491:26;;;;;;;;;;;;:9;:26::i;27470:277::-;27567:13;27586:22;27600:7;27586:13;:22::i;:::-;27566:42;;;27622:8;27621:9;27613:75;;;;-1:-1:-1;;;27613:75:0;;26978:2:1;27613:75:0;;;26960:21:1;27017:2;26997:18;;;26990:30;27056:34;27036:18;;;27029:62;-1:-1:-1;;;27107:18:1;;;27100:51;27168:19;;27613:75:0;26776:417:1;27613:75:0;27697:45;7115:347;11438:572;11549:4;-1:-1:-1;;;;;11564:13:0;;1425:19;:23;11560:445;;11591:72;;-1:-1:-1;;;11591:72:0;;-1:-1:-1;;;;;11591:36:0;;;;;:72;;3828:10;;11642:4;;11648:7;;11657:5;;11591:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11591:72:0;;;;;;;;-1:-1:-1;;11591:72:0;;;;;;;;;;;;:::i;:::-;;;11587:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11799:13:0;;11795:177;;11819:60;;-1:-1:-1;;;11819:60:0;;;;;;;:::i;11795:177::-;11949:6;11943:13;11934:6;11930:2;11926:15;11919:38;11587:391;-1:-1:-1;;;;;;11701:51:0;-1:-1:-1;;;11701:51:0;;-1:-1:-1;11694:58:0;;11560:445;-1:-1:-1;12001:4:0;11438:572;;;;;;:::o;9527:237::-;9617:18;9623:2;9627:7;9617:5;:18::i;:::-;9650:54;9681:1;9685:2;9689:7;9698:5;9650:22;:54::i;:::-;9642:117;;;;-1:-1:-1;;;9642:117:0;;;;;;;:::i;9769:394::-;-1:-1:-1;;;;;9843:16:0;;9835:61;;;;-1:-1:-1;;;9835:61:0;;28148:2:1;9835:61:0;;;28130:21:1;;;28167:18;;;28160:30;28226:34;28206:18;;;28199:62;28278:18;;9835:61:0;27946:356:1;9835:61:0;9028:4;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;:30;9901:58;;;;-1:-1:-1;;;9901:58:0;;28509:2:1;9901:58:0;;;28491:21:1;28548:2;28528:18;;;28521:30;28587;28567:18;;;28560:58;28635:18;;9901:58:0;28307:352:1;9901:58:0;9966:45;9995:1;9999:2;10003:7;9966:20;:45::i;:::-;-1:-1:-1;;;;;10018:13:0;;;;;;:9;:13;;;;;:18;;10035:1;;10018:13;:18;;10035:1;;10018:18;:::i;:::-;;;;-1:-1:-1;;10041:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10041:21:0;-1:-1:-1;;;;;10041:21:0;;;;;;;;10074:33;;10041:16;;;10074:33;;10041:16;;10074:33;25947:20:::1;25879:93:::0;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:128;186:3;217:1;213:6;210:1;207:13;204:39;;;223:18;;:::i;:::-;-1:-1:-1;259:9:1;;146:128::o;279:127::-;340:10;335:3;331:20;328:1;321:31;371:4;368:1;361:15;395:4;392:1;385:15;411:120;451:1;477;467:35;;482:18;;:::i;:::-;-1:-1:-1;516:9:1;;411:120::o;536:168::-;576:7;642:1;638;634:6;630:14;627:1;624:21;619:1;612:9;605:17;601:45;598:71;;;649:18;;:::i;:::-;-1:-1:-1;689:9:1;;536:168::o;709:131::-;-1:-1:-1;;;;;;783:32:1;;773:43;;763:71;;830:1;827;820:12;845:245;903:6;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;1011:9;998:23;1030:30;1054:5;1030:30;:::i;1287:173::-;1355:20;;-1:-1:-1;;;;;1404:31:1;;1394:42;;1384:70;;1450:1;1447;1440:12;1384:70;1287:173;;;:::o;1465:186::-;1524:6;1577:2;1565:9;1556:7;1552:23;1548:32;1545:52;;;1593:1;1590;1583:12;1545:52;1616:29;1635:9;1616:29;:::i;1838:180::-;1897:6;1950:2;1938:9;1929:7;1925:23;1921:32;1918:52;;;1966:1;1963;1956:12;1918:52;-1:-1:-1;1989:23:1;;1838:180;-1:-1:-1;1838:180:1:o;2023:258::-;2095:1;2105:113;2119:6;2116:1;2113:13;2105:113;;;2195:11;;;2189:18;2176:11;;;2169:39;2141:2;2134:10;2105:113;;;2236:6;2233:1;2230:13;2227:48;;;-1:-1:-1;;2271:1:1;2253:16;;2246:27;2023:258::o;2286:::-;2328:3;2366:5;2360:12;2393:6;2388:3;2381:19;2409:63;2465:6;2458:4;2453:3;2449:14;2442:4;2435:5;2431:16;2409:63;:::i;:::-;2526:2;2505:15;-1:-1:-1;;2501:29:1;2492:39;;;;2533:4;2488:50;;2286:258;-1:-1:-1;;2286:258:1:o;2549:220::-;2698:2;2687:9;2680:21;2661:4;2718:45;2759:2;2748:9;2744:18;2736:6;2718:45;:::i;2982:254::-;3050:6;3058;3111:2;3099:9;3090:7;3086:23;3082:32;3079:52;;;3127:1;3124;3117:12;3079:52;3150:29;3169:9;3150:29;:::i;:::-;3140:39;3226:2;3211:18;;;;3198:32;;-1:-1:-1;;;2982:254:1:o;3241:328::-;3318:6;3326;3334;3387:2;3375:9;3366:7;3362:23;3358:32;3355:52;;;3403:1;3400;3393:12;3355:52;3426:29;3445:9;3426:29;:::i;:::-;3416:39;;3474:38;3508:2;3497:9;3493:18;3474:38;:::i;:::-;3464:48;;3559:2;3548:9;3544:18;3531:32;3521:42;;3241:328;;;;;:::o;3574:248::-;3642:6;3650;3703:2;3691:9;3682:7;3678:23;3674:32;3671:52;;;3719:1;3716;3709:12;3671:52;-1:-1:-1;;3742:23:1;;;3812:2;3797:18;;;3784:32;;-1:-1:-1;3574:248:1:o;4106:632::-;4277:2;4329:21;;;4399:13;;4302:18;;;4421:22;;;4248:4;;4277:2;4500:15;;;;4474:2;4459:18;;;4248:4;4543:169;4557:6;4554:1;4551:13;4543:169;;;4618:13;;4606:26;;4687:15;;;;4652:12;;;;4579:1;4572:9;4543:169;;;-1:-1:-1;4729:3:1;;4106:632;-1:-1:-1;;;;;;4106:632:1:o;4743:127::-;4804:10;4799:3;4795:20;4792:1;4785:31;4835:4;4832:1;4825:15;4859:4;4856:1;4849:15;4875:632;4940:5;4970:18;5011:2;5003:6;5000:14;4997:40;;;5017:18;;:::i;:::-;5092:2;5086:9;5060:2;5146:15;;-1:-1:-1;;5142:24:1;;;5168:2;5138:33;5134:42;5122:55;;;5192:18;;;5212:22;;;5189:46;5186:72;;;5238:18;;:::i;:::-;5278:10;5274:2;5267:22;5307:6;5298:15;;5337:6;5329;5322:22;5377:3;5368:6;5363:3;5359:16;5356:25;5353:45;;;5394:1;5391;5384:12;5353:45;5444:6;5439:3;5432:4;5424:6;5420:17;5407:44;5499:1;5492:4;5483:6;5475;5471:19;5467:30;5460:41;;;;4875:632;;;;;:::o;5512:451::-;5581:6;5634:2;5622:9;5613:7;5609:23;5605:32;5602:52;;;5650:1;5647;5640:12;5602:52;5690:9;5677:23;5723:18;5715:6;5712:30;5709:50;;;5755:1;5752;5745:12;5709:50;5778:22;;5831:4;5823:13;;5819:27;-1:-1:-1;5809:55:1;;5860:1;5857;5850:12;5809:55;5883:74;5949:7;5944:2;5931:16;5926:2;5922;5918:11;5883:74;:::i;5968:260::-;6036:6;6044;6097:2;6085:9;6076:7;6072:23;6068:32;6065:52;;;6113:1;6110;6103:12;6065:52;6136:29;6155:9;6136:29;:::i;:::-;6126:39;;6184:38;6218:2;6207:9;6203:18;6184:38;:::i;6524:247::-;6306:12;;6294:25;;6368:4;6357:16;;;6351:23;6335:14;;;6328:47;6428:4;6417:16;;;6411:23;-1:-1:-1;;;;;6407:49:1;6391:14;;;6384:73;6506:4;6495:16;;;6489:23;6473:14;;;6466:47;6708:3;6693:19;;6721:44;6233:286;7039:347;7104:6;7112;7165:2;7153:9;7144:7;7140:23;7136:32;7133:52;;;7181:1;7178;7171:12;7133:52;7204:29;7223:9;7204:29;:::i;:::-;7194:39;;7283:2;7272:9;7268:18;7255:32;7330:5;7323:13;7316:21;7309:5;7306:32;7296:60;;7352:1;7349;7342:12;7296:60;7375:5;7365:15;;;7039:347;;;;;:::o;7391:667::-;7486:6;7494;7502;7510;7563:3;7551:9;7542:7;7538:23;7534:33;7531:53;;;7580:1;7577;7570:12;7531:53;7603:29;7622:9;7603:29;:::i;:::-;7593:39;;7651:38;7685:2;7674:9;7670:18;7651:38;:::i;:::-;7641:48;;7736:2;7725:9;7721:18;7708:32;7698:42;;7791:2;7780:9;7776:18;7763:32;7818:18;7810:6;7807:30;7804:50;;;7850:1;7847;7840:12;7804:50;7873:22;;7926:4;7918:13;;7914:27;-1:-1:-1;7904:55:1;;7955:1;7952;7945:12;7904:55;7978:74;8044:7;8039:2;8026:16;8021:2;8017;8013:11;7978:74;:::i;:::-;7968:84;;;7391:667;;;;;;;:::o;8063:703::-;8284:2;8336:21;;;8406:13;;8309:18;;;8428:22;;;8255:4;;8284:2;8507:15;;;;8481:2;8466:18;;;8255:4;8550:190;8564:6;8561:1;8558:13;8550:190;;;8613:45;8654:3;8645:6;8639:13;6306:12;;6294:25;;6368:4;6357:16;;;6351:23;6335:14;;;6328:47;6428:4;6417:16;;;6411:23;-1:-1:-1;;;;;6407:49:1;6391:14;;;6384:73;6506:4;6495:16;;;6489:23;6473:14;;6466:47;6233:286;8613:45;8715:15;;;;8687:4;8678:14;;;;;8586:1;8579:9;8550:190;;8771:367;8834:8;8844:6;8898:3;8891:4;8883:6;8879:17;8875:27;8865:55;;8916:1;8913;8906:12;8865:55;-1:-1:-1;8939:20:1;;8982:18;8971:30;;8968:50;;;9014:1;9011;9004:12;8968:50;9051:4;9043:6;9039:17;9027:29;;9111:3;9104:4;9094:6;9091:1;9087:14;9079:6;9075:27;9071:38;9068:47;9065:67;;;9128:1;9125;9118:12;9065:67;8771:367;;;;;:::o;9143:771::-;9263:6;9271;9279;9287;9340:2;9328:9;9319:7;9315:23;9311:32;9308:52;;;9356:1;9353;9346:12;9308:52;9396:9;9383:23;9425:18;9466:2;9458:6;9455:14;9452:34;;;9482:1;9479;9472:12;9452:34;9521:70;9583:7;9574:6;9563:9;9559:22;9521:70;:::i;:::-;9610:8;;-1:-1:-1;9495:96:1;-1:-1:-1;9698:2:1;9683:18;;9670:32;;-1:-1:-1;9714:16:1;;;9711:36;;;9743:1;9740;9733:12;9711:36;;9782:72;9846:7;9835:8;9824:9;9820:24;9782:72;:::i;:::-;9143:771;;;;-1:-1:-1;9873:8:1;-1:-1:-1;;;;9143:771:1:o;9919:127::-;9980:10;9975:3;9971:20;9968:1;9961:31;10011:4;10008:1;10001:15;10035:4;10032:1;10025:15;10051:135;10090:3;-1:-1:-1;;10111:17:1;;10108:43;;;10131:18;;:::i;:::-;-1:-1:-1;10178:1:1;10167:13;;10051:135::o;10547:125::-;10587:4;10615:1;10612;10609:8;10606:34;;;10620:18;;:::i;:::-;-1:-1:-1;10657:9:1;;10547:125::o;10677:380::-;10756:1;10752:12;;;;10799;;;10820:61;;10874:4;10866:6;10862:17;10852:27;;10820:61;10927:2;10919:6;10916:14;10896:18;10893:38;10890:161;;;10973:10;10968:3;10964:20;10961:1;10954:31;11008:4;11005:1;10998:15;11036:4;11033:1;11026:15;10890:161;;10677:380;;;:::o;11062:356::-;11264:2;11246:21;;;11283:18;;;11276:30;11342:34;11337:2;11322:18;;11315:62;11409:2;11394:18;;11062:356::o;12663:413::-;12865:2;12847:21;;;12904:2;12884:18;;;12877:30;12943:34;12938:2;12923:18;;12916:62;-1:-1:-1;;;13009:2:1;12994:18;;12987:47;13066:3;13051:19;;12663:413::o;13081:355::-;13283:2;13265:21;;;13322:2;13302:18;;;13295:30;13361:33;13356:2;13341:18;;13334:61;13427:2;13412:18;;13081:355::o;13441:403::-;13643:2;13625:21;;;13682:2;13662:18;;;13655:30;13721:34;13716:2;13701:18;;13694:62;-1:-1:-1;;;13787:2:1;13772:18;;13765:37;13834:3;13819:19;;13441:403::o;14732:127::-;14793:10;14788:3;14784:20;14781:1;14774:31;14824:4;14821:1;14814:15;14848:4;14845:1;14838:15;15074:406;15276:2;15258:21;;;15315:2;15295:18;;;15288:30;-1:-1:-1;;;;;;;;;;;15349:2:1;15334:18;;15327:62;-1:-1:-1;;;15420:2:1;15405:18;;15398:40;15470:3;15455:19;;15074:406::o;16780:350::-;16982:2;16964:21;;;17021:2;17001:18;;;16994:30;17060:28;17055:2;17040:18;;17033:56;17121:2;17106:18;;16780:350::o;17135:407::-;17337:2;17319:21;;;17376:2;17356:18;;;17349:30;17415:34;17410:2;17395:18;;17388:62;-1:-1:-1;;;17481:2:1;17466:18;;17459:41;17532:3;17517:19;;17135:407::o;20951:::-;21153:2;21135:21;;;21192:2;21172:18;;;21165:30;21231:34;21226:2;21211:18;;21204:62;-1:-1:-1;;;21297:2:1;21282:18;;21275:41;21348:3;21333:19;;20951:407::o;22317:1527::-;22541:3;22579:6;22573:13;22605:4;22618:51;22662:6;22657:3;22652:2;22644:6;22640:15;22618:51;:::i;:::-;22732:13;;22691:16;;;;22754:55;22732:13;22691:16;22776:15;;;22754:55;:::i;:::-;22898:13;;22831:20;;;22871:1;;22958;22980:18;;;;23033;;;;23060:93;;23138:4;23128:8;23124:19;23112:31;;23060:93;23201:2;23191:8;23188:16;23168:18;23165:40;23162:167;;;-1:-1:-1;;;23228:33:1;;23284:4;23281:1;23274:15;23314:4;23235:3;23302:17;23162:167;23345:18;23372:110;;;;23496:1;23491:328;;;;23338:481;;23372:110;-1:-1:-1;;23407:24:1;;23393:39;;23452:20;;;;-1:-1:-1;23372:110:1;;23491:328;22264:1;22257:14;;;22301:4;22288:18;;23586:1;23600:169;23614:8;23611:1;23608:15;23600:169;;;23696:14;;23681:13;;;23674:37;23739:16;;;;23631:10;;23600:169;;;23604:3;;23800:8;23793:5;23789:20;23782:27;;23338:481;-1:-1:-1;23835:3:1;;22317:1527;-1:-1:-1;;;;;;;;;;;22317:1527:1:o;24256:127::-;24317:10;24312:3;24308:20;24305:1;24298:31;24348:4;24345:1;24338:15;24372:4;24369:1;24362:15;24388:269;24445:6;24498:2;24486:9;24477:7;24473:23;24469:32;24466:52;;;24514:1;24511;24504:12;24466:52;24553:9;24540:23;24603:4;24596:5;24592:16;24585:5;24582:27;24572:55;;24623:1;24620;24613:12;25886:414;26088:2;26070:21;;;26127:2;26107:18;;;26100:30;26166:34;26161:2;26146:18;;26139:62;-1:-1:-1;;;26232:2:1;26217:18;;26210:48;26290:3;26275:19;;25886:414::o;26659:112::-;26691:1;26717;26707:35;;26722:18;;:::i;:::-;-1:-1:-1;26756:9:1;;26659:112::o;27198:489::-;-1:-1:-1;;;;;27467:15:1;;;27449:34;;27519:15;;27514:2;27499:18;;27492:43;27566:2;27551:18;;27544:34;;;27614:3;27609:2;27594:18;;27587:31;;;27392:4;;27635:46;;27661:19;;27653:6;27635:46;:::i;:::-;27627:54;27198:489;-1:-1:-1;;;;;;27198:489:1:o;27692:249::-;27761:6;27814:2;27802:9;27793:7;27789:23;27785:32;27782:52;;;27830:1;27827;27820:12;27782:52;27862:9;27856:16;27881:30;27905:5;27881:30;:::i

Swarm Source

ipfs://231cfdd045f4645ddf8d5ffcdc4d6bf17dfb7d7add3fff60b2a9098ae989e604
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.