Token Cropets NFT
Overview CRC721
Total Supply:
6,000 CROPETS
Holders:
1,246 addresses
Contract:
Balance
3 CROPETS
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Cronos_Pets_NFT
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-07-22 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.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 IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_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 { 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); } 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); } function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); 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); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } 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 {} } abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { mapping(address => mapping(uint256 => uint256)) private _ownedTokens; mapping(uint256 => uint256) private _ownedTokensIndex; uint256[] private _allTokens; mapping(uint256 => uint256) private _allTokensIndex; function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; _ownedTokensIndex[lastTokenId] = tokenIndex; } delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; _allTokensIndex[lastTokenId] = tokenIndex; delete _allTokensIndex[tokenId]; _allTokens.pop(); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract Cronos_Pets_NFT is ERC721Enumerable, Ownable { using Strings for uint256; mapping(uint256 => uint256) public lastReflections; mapping(address => uint256) public addressMintedBalance; string private baseURI = "https://ipfs.io/"; string private baseExtension = ".json"; string private notRevealedUri = "https://ipfs.io/"; uint256 public cost = 500 ether; uint256 public maxSupply = 10000; uint256 public maxMintAmount = 50; uint256 public nftPerAddressLimit = 1; bool public paused = true; bool public revealed = false; bool public onlyWhitelisted = true; address[] public whitelistedAddresses; uint256 public reflectionRate = 0; uint256 public currentReflection; uint256 public totalReflection; uint256 public COLLECTED_MINTFEE; address payable[] public players; uint public playersCounter; uint256 public playCounter = 0; uint256 public holderRewardCounter = 0; uint256 public volumeCounter = 0; bool public lotteryPaused = true; uint256 public playerLimit = 10; uint256 public ticketPrice = 1 ether; uint256 public royaltiesTEAM = 2; uint256 public royaltiesHOLDERS = 8; address public lotteryManager; event PlayerJoined(address player); event PlayerWon(address player, uint amount); event Reflection(uint256 amount); constructor (string memory _name, string memory _symbol) ERC721(_name, _symbol) { lotteryManager = msg.sender; } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } modifier onlylotteryManager{ require(msg.sender == lotteryManager); _; } function mint(uint256 _mintAmount) public payable { require(!paused, "the contract is paused"); uint256 supply = totalSupply(); require(_mintAmount > 0, "need to mint at least 1 NFT"); require(_mintAmount <= maxMintAmount, "max mint amount per session exceeded"); require(supply + _mintAmount <= maxSupply, "max NFT limit exceeded"); if (msg.sender != owner()) { if(onlyWhitelisted == true) { require(isWhitelisted(msg.sender), "user is not whitelisted"); uint256 ownerMintedCount = addressMintedBalance[msg.sender]; require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "max NFT per address exceeded"); } require(msg.value >= cost * _mintAmount, "insufficient funds"); } for (uint256 i = 1; i <= _mintAmount; i++) { addressMintedBalance[msg.sender]++; _safeMint(msg.sender, supply + i); lastReflections[supply + i] = currentReflection; } uint256 reflectionShare = (msg.value * reflectionRate) / 100; addRewards(reflectionShare); COLLECTED_MINTFEE += msg.value; } function ownerMint(uint256 _mintAmount) public onlyOwner { uint256 supply = totalSupply(); require(_mintAmount > 0, "need to mint at least 1 NFT"); require(supply + _mintAmount <= maxSupply, "max NFT limit exceeded"); if (msg.sender != owner()) { if(onlyWhitelisted == true) { require(isWhitelisted(msg.sender), "user is not whitelisted"); uint256 ownerMintedCount = addressMintedBalance[msg.sender]; } } for (uint256 i = 1; i <= _mintAmount; i++) { addressMintedBalance[msg.sender]++; _safeMint(msg.sender, supply + i); lastReflections[supply + i] = currentReflection; } } function playLottery() payable public { require(msg.value == ticketPrice); require(!lotteryPaused, "Lottery is paused"); players.push(payable(msg.sender)); playersCounter++; volumeCounter += msg.value; emit PlayerJoined(msg.sender); if (playersCounter >= playerLimit){ drawWinner(); } } function addRewards(uint256 amount) private { totalReflection = totalReflection + amount; currentReflection += amount / totalSupply(); emit Reflection(amount); } function royalties() public payable { addRewards(msg.value); } function getRewards(uint256[] memory tokenIds) public view returns (uint256 rewards) { for (uint256 i = 0; i < tokenIds.length; i++) { rewards += currentReflection - lastReflections[tokenIds[i]]; } } function getRewardsToken(uint256 tokenIdsRewards) public view returns (uint256 rewards) { rewards += currentReflection - lastReflections[tokenIdsRewards]; } function claimRewards(uint256[] memory tokenIds) external { uint256 rewards = getRewards(tokenIds); for (uint256 i = 0; i < tokenIds.length; i++) { require(ownerOf(tokenIds[i]) == msg.sender, "Owner Invalid"); lastReflections[tokenIds[i]] = currentReflection; } payable(msg.sender).transfer(rewards); } function claimAllRewards() public { uint count = balanceOf(msg.sender); uint256 balance = 0; for(uint i = 0; i < count; i++){ uint tokenId = tokenOfOwnerByIndex(msg.sender, i); balance += (getRewardsToken(tokenId)); lastReflections[tokenId] = currentReflection; } payable(msg.sender).transfer(balance); } function getReflectionBalances(address _owner) public view returns (uint256) { uint count = balanceOf(_owner); uint256 total = 0; for(uint i = 0; i < count; i++){ uint tokenId = tokenOfOwnerByIndex(_owner, i); total += getRewardsToken(tokenId); } return total; } function isWhitelisted(address _user) public view returns (bool) { for (uint i = 0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : ""; } function reveal() public onlyOwner { revealed = true; } function setNftPerAddressLimit(uint256 _limit) public onlyOwner { nftPerAddressLimit = _limit; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setMaxSupply(uint256 _maxSupply) public onlyOwner { maxSupply = _maxSupply; } function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner { maxMintAmount = _newmaxMintAmount; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } function pause(bool _state) public onlyOwner { paused = _state; } function lotteryPauseSwitch() public onlylotteryManager { lotteryPaused = !lotteryPaused; } function setOnlyWhitelisted(bool _state) public onlyOwner { onlyWhitelisted = _state; } function whitelistUsers(address[] calldata _users) public onlyOwner { delete whitelistedAddresses; whitelistedAddresses = _users; } function setReflectionRate(uint256 _reflectionRate) public onlyOwner { reflectionRate = _reflectionRate; } function setHolderRoyaltyRate(uint256 _royaltiesHOLDERS) public onlyOwner { royaltiesHOLDERS = _royaltiesHOLDERS; } function setTeamRoyaltyRate(uint256 _royaltiesTEAM) public onlyOwner { royaltiesTEAM = _royaltiesTEAM; } function setTicketPrice(uint256 _ticketPrice) public onlyOwner { ticketPrice = _ticketPrice; } function setplayerLimit(uint256 _playerLimit) public onlyOwner { playerLimit = _playerLimit; } function showPlayers() public view returns(address payable[] memory){ return players; } function forceDraw() public onlylotteryManager { require(msg.sender == lotteryManager); drawWinner(); } function drawWinner() private { uint256 index = random() % players.length; uint256 amount = ticketPrice * playerLimit; address payable winner = players[index]; uint256 holderReward = (amount * royaltiesHOLDERS) / 100; uint256 teamReward = (amount * royaltiesTEAM) / 100; uint256 totalFEES = holderReward + teamReward; uint256 winnerPrize = amount - totalFEES; addRewards(holderReward); payable(owner()).transfer(teamReward); winner.transfer(winnerPrize); players = new address payable[](0); playersCounter = 0; emit PlayerWon(winner, amount); playCounter++; holderRewardCounter += holderReward; } function random() private view returns(uint){ return uint(keccak256(abi.encodePacked(block.difficulty, block.timestamp, players))); } function withdraw() public onlyOwner { payable(msg.sender).transfer(COLLECTED_MINTFEE); COLLECTED_MINTFEE = 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"player","type":"address"}],"name":"PlayerJoined","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PlayerWon","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Reflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"COLLECTED_MINTFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAllRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceDraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getReflectionBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"getRewards","outputs":[{"internalType":"uint256","name":"rewards","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIdsRewards","type":"uint256"}],"name":"getRewardsToken","outputs":[{"internalType":"uint256","name":"rewards","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderRewardCounter","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":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryPauseSwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lotteryPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","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":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"playCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"playLottery","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"playerLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"players","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"playersCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royalties","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"royaltiesHOLDERS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltiesTEAM","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":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","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":"_royaltiesHOLDERS","type":"uint256"}],"name":"setHolderRoyaltyRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNftPerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionRate","type":"uint256"}],"name":"setReflectionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_royaltiesTEAM","type":"uint256"}],"name":"setTeamRoyaltyRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ticketPrice","type":"uint256"}],"name":"setTicketPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_playerLimit","type":"uint256"}],"name":"setplayerLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showPlayers","outputs":[{"internalType":"address payable[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ticketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflection","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":[],"name":"volumeCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c0604052601060809081526f68747470733a2f2f697066732e696f2f60801b60a052600d9062000031908262000282565b50604080518082019091526005815264173539b7b760d91b6020820152600e906200005d908262000282565b5060408051808201909152601081526f68747470733a2f2f697066732e696f2f60801b6020820152600f9062000094908262000282565b50681b1ae4d6e2ef5000006010556127106011556032601255600160138190556014805462ffffff19166201000117905560006016819055601c819055601d819055601e55601f805460ff19169091179055600a602055670de0b6b3a7640000602155600260225560086023553480156200010e57600080fd5b5060405162003e5138038062003e51833981016040819052620001319162000405565b8181600062000141838262000282565b50600162000150828262000282565b5050506200016d620001676200018760201b60201c565b6200018b565b5050602480546001600160a01b031916331790556200046f565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020857607f821691505b6020821081036200022957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027d57600081815260208120601f850160051c81016020861015620002585750805b601f850160051c820191505b81811015620002795782815560010162000264565b5050505b505050565b81516001600160401b038111156200029e576200029e620001dd565b620002b681620002af8454620001f3565b846200022f565b602080601f831160018114620002ee5760008415620002d55750858301515b600019600386901b1c1916600185901b17855562000279565b600085815260208120601f198616915b828110156200031f57888601518255948401946001909101908401620002fe565b50858210156200033e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082601f8301126200036057600080fd5b81516001600160401b03808211156200037d576200037d620001dd565b604051601f8301601f19908116603f01168101908282118183101715620003a857620003a8620001dd565b81604052838152602092508683858801011115620003c557600080fd5b600091505b83821015620003e95785820183015181830184015290820190620003ca565b83821115620003fb5760008385830101525b9695505050505050565b600080604083850312156200041957600080fd5b82516001600160401b03808211156200043157600080fd5b6200043f868387016200034e565b935060208501519150808211156200045657600080fd5b5062000465858286016200034e565b9150509250929050565b6139d2806200047f6000396000f3fe60806040526004361061043c5760003560e01c80636352211e11610234578063ba4e5c491161012e578063e985e9c5116100b6578063f2fde38b1161007a578063f2fde38b14610c5e578063f490177214610c7e578063f68fc92914610c9e578063f71d96cb14610cb8578063f8bb7ec214610cd857600080fd5b8063e985e9c514610bad578063edec5f2714610bf6578063f053dc5c14610c16578063f19e75d414610c1e578063f2c4ce1e14610c3e57600080fd5b8063d0eb26b0116100fd578063d0eb26b014610b39578063d4cd77a314610b59578063d5abeb0114610b61578063d791da3214610b77578063da3ef23f14610b8d57600080fd5b8063ba4e5c4914610ab6578063ba7d2c7614610ad6578063bac9320314610aec578063c87b56dd14610b1957600080fd5b80639163723e116101bc578063a0712d6811610180578063a0712d6814610a2e578063a22cb46514610a41578063a475b5dd14610a61578063a708d40414610a76578063b88d4fde14610a9657600080fd5b80639163723e146109ad57806395d89b41146109c25780639814e6fa146109d75780639c70b512146109f95780639e0413eb14610a1957600080fd5b806370a082311161020357806370a082311461091a578063715018a61461093a57806371e0a4bc1461094f5780637f00c7a61461096f5780638da5cb5b1461098f57600080fd5b80636352211e1461089a57806367f3aa40146108ba5780636e118a02146108da5780636f8b44b0146108fa57600080fd5b80632f745c59116103455780634bad3710116102cd578063542aa22911610291578063542aa2291461081457806355f804b31461082a578063588bf34f1461084a5780635c975abb146108605780635eac62391461087a57600080fd5b80634bad3710146107895780634f6ccce71461079f5780634f7b1f5f146107bf5780634f989520146107d557806351830227146107f557600080fd5b80633cd972ac116103145780633cd972ac146106e657806342842e0e14610706578063438b63001461072657806344a0d68a1461075357806345571de51461077357600080fd5b80632f745c59146106715780633af32abf146106915780633c952764146106b15780633ccfd60b146106d157600080fd5b806313faede6116103c857806318cae2691161039757806318cae269146105e2578063228497201461060f578063239c70ae1461062557806323b872dd1461063b5780632619829d1461065b57600080fd5b806313faede6146105775780631523ad6d1461058d57806315981650146105ad57806318160ddd146105cd57600080fd5b8063095ea7b31161040f578063095ea7b3146104f25780630a1282de146105125780630b83a72714610536578063118c09781461054b5780631209b1f61461056157600080fd5b806301ffc9a71461044157806302329a291461047657806306fdde0314610498578063081812fc146104ba575b600080fd5b34801561044d57600080fd5b5061046161045c366004613087565b610cee565b60405190151581526020015b60405180910390f35b34801561048257600080fd5b506104966104913660046130b9565b610d19565b005b3480156104a457600080fd5b506104ad610d5f565b60405161046d919061312c565b3480156104c657600080fd5b506104da6104d536600461313f565b610df1565b6040516001600160a01b03909116815260200161046d565b3480156104fe57600080fd5b5061049661050d36600461316f565b610e86565b34801561051e57600080fd5b50610528601d5481565b60405190815260200161046d565b34801561054257600080fd5b50610496610f9b565b34801561055757600080fd5b50610528601b5481565b34801561056d57600080fd5b5061052860215481565b34801561058357600080fd5b5061052860105481565b34801561059957600080fd5b506104966105a836600461313f565b61102d565b3480156105b957600080fd5b506104966105c836600461313f565b61105c565b3480156105d957600080fd5b50600854610528565b3480156105ee57600080fd5b506105286105fd366004613199565b600c6020526000908152604090205481565b34801561061b57600080fd5b5061052860185481565b34801561063157600080fd5b5061052860125481565b34801561064757600080fd5b506104966106563660046131b4565b61108b565b34801561066757600080fd5b5061052860195481565b34801561067d57600080fd5b5061052861068c36600461316f565b6110bc565b34801561069d57600080fd5b506104616106ac366004613199565b611152565b3480156106bd57600080fd5b506104966106cc3660046130b9565b6111bb565b3480156106dd57600080fd5b50610496611201565b3480156106f257600080fd5b5061052861070136600461313f565b611261565b34801561071257600080fd5b506104966107213660046131b4565b611287565b34801561073257600080fd5b50610746610741366004613199565b6112a2565b60405161046d91906131f0565b34801561075f57600080fd5b5061049661076e36600461313f565b611344565b34801561077f57600080fd5b5061052860175481565b34801561079557600080fd5b5061052860225481565b3480156107ab57600080fd5b506105286107ba36600461313f565b611373565b3480156107cb57600080fd5b50610528601c5481565b3480156107e157600080fd5b506024546104da906001600160a01b031681565b34801561080157600080fd5b5060145461046190610100900460ff1681565b34801561082057600080fd5b5061052860165481565b34801561083657600080fd5b506104966108453660046132d3565b611406565b34801561085657600080fd5b50610528601e5481565b34801561086c57600080fd5b506014546104619060ff1681565b34801561088657600080fd5b5061049661089536600461331c565b611440565b3480156108a657600080fd5b506104da6108b536600461313f565b611511565b3480156108c657600080fd5b506104966108d536600461313f565b611588565b3480156108e657600080fd5b506104966108f536600461313f565b6115b7565b34801561090657600080fd5b5061049661091536600461313f565b6115e6565b34801561092657600080fd5b50610528610935366004613199565b611615565b34801561094657600080fd5b5061049661169c565b34801561095b57600080fd5b5061049661096a36600461313f565b6116d2565b34801561097b57600080fd5b5061049661098a36600461313f565b611701565b34801561099b57600080fd5b50600a546001600160a01b03166104da565b3480156109b957600080fd5b50610496611730565b3480156109ce57600080fd5b506104ad61175b565b3480156109e357600080fd5b506109ec61176a565b60405161046d91906133c2565b348015610a0557600080fd5b506014546104619062010000900460ff1681565b348015610a2557600080fd5b506104966117cb565b610496610a3c36600461313f565b611801565b348015610a4d57600080fd5b50610496610a5c366004613403565b611b47565b348015610a6d57600080fd5b50610496611c0b565b348015610a8257600080fd5b50610528610a91366004613199565b611c46565b348015610aa257600080fd5b50610496610ab1366004613436565b611c97565b348015610ac257600080fd5b506104da610ad136600461313f565b611ccf565b348015610ae257600080fd5b5061052860135481565b348015610af857600080fd5b50610528610b0736600461313f565b600b6020526000908152604090205481565b348015610b2557600080fd5b506104ad610b3436600461313f565b611cf9565b348015610b4557600080fd5b50610496610b5436600461313f565b611e7d565b610496611eac565b348015610b6d57600080fd5b5061052860115481565b348015610b8357600080fd5b5061052860235481565b348015610b9957600080fd5b50610496610ba83660046132d3565b611fb2565b348015610bb957600080fd5b50610461610bc83660046134b2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610c0257600080fd5b50610496610c113660046134dc565b611fe8565b61049661202a565b348015610c2a57600080fd5b50610496610c3936600461313f565b612033565b348015610c4a57600080fd5b50610496610c593660046132d3565b6121fb565b348015610c6a57600080fd5b50610496610c79366004613199565b612231565b348015610c8a57600080fd5b50610528610c9936600461331c565b6122cc565b348015610caa57600080fd5b50601f546104619060ff1681565b348015610cc457600080fd5b506104da610cd336600461313f565b612337565b348015610ce457600080fd5b5061052860205481565b60006001600160e01b0319821663780e9d6360e01b1480610d135750610d1382612347565b92915050565b600a546001600160a01b03163314610d4c5760405162461bcd60e51b8152600401610d4390613551565b60405180910390fd5b6014805460ff1916911515919091179055565b606060008054610d6e90613586565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90613586565b8015610de75780601f10610dbc57610100808354040283529160200191610de7565b820191906000526020600020905b815481529060010190602001808311610dca57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610e6a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610d43565b506000908152600460205260409020546001600160a01b031690565b6000610e9182611511565b9050806001600160a01b0316836001600160a01b031603610efe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610d43565b336001600160a01b0382161480610f1a5750610f1a8133610bc8565b610f8c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610d43565b610f968383612397565b505050565b6000610fa633611615565b90506000805b82811015610fff576000610fc033836110bc565b9050610fcb81611261565b610fd590846135d0565b6017546000928352600b602052604090922091909155915080610ff7816135e8565b915050610fac565b50604051339082156108fc029083906000818181858888f19350505050158015610f96573d6000803e3d6000fd5b600a546001600160a01b031633146110575760405162461bcd60e51b8152600401610d4390613551565b602355565b600a546001600160a01b031633146110865760405162461bcd60e51b8152600401610d4390613551565b602155565b6110953382612405565b6110b15760405162461bcd60e51b8152600401610d4390613601565b610f968383836124fc565b60006110c783611615565b82106111295760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610d43565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000805b6015548110156111b257826001600160a01b03166015828154811061117d5761117d613652565b6000918252602090912001546001600160a01b0316036111a05750600192915050565b806111aa816135e8565b915050611156565b50600092915050565b600a546001600160a01b031633146111e55760405162461bcd60e51b8152600401610d4390613551565b60148054911515620100000262ff000019909216919091179055565b600a546001600160a01b0316331461122b5760405162461bcd60e51b8152600401610d4390613551565b601954604051339180156108fc02916000818181858888f19350505050158015611259573d6000803e3d6000fd5b506000601955565b6000818152600b602052604081205460175461127d9190613668565b610d1390826135d0565b610f9683838360405180602001604052806000815250611c97565b606060006112af83611615565b905060008167ffffffffffffffff8111156112cc576112cc613234565b6040519080825280602002602001820160405280156112f5578160200160208202803683370190505b50905060005b8281101561133c5761130d85826110bc565b82828151811061131f5761131f613652565b602090810291909101015280611334816135e8565b9150506112fb565b509392505050565b600a546001600160a01b0316331461136e5760405162461bcd60e51b8152600401610d4390613551565b601055565b600061137e60085490565b82106113e15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610d43565b600882815481106113f4576113f4613652565b90600052602060002001549050919050565b600a546001600160a01b031633146114305760405162461bcd60e51b8152600401610d4390613551565b600d61143c82826136cd565b5050565b600061144b826122cc565b905060005b8251811015610fff57336001600160a01b031661148584838151811061147857611478613652565b6020026020010151611511565b6001600160a01b0316146114cb5760405162461bcd60e51b815260206004820152600d60248201526c13dddb995c88125b9d985b1a59609a1b6044820152606401610d43565b601754600b60008584815181106114e4576114e4613652565b60200260200101518152602001908152602001600020819055508080611509906135e8565b915050611450565b6000818152600260205260408120546001600160a01b031680610d135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610d43565b600a546001600160a01b031633146115b25760405162461bcd60e51b8152600401610d4390613551565b601655565b600a546001600160a01b031633146115e15760405162461bcd60e51b8152600401610d4390613551565b602055565b600a546001600160a01b031633146116105760405162461bcd60e51b8152600401610d4390613551565b601155565b60006001600160a01b0382166116805760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610d43565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146116c65760405162461bcd60e51b8152600401610d4390613551565b6116d060006126a7565b565b600a546001600160a01b031633146116fc5760405162461bcd60e51b8152600401610d4390613551565b602255565b600a546001600160a01b0316331461172b5760405162461bcd60e51b8152600401610d4390613551565b601255565b6024546001600160a01b0316331461174757600080fd5b601f805460ff19811660ff90911615179055565b606060018054610d6e90613586565b6060601a805480602002602001604051908101604052809291908181526020018280548015610de757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117a4575050505050905090565b6024546001600160a01b031633146117e257600080fd5b6024546001600160a01b031633146117f957600080fd5b6116d06126f9565b60145460ff161561184d5760405162461bcd60e51b81526020600482015260166024820152751d1a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401610d43565b600061185860085490565b9050600082116118aa5760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401610d43565b6012548211156119085760405162461bcd60e51b8152602060048201526024808201527f6d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656044820152631959195960e21b6064820152608401610d43565b60115461191583836135d0565b111561195c5760405162461bcd60e51b81526020600482015260166024820152751b585e08139195081b1a5b5a5d08195e18d95959195960521b6044820152606401610d43565b600a546001600160a01b03163314611a915760145462010000900460ff161515600103611a3f5761198c33611152565b6119d25760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610d43565b336000908152600c60205260409020546013546119ef84836135d0565b1115611a3d5760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e4654207065722061646472657373206578636565646564000000006044820152606401610d43565b505b81601054611a4d919061378d565b341015611a915760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610d43565b60015b828111611b0357336000908152600c60205260408120805491611ab6836135e8565b90915550611acf905033611aca83856135d0565b6128bf565b601754600b6000611ae084866135d0565b815260208101919091526040016000205580611afb816135e8565b915050611a94565b506000606460165434611b16919061378d565b611b2091906137c2565b9050611b2b816128d9565b3460196000828254611b3d91906135d0565b9091555050505050565b336001600160a01b03831603611b9f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d43565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b03163314611c355760405162461bcd60e51b8152600401610d4390613551565b6014805461ff001916610100179055565b600080611c5283611615565b90506000805b8281101561133c576000611c6c86836110bc565b9050611c7781611261565b611c8190846135d0565b9250508080611c8f906135e8565b915050611c58565b611ca13383612405565b611cbd5760405162461bcd60e51b8152600401610d4390613601565b611cc984848484612943565b50505050565b60158181548110611cdf57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000818152600260205260409020546060906001600160a01b0316611d785760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610d43565b601454610100900460ff161515600003611e1e57600f8054611d9990613586565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc590613586565b8015611e125780601f10611de757610100808354040283529160200191611e12565b820191906000526020600020905b815481529060010190602001808311611df557829003601f168201915b50505050509050919050565b6000611e28612976565b90506000815111611e485760405180602001604052806000815250611e76565b80611e5284612985565b600e604051602001611e66939291906137d6565b6040516020818303038152906040525b9392505050565b600a546001600160a01b03163314611ea75760405162461bcd60e51b8152600401610d4390613551565b601355565b6021543414611eba57600080fd5b601f5460ff1615611f015760405162461bcd60e51b8152602060048201526011602482015270131bdd1d195c9e481a5cc81c185d5cd959607a1b6044820152606401610d43565b601a805460018101825560009182527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b03191633179055601b805491611f50836135e8565b919050555034601e6000828254611f6791906135d0565b90915550506040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f9060200160405180910390a1602054601b54106116d0576116d06126f9565b600a546001600160a01b03163314611fdc5760405162461bcd60e51b8152600401610d4390613551565b600e61143c82826136cd565b600a546001600160a01b031633146120125760405162461bcd60e51b8152600401610d4390613551565b61201e60156000612f86565b610f9660158383612fa4565b6116d0346128d9565b600a546001600160a01b0316331461205d5760405162461bcd60e51b8152600401610d4390613551565b600061206860085490565b9050600082116120ba5760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401610d43565b6011546120c783836135d0565b111561210e5760405162461bcd60e51b81526020600482015260166024820152751b585e08139195081b1a5b5a5d08195e18d95959195960521b6044820152606401610d43565b600a546001600160a01b0316331461218e5760145462010000900460ff16151560010361218e5761213e33611152565b6121845760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610d43565b33600052600c6020525b60015b828111610f9657336000908152600c602052604081208054916121b3836135e8565b909155506121c7905033611aca83856135d0565b601754600b60006121d884866135d0565b8152602081019190915260400160002055806121f3816135e8565b915050612191565b600a546001600160a01b031633146122255760405162461bcd60e51b8152600401610d4390613551565b600f61143c82826136cd565b600a546001600160a01b0316331461225b5760405162461bcd60e51b8152600401610d4390613551565b6001600160a01b0381166122c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d43565b6122c9816126a7565b50565b6000805b825181101561233157600b60008483815181106122ef576122ef613652565b60200260200101518152602001908152602001600020546017546123139190613668565b61231d90836135d0565b915080612329816135e8565b9150506122d0565b50919050565b601a8181548110611cdf57600080fd5b60006001600160e01b031982166380ac58cd60e01b148061237857506001600160e01b03198216635b5e139f60e01b145b80610d1357506301ffc9a760e01b6001600160e01b0319831614610d13565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906123cc82611511565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661247e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610d43565b600061248983611511565b9050806001600160a01b0316846001600160a01b031614806124c45750836001600160a01b03166124b984610df1565b6001600160a01b0316145b806124f457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661250f82611511565b6001600160a01b0316146125775760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610d43565b6001600160a01b0382166125d95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d43565b6125e4838383612a86565b6125ef600082612397565b6001600160a01b0383166000908152600360205260408120805460019290612618908490613668565b90915550506001600160a01b03821660009081526003602052604081208054600192906126469084906135d0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a54600090612707612b3e565b6127119190613876565b90506000602054602154612725919061378d565b90506000601a838154811061273c5761273c613652565b60009182526020822001546023546001600160a01b039091169250606490612764908561378d565b61276e91906137c2565b90506000606460225485612782919061378d565b61278c91906137c2565b9050600061279a82846135d0565b905060006127a88287613668565b90506127b3846128d9565b600a546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156127ed573d6000803e3d6000fd5b506040516001600160a01b0386169082156108fc029083906000818181858888f19350505050158015612824573d6000803e3d6000fd5b50604080516000815260208101918290525161284291601a91613007565b506000601b55604080516001600160a01b0387168152602081018890527f6e0d11c40e939975aea1b614617340d694125da9ebed64c96cab216ca971564e910160405180910390a1601c805490600061289a836135e8565b919050555083601d60008282546128b191906135d0565b909155505050505050505050565b61143c828260405180602001604052806000815250612b74565b806018546128e791906135d0565b6018556008546128f790826137c2565b6017600082825461290891906135d0565b90915550506040518181527fbadc96f0b899bb720d18a25ea9fae343d6095c7f760d4a54ee0d65fe1c66ccd19060200160405180910390a150565b61294e8484846124fc565b61295a84848484612ba7565b611cc95760405162461bcd60e51b8152600401610d439061388a565b6060600d8054610d6e90613586565b6060816000036129ac5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156129d657806129c0816135e8565b91506129cf9050600a836137c2565b91506129b0565b60008167ffffffffffffffff8111156129f1576129f1613234565b6040519080825280601f01601f191660200182016040528015612a1b576020820181803683370190505b5090505b84156124f457612a30600183613668565b9150612a3d600a86613876565b612a489060306135d0565b60f81b818381518110612a5d57612a5d613652565b60200101906001600160f81b031916908160001a905350612a7f600a866137c2565b9450612a1f565b6001600160a01b038316612ae157612adc81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612b04565b816001600160a01b0316836001600160a01b031614612b0457612b048382612ca8565b6001600160a01b038216612b1b57610f9681612d45565b826001600160a01b0316826001600160a01b031614610f9657610f968282612df4565b60004442601a604051602001612b56939291906138dc565b6040516020818303038152906040528051906020012060001c905090565b612b7e8383612e38565b612b8b6000848484612ba7565b610f965760405162461bcd60e51b8152600401610d439061388a565b60006001600160a01b0384163b15612c9d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612beb90339089908890889060040161392c565b6020604051808303816000875af1925050508015612c26575060408051601f3d908101601f19168201909252612c2391810190613969565b60015b612c83573d808015612c54576040519150601f19603f3d011682016040523d82523d6000602084013e612c59565b606091505b508051600003612c7b5760405162461bcd60e51b8152600401610d439061388a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506124f4565b506001949350505050565b60006001612cb584611615565b612cbf9190613668565b600083815260076020526040902054909150808214612d12576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090612d5790600190613668565b60008381526009602052604081205460088054939450909284908110612d7f57612d7f613652565b906000526020600020015490508060088381548110612da057612da0613652565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612dd857612dd8613986565b6001900381819060005260206000200160009055905550505050565b6000612dff83611615565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216612e8e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d43565b6000818152600260205260409020546001600160a01b031615612ef35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d43565b612eff60008383612a86565b6001600160a01b0382166000908152600360205260408120805460019290612f289084906135d0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b50805460008255906000526020600020908101906122c9919061305c565b828054828255906000526020600020908101928215612ff7579160200282015b82811115612ff75781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190612fc4565b5061300392915061305c565b5090565b828054828255906000526020600020908101928215612ff7579160200282015b82811115612ff757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613027565b5b80821115613003576000815560010161305d565b6001600160e01b0319811681146122c957600080fd5b60006020828403121561309957600080fd5b8135611e7681613071565b803580151581146130b457600080fd5b919050565b6000602082840312156130cb57600080fd5b611e76826130a4565b60005b838110156130ef5781810151838201526020016130d7565b83811115611cc95750506000910152565b600081518084526131188160208601602086016130d4565b601f01601f19169290920160200192915050565b602081526000611e766020830184613100565b60006020828403121561315157600080fd5b5035919050565b80356001600160a01b03811681146130b457600080fd5b6000806040838503121561318257600080fd5b61318b83613158565b946020939093013593505050565b6000602082840312156131ab57600080fd5b611e7682613158565b6000806000606084860312156131c957600080fd5b6131d284613158565b92506131e060208501613158565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b818110156132285783518352928401929184019160010161320c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561327357613273613234565b604052919050565b600067ffffffffffffffff83111561329557613295613234565b6132a8601f8401601f191660200161324a565b90508281528383830111156132bc57600080fd5b828260208301376000602084830101529392505050565b6000602082840312156132e557600080fd5b813567ffffffffffffffff8111156132fc57600080fd5b8201601f8101841361330d57600080fd5b6124f48482356020840161327b565b6000602080838503121561332f57600080fd5b823567ffffffffffffffff8082111561334757600080fd5b818501915085601f83011261335b57600080fd5b81358181111561336d5761336d613234565b8060051b915061337e84830161324a565b818152918301840191848101908884111561339857600080fd5b938501935b838510156133b65784358252938501939085019061339d565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156132285783516001600160a01b0316835292840192918401916001016133de565b6000806040838503121561341657600080fd5b61341f83613158565b915061342d602084016130a4565b90509250929050565b6000806000806080858703121561344c57600080fd5b61345585613158565b935061346360208601613158565b925060408501359150606085013567ffffffffffffffff81111561348657600080fd5b8501601f8101871361349757600080fd5b6134a68782356020840161327b565b91505092959194509250565b600080604083850312156134c557600080fd5b6134ce83613158565b915061342d60208401613158565b600080602083850312156134ef57600080fd5b823567ffffffffffffffff8082111561350757600080fd5b818501915085601f83011261351b57600080fd5b81358181111561352a57600080fd5b8660208260051b850101111561353f57600080fd5b60209290920196919550909350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061359a57607f821691505b60208210810361233157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156135e3576135e36135ba565b500190565b6000600182016135fa576135fa6135ba565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008282101561367a5761367a6135ba565b500390565b601f821115610f9657600081815260208120601f850160051c810160208610156136a65750805b601f850160051c820191505b818110156136c5578281556001016136b2565b505050505050565b815167ffffffffffffffff8111156136e7576136e7613234565b6136fb816136f58454613586565b8461367f565b602080601f83116001811461373057600084156137185750858301515b600019600386901b1c1916600185901b1785556136c5565b600085815260208120601f198616915b8281101561375f57888601518255948401946001909101908401613740565b508582101561377d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008160001904831182151516156137a7576137a76135ba565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826137d1576137d16137ac565b500490565b6000845160206137e98285838a016130d4565b8551918401916137fc8184848a016130d4565b855492019160009061380d81613586565b60018281168015613825576001811461383a57613866565b60ff1984168752821515830287019450613866565b896000528560002060005b8481101561385e57815489820152908301908701613845565b505082870194505b50929a9950505050505050505050565b600082613885576138856137ac565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b838152600060208481840152604083018454856000528260002060005b8281101561391e5781546001600160a01b0316845292840192600191820191016138f9565b509198975050505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061395f90830184613100565b9695505050505050565b60006020828403121561397b57600080fd5b8151611e7681613071565b634e487b7160e01b600052603160045260246000fdfea264697066735822122009edf38657a31c6ee27c71e6cc0522f5490575c44a6becbe947db8304b72362e64736f6c634300080f003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b43726f70657473204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000743524f5045545300000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061043c5760003560e01c80636352211e11610234578063ba4e5c491161012e578063e985e9c5116100b6578063f2fde38b1161007a578063f2fde38b14610c5e578063f490177214610c7e578063f68fc92914610c9e578063f71d96cb14610cb8578063f8bb7ec214610cd857600080fd5b8063e985e9c514610bad578063edec5f2714610bf6578063f053dc5c14610c16578063f19e75d414610c1e578063f2c4ce1e14610c3e57600080fd5b8063d0eb26b0116100fd578063d0eb26b014610b39578063d4cd77a314610b59578063d5abeb0114610b61578063d791da3214610b77578063da3ef23f14610b8d57600080fd5b8063ba4e5c4914610ab6578063ba7d2c7614610ad6578063bac9320314610aec578063c87b56dd14610b1957600080fd5b80639163723e116101bc578063a0712d6811610180578063a0712d6814610a2e578063a22cb46514610a41578063a475b5dd14610a61578063a708d40414610a76578063b88d4fde14610a9657600080fd5b80639163723e146109ad57806395d89b41146109c25780639814e6fa146109d75780639c70b512146109f95780639e0413eb14610a1957600080fd5b806370a082311161020357806370a082311461091a578063715018a61461093a57806371e0a4bc1461094f5780637f00c7a61461096f5780638da5cb5b1461098f57600080fd5b80636352211e1461089a57806367f3aa40146108ba5780636e118a02146108da5780636f8b44b0146108fa57600080fd5b80632f745c59116103455780634bad3710116102cd578063542aa22911610291578063542aa2291461081457806355f804b31461082a578063588bf34f1461084a5780635c975abb146108605780635eac62391461087a57600080fd5b80634bad3710146107895780634f6ccce71461079f5780634f7b1f5f146107bf5780634f989520146107d557806351830227146107f557600080fd5b80633cd972ac116103145780633cd972ac146106e657806342842e0e14610706578063438b63001461072657806344a0d68a1461075357806345571de51461077357600080fd5b80632f745c59146106715780633af32abf146106915780633c952764146106b15780633ccfd60b146106d157600080fd5b806313faede6116103c857806318cae2691161039757806318cae269146105e2578063228497201461060f578063239c70ae1461062557806323b872dd1461063b5780632619829d1461065b57600080fd5b806313faede6146105775780631523ad6d1461058d57806315981650146105ad57806318160ddd146105cd57600080fd5b8063095ea7b31161040f578063095ea7b3146104f25780630a1282de146105125780630b83a72714610536578063118c09781461054b5780631209b1f61461056157600080fd5b806301ffc9a71461044157806302329a291461047657806306fdde0314610498578063081812fc146104ba575b600080fd5b34801561044d57600080fd5b5061046161045c366004613087565b610cee565b60405190151581526020015b60405180910390f35b34801561048257600080fd5b506104966104913660046130b9565b610d19565b005b3480156104a457600080fd5b506104ad610d5f565b60405161046d919061312c565b3480156104c657600080fd5b506104da6104d536600461313f565b610df1565b6040516001600160a01b03909116815260200161046d565b3480156104fe57600080fd5b5061049661050d36600461316f565b610e86565b34801561051e57600080fd5b50610528601d5481565b60405190815260200161046d565b34801561054257600080fd5b50610496610f9b565b34801561055757600080fd5b50610528601b5481565b34801561056d57600080fd5b5061052860215481565b34801561058357600080fd5b5061052860105481565b34801561059957600080fd5b506104966105a836600461313f565b61102d565b3480156105b957600080fd5b506104966105c836600461313f565b61105c565b3480156105d957600080fd5b50600854610528565b3480156105ee57600080fd5b506105286105fd366004613199565b600c6020526000908152604090205481565b34801561061b57600080fd5b5061052860185481565b34801561063157600080fd5b5061052860125481565b34801561064757600080fd5b506104966106563660046131b4565b61108b565b34801561066757600080fd5b5061052860195481565b34801561067d57600080fd5b5061052861068c36600461316f565b6110bc565b34801561069d57600080fd5b506104616106ac366004613199565b611152565b3480156106bd57600080fd5b506104966106cc3660046130b9565b6111bb565b3480156106dd57600080fd5b50610496611201565b3480156106f257600080fd5b5061052861070136600461313f565b611261565b34801561071257600080fd5b506104966107213660046131b4565b611287565b34801561073257600080fd5b50610746610741366004613199565b6112a2565b60405161046d91906131f0565b34801561075f57600080fd5b5061049661076e36600461313f565b611344565b34801561077f57600080fd5b5061052860175481565b34801561079557600080fd5b5061052860225481565b3480156107ab57600080fd5b506105286107ba36600461313f565b611373565b3480156107cb57600080fd5b50610528601c5481565b3480156107e157600080fd5b506024546104da906001600160a01b031681565b34801561080157600080fd5b5060145461046190610100900460ff1681565b34801561082057600080fd5b5061052860165481565b34801561083657600080fd5b506104966108453660046132d3565b611406565b34801561085657600080fd5b50610528601e5481565b34801561086c57600080fd5b506014546104619060ff1681565b34801561088657600080fd5b5061049661089536600461331c565b611440565b3480156108a657600080fd5b506104da6108b536600461313f565b611511565b3480156108c657600080fd5b506104966108d536600461313f565b611588565b3480156108e657600080fd5b506104966108f536600461313f565b6115b7565b34801561090657600080fd5b5061049661091536600461313f565b6115e6565b34801561092657600080fd5b50610528610935366004613199565b611615565b34801561094657600080fd5b5061049661169c565b34801561095b57600080fd5b5061049661096a36600461313f565b6116d2565b34801561097b57600080fd5b5061049661098a36600461313f565b611701565b34801561099b57600080fd5b50600a546001600160a01b03166104da565b3480156109b957600080fd5b50610496611730565b3480156109ce57600080fd5b506104ad61175b565b3480156109e357600080fd5b506109ec61176a565b60405161046d91906133c2565b348015610a0557600080fd5b506014546104619062010000900460ff1681565b348015610a2557600080fd5b506104966117cb565b610496610a3c36600461313f565b611801565b348015610a4d57600080fd5b50610496610a5c366004613403565b611b47565b348015610a6d57600080fd5b50610496611c0b565b348015610a8257600080fd5b50610528610a91366004613199565b611c46565b348015610aa257600080fd5b50610496610ab1366004613436565b611c97565b348015610ac257600080fd5b506104da610ad136600461313f565b611ccf565b348015610ae257600080fd5b5061052860135481565b348015610af857600080fd5b50610528610b0736600461313f565b600b6020526000908152604090205481565b348015610b2557600080fd5b506104ad610b3436600461313f565b611cf9565b348015610b4557600080fd5b50610496610b5436600461313f565b611e7d565b610496611eac565b348015610b6d57600080fd5b5061052860115481565b348015610b8357600080fd5b5061052860235481565b348015610b9957600080fd5b50610496610ba83660046132d3565b611fb2565b348015610bb957600080fd5b50610461610bc83660046134b2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610c0257600080fd5b50610496610c113660046134dc565b611fe8565b61049661202a565b348015610c2a57600080fd5b50610496610c3936600461313f565b612033565b348015610c4a57600080fd5b50610496610c593660046132d3565b6121fb565b348015610c6a57600080fd5b50610496610c79366004613199565b612231565b348015610c8a57600080fd5b50610528610c9936600461331c565b6122cc565b348015610caa57600080fd5b50601f546104619060ff1681565b348015610cc457600080fd5b506104da610cd336600461313f565b612337565b348015610ce457600080fd5b5061052860205481565b60006001600160e01b0319821663780e9d6360e01b1480610d135750610d1382612347565b92915050565b600a546001600160a01b03163314610d4c5760405162461bcd60e51b8152600401610d4390613551565b60405180910390fd5b6014805460ff1916911515919091179055565b606060008054610d6e90613586565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90613586565b8015610de75780601f10610dbc57610100808354040283529160200191610de7565b820191906000526020600020905b815481529060010190602001808311610dca57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610e6a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610d43565b506000908152600460205260409020546001600160a01b031690565b6000610e9182611511565b9050806001600160a01b0316836001600160a01b031603610efe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610d43565b336001600160a01b0382161480610f1a5750610f1a8133610bc8565b610f8c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610d43565b610f968383612397565b505050565b6000610fa633611615565b90506000805b82811015610fff576000610fc033836110bc565b9050610fcb81611261565b610fd590846135d0565b6017546000928352600b602052604090922091909155915080610ff7816135e8565b915050610fac565b50604051339082156108fc029083906000818181858888f19350505050158015610f96573d6000803e3d6000fd5b600a546001600160a01b031633146110575760405162461bcd60e51b8152600401610d4390613551565b602355565b600a546001600160a01b031633146110865760405162461bcd60e51b8152600401610d4390613551565b602155565b6110953382612405565b6110b15760405162461bcd60e51b8152600401610d4390613601565b610f968383836124fc565b60006110c783611615565b82106111295760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610d43565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000805b6015548110156111b257826001600160a01b03166015828154811061117d5761117d613652565b6000918252602090912001546001600160a01b0316036111a05750600192915050565b806111aa816135e8565b915050611156565b50600092915050565b600a546001600160a01b031633146111e55760405162461bcd60e51b8152600401610d4390613551565b60148054911515620100000262ff000019909216919091179055565b600a546001600160a01b0316331461122b5760405162461bcd60e51b8152600401610d4390613551565b601954604051339180156108fc02916000818181858888f19350505050158015611259573d6000803e3d6000fd5b506000601955565b6000818152600b602052604081205460175461127d9190613668565b610d1390826135d0565b610f9683838360405180602001604052806000815250611c97565b606060006112af83611615565b905060008167ffffffffffffffff8111156112cc576112cc613234565b6040519080825280602002602001820160405280156112f5578160200160208202803683370190505b50905060005b8281101561133c5761130d85826110bc565b82828151811061131f5761131f613652565b602090810291909101015280611334816135e8565b9150506112fb565b509392505050565b600a546001600160a01b0316331461136e5760405162461bcd60e51b8152600401610d4390613551565b601055565b600061137e60085490565b82106113e15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610d43565b600882815481106113f4576113f4613652565b90600052602060002001549050919050565b600a546001600160a01b031633146114305760405162461bcd60e51b8152600401610d4390613551565b600d61143c82826136cd565b5050565b600061144b826122cc565b905060005b8251811015610fff57336001600160a01b031661148584838151811061147857611478613652565b6020026020010151611511565b6001600160a01b0316146114cb5760405162461bcd60e51b815260206004820152600d60248201526c13dddb995c88125b9d985b1a59609a1b6044820152606401610d43565b601754600b60008584815181106114e4576114e4613652565b60200260200101518152602001908152602001600020819055508080611509906135e8565b915050611450565b6000818152600260205260408120546001600160a01b031680610d135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610d43565b600a546001600160a01b031633146115b25760405162461bcd60e51b8152600401610d4390613551565b601655565b600a546001600160a01b031633146115e15760405162461bcd60e51b8152600401610d4390613551565b602055565b600a546001600160a01b031633146116105760405162461bcd60e51b8152600401610d4390613551565b601155565b60006001600160a01b0382166116805760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610d43565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146116c65760405162461bcd60e51b8152600401610d4390613551565b6116d060006126a7565b565b600a546001600160a01b031633146116fc5760405162461bcd60e51b8152600401610d4390613551565b602255565b600a546001600160a01b0316331461172b5760405162461bcd60e51b8152600401610d4390613551565b601255565b6024546001600160a01b0316331461174757600080fd5b601f805460ff19811660ff90911615179055565b606060018054610d6e90613586565b6060601a805480602002602001604051908101604052809291908181526020018280548015610de757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117a4575050505050905090565b6024546001600160a01b031633146117e257600080fd5b6024546001600160a01b031633146117f957600080fd5b6116d06126f9565b60145460ff161561184d5760405162461bcd60e51b81526020600482015260166024820152751d1a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401610d43565b600061185860085490565b9050600082116118aa5760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401610d43565b6012548211156119085760405162461bcd60e51b8152602060048201526024808201527f6d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656044820152631959195960e21b6064820152608401610d43565b60115461191583836135d0565b111561195c5760405162461bcd60e51b81526020600482015260166024820152751b585e08139195081b1a5b5a5d08195e18d95959195960521b6044820152606401610d43565b600a546001600160a01b03163314611a915760145462010000900460ff161515600103611a3f5761198c33611152565b6119d25760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610d43565b336000908152600c60205260409020546013546119ef84836135d0565b1115611a3d5760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e4654207065722061646472657373206578636565646564000000006044820152606401610d43565b505b81601054611a4d919061378d565b341015611a915760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610d43565b60015b828111611b0357336000908152600c60205260408120805491611ab6836135e8565b90915550611acf905033611aca83856135d0565b6128bf565b601754600b6000611ae084866135d0565b815260208101919091526040016000205580611afb816135e8565b915050611a94565b506000606460165434611b16919061378d565b611b2091906137c2565b9050611b2b816128d9565b3460196000828254611b3d91906135d0565b9091555050505050565b336001600160a01b03831603611b9f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d43565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b03163314611c355760405162461bcd60e51b8152600401610d4390613551565b6014805461ff001916610100179055565b600080611c5283611615565b90506000805b8281101561133c576000611c6c86836110bc565b9050611c7781611261565b611c8190846135d0565b9250508080611c8f906135e8565b915050611c58565b611ca13383612405565b611cbd5760405162461bcd60e51b8152600401610d4390613601565b611cc984848484612943565b50505050565b60158181548110611cdf57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000818152600260205260409020546060906001600160a01b0316611d785760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610d43565b601454610100900460ff161515600003611e1e57600f8054611d9990613586565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc590613586565b8015611e125780601f10611de757610100808354040283529160200191611e12565b820191906000526020600020905b815481529060010190602001808311611df557829003601f168201915b50505050509050919050565b6000611e28612976565b90506000815111611e485760405180602001604052806000815250611e76565b80611e5284612985565b600e604051602001611e66939291906137d6565b6040516020818303038152906040525b9392505050565b600a546001600160a01b03163314611ea75760405162461bcd60e51b8152600401610d4390613551565b601355565b6021543414611eba57600080fd5b601f5460ff1615611f015760405162461bcd60e51b8152602060048201526011602482015270131bdd1d195c9e481a5cc81c185d5cd959607a1b6044820152606401610d43565b601a805460018101825560009182527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b03191633179055601b805491611f50836135e8565b919050555034601e6000828254611f6791906135d0565b90915550506040513381527f31e760aa525306aba638a784082a013b6a1cc0a9a1789f3f22281c0453b10b1f9060200160405180910390a1602054601b54106116d0576116d06126f9565b600a546001600160a01b03163314611fdc5760405162461bcd60e51b8152600401610d4390613551565b600e61143c82826136cd565b600a546001600160a01b031633146120125760405162461bcd60e51b8152600401610d4390613551565b61201e60156000612f86565b610f9660158383612fa4565b6116d0346128d9565b600a546001600160a01b0316331461205d5760405162461bcd60e51b8152600401610d4390613551565b600061206860085490565b9050600082116120ba5760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401610d43565b6011546120c783836135d0565b111561210e5760405162461bcd60e51b81526020600482015260166024820152751b585e08139195081b1a5b5a5d08195e18d95959195960521b6044820152606401610d43565b600a546001600160a01b0316331461218e5760145462010000900460ff16151560010361218e5761213e33611152565b6121845760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd081dda1a5d195b1a5cdd1959604a1b6044820152606401610d43565b33600052600c6020525b60015b828111610f9657336000908152600c602052604081208054916121b3836135e8565b909155506121c7905033611aca83856135d0565b601754600b60006121d884866135d0565b8152602081019190915260400160002055806121f3816135e8565b915050612191565b600a546001600160a01b031633146122255760405162461bcd60e51b8152600401610d4390613551565b600f61143c82826136cd565b600a546001600160a01b0316331461225b5760405162461bcd60e51b8152600401610d4390613551565b6001600160a01b0381166122c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d43565b6122c9816126a7565b50565b6000805b825181101561233157600b60008483815181106122ef576122ef613652565b60200260200101518152602001908152602001600020546017546123139190613668565b61231d90836135d0565b915080612329816135e8565b9150506122d0565b50919050565b601a8181548110611cdf57600080fd5b60006001600160e01b031982166380ac58cd60e01b148061237857506001600160e01b03198216635b5e139f60e01b145b80610d1357506301ffc9a760e01b6001600160e01b0319831614610d13565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906123cc82611511565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661247e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610d43565b600061248983611511565b9050806001600160a01b0316846001600160a01b031614806124c45750836001600160a01b03166124b984610df1565b6001600160a01b0316145b806124f457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661250f82611511565b6001600160a01b0316146125775760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610d43565b6001600160a01b0382166125d95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d43565b6125e4838383612a86565b6125ef600082612397565b6001600160a01b0383166000908152600360205260408120805460019290612618908490613668565b90915550506001600160a01b03821660009081526003602052604081208054600192906126469084906135d0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a54600090612707612b3e565b6127119190613876565b90506000602054602154612725919061378d565b90506000601a838154811061273c5761273c613652565b60009182526020822001546023546001600160a01b039091169250606490612764908561378d565b61276e91906137c2565b90506000606460225485612782919061378d565b61278c91906137c2565b9050600061279a82846135d0565b905060006127a88287613668565b90506127b3846128d9565b600a546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156127ed573d6000803e3d6000fd5b506040516001600160a01b0386169082156108fc029083906000818181858888f19350505050158015612824573d6000803e3d6000fd5b50604080516000815260208101918290525161284291601a91613007565b506000601b55604080516001600160a01b0387168152602081018890527f6e0d11c40e939975aea1b614617340d694125da9ebed64c96cab216ca971564e910160405180910390a1601c805490600061289a836135e8565b919050555083601d60008282546128b191906135d0565b909155505050505050505050565b61143c828260405180602001604052806000815250612b74565b806018546128e791906135d0565b6018556008546128f790826137c2565b6017600082825461290891906135d0565b90915550506040518181527fbadc96f0b899bb720d18a25ea9fae343d6095c7f760d4a54ee0d65fe1c66ccd19060200160405180910390a150565b61294e8484846124fc565b61295a84848484612ba7565b611cc95760405162461bcd60e51b8152600401610d439061388a565b6060600d8054610d6e90613586565b6060816000036129ac5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156129d657806129c0816135e8565b91506129cf9050600a836137c2565b91506129b0565b60008167ffffffffffffffff8111156129f1576129f1613234565b6040519080825280601f01601f191660200182016040528015612a1b576020820181803683370190505b5090505b84156124f457612a30600183613668565b9150612a3d600a86613876565b612a489060306135d0565b60f81b818381518110612a5d57612a5d613652565b60200101906001600160f81b031916908160001a905350612a7f600a866137c2565b9450612a1f565b6001600160a01b038316612ae157612adc81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612b04565b816001600160a01b0316836001600160a01b031614612b0457612b048382612ca8565b6001600160a01b038216612b1b57610f9681612d45565b826001600160a01b0316826001600160a01b031614610f9657610f968282612df4565b60004442601a604051602001612b56939291906138dc565b6040516020818303038152906040528051906020012060001c905090565b612b7e8383612e38565b612b8b6000848484612ba7565b610f965760405162461bcd60e51b8152600401610d439061388a565b60006001600160a01b0384163b15612c9d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612beb90339089908890889060040161392c565b6020604051808303816000875af1925050508015612c26575060408051601f3d908101601f19168201909252612c2391810190613969565b60015b612c83573d808015612c54576040519150601f19603f3d011682016040523d82523d6000602084013e612c59565b606091505b508051600003612c7b5760405162461bcd60e51b8152600401610d439061388a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506124f4565b506001949350505050565b60006001612cb584611615565b612cbf9190613668565b600083815260076020526040902054909150808214612d12576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090612d5790600190613668565b60008381526009602052604081205460088054939450909284908110612d7f57612d7f613652565b906000526020600020015490508060088381548110612da057612da0613652565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612dd857612dd8613986565b6001900381819060005260206000200160009055905550505050565b6000612dff83611615565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216612e8e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d43565b6000818152600260205260409020546001600160a01b031615612ef35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d43565b612eff60008383612a86565b6001600160a01b0382166000908152600360205260408120805460019290612f289084906135d0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b50805460008255906000526020600020908101906122c9919061305c565b828054828255906000526020600020908101928215612ff7579160200282015b82811115612ff75781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190612fc4565b5061300392915061305c565b5090565b828054828255906000526020600020908101928215612ff7579160200282015b82811115612ff757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613027565b5b80821115613003576000815560010161305d565b6001600160e01b0319811681146122c957600080fd5b60006020828403121561309957600080fd5b8135611e7681613071565b803580151581146130b457600080fd5b919050565b6000602082840312156130cb57600080fd5b611e76826130a4565b60005b838110156130ef5781810151838201526020016130d7565b83811115611cc95750506000910152565b600081518084526131188160208601602086016130d4565b601f01601f19169290920160200192915050565b602081526000611e766020830184613100565b60006020828403121561315157600080fd5b5035919050565b80356001600160a01b03811681146130b457600080fd5b6000806040838503121561318257600080fd5b61318b83613158565b946020939093013593505050565b6000602082840312156131ab57600080fd5b611e7682613158565b6000806000606084860312156131c957600080fd5b6131d284613158565b92506131e060208501613158565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b818110156132285783518352928401929184019160010161320c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561327357613273613234565b604052919050565b600067ffffffffffffffff83111561329557613295613234565b6132a8601f8401601f191660200161324a565b90508281528383830111156132bc57600080fd5b828260208301376000602084830101529392505050565b6000602082840312156132e557600080fd5b813567ffffffffffffffff8111156132fc57600080fd5b8201601f8101841361330d57600080fd5b6124f48482356020840161327b565b6000602080838503121561332f57600080fd5b823567ffffffffffffffff8082111561334757600080fd5b818501915085601f83011261335b57600080fd5b81358181111561336d5761336d613234565b8060051b915061337e84830161324a565b818152918301840191848101908884111561339857600080fd5b938501935b838510156133b65784358252938501939085019061339d565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156132285783516001600160a01b0316835292840192918401916001016133de565b6000806040838503121561341657600080fd5b61341f83613158565b915061342d602084016130a4565b90509250929050565b6000806000806080858703121561344c57600080fd5b61345585613158565b935061346360208601613158565b925060408501359150606085013567ffffffffffffffff81111561348657600080fd5b8501601f8101871361349757600080fd5b6134a68782356020840161327b565b91505092959194509250565b600080604083850312156134c557600080fd5b6134ce83613158565b915061342d60208401613158565b600080602083850312156134ef57600080fd5b823567ffffffffffffffff8082111561350757600080fd5b818501915085601f83011261351b57600080fd5b81358181111561352a57600080fd5b8660208260051b850101111561353f57600080fd5b60209290920196919550909350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061359a57607f821691505b60208210810361233157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156135e3576135e36135ba565b500190565b6000600182016135fa576135fa6135ba565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008282101561367a5761367a6135ba565b500390565b601f821115610f9657600081815260208120601f850160051c810160208610156136a65750805b601f850160051c820191505b818110156136c5578281556001016136b2565b505050505050565b815167ffffffffffffffff8111156136e7576136e7613234565b6136fb816136f58454613586565b8461367f565b602080601f83116001811461373057600084156137185750858301515b600019600386901b1c1916600185901b1785556136c5565b600085815260208120601f198616915b8281101561375f57888601518255948401946001909101908401613740565b508582101561377d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008160001904831182151516156137a7576137a76135ba565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826137d1576137d16137ac565b500490565b6000845160206137e98285838a016130d4565b8551918401916137fc8184848a016130d4565b855492019160009061380d81613586565b60018281168015613825576001811461383a57613866565b60ff1984168752821515830287019450613866565b896000528560002060005b8481101561385e57815489820152908301908701613845565b505082870194505b50929a9950505050505050505050565b600082613885576138856137ac565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b838152600060208481840152604083018454856000528260002060005b8281101561391e5781546001600160a01b0316845292840192600191820191016138f9565b509198975050505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061395f90830184613100565b9695505050505050565b60006020828403121561397b57600080fd5b8151611e7681613071565b634e487b7160e01b600052603160045260246000fdfea264697066735822122009edf38657a31c6ee27c71e6cc0522f5490575c44a6becbe947db8304b72362e64736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b43726f70657473204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000743524f5045545300000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Cropets NFT
Arg [1] : _symbol (string): CROPETS
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [3] : 43726f70657473204e4654000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [5] : 43524f5045545300000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
18193:10094:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14484:224;;;;;;;;;;-1:-1:-1;14484:224:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;14484:224:0;;;;;;;;25966:75;;;;;;;;;;-1:-1:-1;25966:75:0;;;;;:::i;:::-;;:::i;:::-;;8377:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9407:219::-;;;;;;;;;;-1:-1:-1;9407:219:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2042:32:1;;;2024:51;;2012:2;1997:18;9407:219:0;1878:203:1;9031:370:0;;;;;;;;;;-1:-1:-1;9031:370:0;;;;;:::i;:::-;;:::i;19135:38::-;;;;;;;;;;;;;;;;;;;2669:25:1;;;2657:2;2642:18;19135:38:0;2523:177:1;23319:361:0;;;;;;;;;;;;;:::i;19064:26::-;;;;;;;;;;;;;;;;19298:36;;;;;;;;;;;;;;;;18557:31;;;;;;;;;;;;;;;;26531:125;;;;;;;;;;-1:-1:-1;26531:125:0;;;;;:::i;:::-;;:::i;26786:104::-;;;;;;;;;;-1:-1:-1;26786:104:0;;;;;:::i;:::-;;:::i;14976:113::-;;;;;;;;;;-1:-1:-1;15064:10:0;:17;14976:113;;18343:55;;;;;;;;;;-1:-1:-1;18343:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;18949:30;;;;;;;;;;;;;;;;18634:33;;;;;;;;;;;;;;;;10101:250;;;;;;;;;;-1:-1:-1;10101:250:0;;;;;:::i;:::-;;:::i;18986:32::-;;;;;;;;;;;;;;;;14714:256;;;;;;;;;;-1:-1:-1;14714:256:0;;;;;:::i;:::-;;:::i;24022:267::-;;;;;;;;;;-1:-1:-1;24022:267:0;;;;;:::i;:::-;;:::i;26154:97::-;;;;;;;;;;-1:-1:-1;26154:97:0;;;;;:::i;:::-;;:::i;28149:135::-;;;;;;;;;;;;;:::i;22776:170::-;;;;;;;;;;-1:-1:-1;22776:170:0;;;;;:::i;:::-;;:::i;10357:151::-;;;;;;;;;;-1:-1:-1;10357:151:0;;;;;:::i;:::-;;:::i;24295:346::-;;;;;;;;;;-1:-1:-1;24295:346:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;25288:82::-;;;;;;;;;;-1:-1:-1;25288:82:0;;;;;:::i;:::-;;:::i;18910:32::-;;;;;;;;;;;;;;;;19341;;;;;;;;;;;;;;;;15095:233;;;;;;;;;;-1:-1:-1;15095:233:0;;;;;:::i;:::-;;:::i;19097:30::-;;;;;;;;;;;;;;;;19422:29;;;;;;;;;;-1:-1:-1;19422:29:0;;;;-1:-1:-1;;;;;19422:29:0;;;18750:28;;;;;;;;;;-1:-1:-1;18750:28:0;;;;;;;;;;;18870:33;;;;;;;;;;;;;;;;25602:100;;;;;;;;;;-1:-1:-1;25602:100:0;;;;;:::i;:::-;;:::i;19181:32::-;;;;;;;;;;;;;;;;18718:25;;;;;;;;;;-1:-1:-1;18718:25:0;;;;;;;;22952:361;;;;;;;;;;-1:-1:-1;22952:361:0;;;;;:::i;:::-;;:::i;8132:239::-;;;;;;;;;;-1:-1:-1;8132:239:0;;;;;:::i;:::-;;:::i;26409:116::-;;;;;;;;;;-1:-1:-1;26409:116:0;;;;;:::i;:::-;;:::i;26896:104::-;;;;;;;;;;-1:-1:-1;26896:104:0;;;;;:::i;:::-;;:::i;25376:96::-;;;;;;;;;;-1:-1:-1;25376:96:0;;;;;:::i;:::-;;:::i;7918:208::-;;;;;;;;;;-1:-1:-1;7918:208:0;;;;;:::i;:::-;;:::i;17715:94::-;;;;;;;;;;;;;:::i;26662:114::-;;;;;;;;;;-1:-1:-1;26662:114:0;;;;;:::i;:::-;;:::i;25478:118::-;;;;;;;;;;-1:-1:-1;25478:118:0;;;;;:::i;:::-;;:::i;17496:87::-;;;;;;;;;;-1:-1:-1;17569:6:0;;-1:-1:-1;;;;;17569:6:0;17496:87;;26047:101;;;;;;;;;;;;;:::i;8483:104::-;;;;;;;;;;;;;:::i;27006:101::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18785:34::-;;;;;;;;;;-1:-1:-1;18785:34:0;;;;;;;;;;;27113:126;;;;;;;;;;;;;:::i;19935:1201::-;;;;;;:::i;:::-;;:::i;9632:293::-;;;;;;;;;;-1:-1:-1;9632:293:0;;;;;:::i;:::-;;:::i;25101:69::-;;;;;;;;;;;;;:::i;23686:330::-;;;;;;;;;;-1:-1:-1;23686:330:0;;;;;:::i;:::-;;:::i;10514:285::-;;;;;;;;;;-1:-1:-1;10514:285:0;;;;;:::i;:::-;;:::i;18826:37::-;;;;;;;;;;-1:-1:-1;18826:37:0;;;;;:::i;:::-;;:::i;18674:::-;;;;;;;;;;;;;;;;18286:50;;;;;;;;;;-1:-1:-1;18286:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;24647:448;;;;;;;;;;-1:-1:-1;24647:448:0;;;;;:::i;:::-;;:::i;25176:106::-;;;;;;;;;;-1:-1:-1;25176:106:0;;;;;:::i;:::-;;:::i;21888:376::-;;;:::i;18595:32::-;;;;;;;;;;;;;;;;19380:35;;;;;;;;;;;;;;;;25708:124;;;;;;;;;;-1:-1:-1;25708:124:0;;;;;:::i;:::-;;:::i;9931:164::-;;;;;;;;;;-1:-1:-1;9931:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;10052:25:0;;;10028:4;10052:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;9931:164;26257:146;;;;;;;;;;-1:-1:-1;26257:146:0;;;;;:::i;:::-;;:::i;22457:72::-;;;:::i;21142:740::-;;;;;;;;;;-1:-1:-1;21142:740:0;;;;;:::i;:::-;;:::i;25838:122::-;;;;;;;;;;-1:-1:-1;25838:122:0;;;;;:::i;:::-;;:::i;17815:192::-;;;;;;;;;;-1:-1:-1;17815:192:0;;;;;:::i;:::-;;:::i;22535:235::-;;;;;;;;;;-1:-1:-1;22535:235:0;;;;;:::i;:::-;;:::i;19221:32::-;;;;;;;;;;-1:-1:-1;19221:32:0;;;;;;;;19025;;;;;;;;;;-1:-1:-1;19025:32:0;;;;;:::i;:::-;;:::i;19260:31::-;;;;;;;;;;;;;;;;14484:224;14586:4;-1:-1:-1;;;;;;14610:50:0;;-1:-1:-1;;;14610:50:0;;:90;;;14664:36;14688:11;14664:23;:36::i;:::-;14603:97;14484:224;-1:-1:-1;;14484:224:0:o;25966:75::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;;;;;;;;;26018:6:::1;:15:::0;;-1:-1:-1;;26018:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25966:75::o;8377:100::-;8431:13;8464:5;8457:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8377:100;:::o;9407:219::-;9483:7;11172:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11172:16:0;9503:73;;;;-1:-1:-1;;;9503:73:0;;9764:2:1;9503:73:0;;;9746:21:1;9803:2;9783:18;;;9776:30;9842:34;9822:18;;;9815:62;-1:-1:-1;;;9893:18:1;;;9886:42;9945:19;;9503:73:0;9562:408:1;9503:73:0;-1:-1:-1;9594:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;9594:24:0;;9407:219::o;9031:370::-;9112:13;9128:23;9143:7;9128:14;:23::i;:::-;9112:39;;9176:5;-1:-1:-1;;;;;9170:11:0;:2;-1:-1:-1;;;;;9170:11:0;;9162:57;;;;-1:-1:-1;;;9162:57:0;;10177:2:1;9162:57:0;;;10159:21:1;10216:2;10196:18;;;10189:30;10255:34;10235:18;;;10228:62;-1:-1:-1;;;10306:18:1;;;10299:31;10347:19;;9162:57:0;9975:397:1;9162:57:0;6966:10;-1:-1:-1;;;;;9238:21:0;;;;:62;;-1:-1:-1;9263:37:0;9280:5;6966:10;9931:164;:::i;9263:37::-;9230:131;;;;-1:-1:-1;;;9230:131:0;;10579:2:1;9230:131:0;;;10561:21:1;10618:2;10598:18;;;10591:30;10657:34;10637:18;;;10630:62;10728:26;10708:18;;;10701:54;10772:19;;9230:131:0;10377:420:1;9230:131:0;9372:21;9381:2;9385:7;9372:8;:21::i;:::-;9101:300;9031:370;;:::o;23319:361::-;23360:10;23373:21;23383:10;23373:9;:21::i;:::-;23360:34;;23401:15;23431:6;23427:202;23447:5;23443:1;:9;23427:202;;;23469:12;23484:34;23504:10;23516:1;23484:19;:34::i;:::-;23469:49;;23541:24;23557:7;23541:15;:24::i;:::-;23529:37;;;;:::i;:::-;23604:17;;23577:24;;;;:15;:24;;;;;;:44;;;;23529:37;-1:-1:-1;23454:3:0;;;;:::i;:::-;;;;23427:202;;;-1:-1:-1;23635:37:0;;23643:10;;23635:37;;;;;23664:7;;23635:37;;;;23664:7;23643:10;23635:37;;;;;;;;;;;;;;;;;;;26531:125;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;26612:16:::1;:36:::0;26531:125::o;26786:104::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;26856:11:::1;:26:::0;26786:104::o;10101:250::-;10209:41;6966:10;10242:7;10209:18;:41::i;:::-;10201:103;;;;-1:-1:-1;;;10201:103:0;;;;;;;:::i;:::-;10315:28;10325:4;10331:2;10335:7;10315:9;:28::i;14714:256::-;14811:7;14847:23;14864:5;14847:16;:23::i;:::-;14839:5;:31;14831:87;;;;-1:-1:-1;;;14831:87:0;;11827:2:1;14831:87:0;;;11809:21:1;11866:2;11846:18;;;11839:30;11905:34;11885:18;;;11878:62;-1:-1:-1;;;11956:18:1;;;11949:41;12007:19;;14831:87:0;11625:407:1;14831:87:0;-1:-1:-1;;;;;;14936:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;14714:256::o;24022:267::-;24081:4;;24098:165;24119:20;:27;24115:31;;24098:165;;;24199:5;-1:-1:-1;;;;;24172:32:0;:20;24193:1;24172:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;24172:23:0;:32;24168:84;;-1:-1:-1;24232:4:0;;24022:267;-1:-1:-1;;24022:267:0:o;24168:84::-;24148:3;;;;:::i;:::-;;;;24098:165;;;-1:-1:-1;24276:5:0;;24022:267;-1:-1:-1;;24022:267:0:o;26154:97::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;26219:15:::1;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;26219:24:0;;::::1;::::0;;;::::1;::::0;;26154:97::o;28149:135::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;28226:17:::1;::::0;28197:47:::1;::::0;28205:10:::1;::::0;28197:47;::::1;;;::::0;::::1;::::0;;;28226:17;28205:10;28197:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;28275:1:0::1;28255:17;:21:::0;28149:135::o;22776:170::-;22847:15;22906:32;;;:15;:32;;;;;;22886:17;;:52;;22906:32;22886:52;:::i;:::-;22875:63;;;;:::i;10357:151::-;10461:39;10478:4;10484:2;10488:7;10461:39;;;;;;;;;;;;:16;:39::i;24295:346::-;24355:16;24380:23;24406:17;24416:6;24406:9;:17::i;:::-;24380:43;;24430:25;24472:15;24458:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24458:30:0;;24430:58;;24504:9;24499:113;24519:15;24515:1;:19;24499:113;;;24570:30;24590:6;24598:1;24570:19;:30::i;:::-;24556:8;24565:1;24556:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;24536:3;;;;:::i;:::-;;;;24499:113;;;-1:-1:-1;24625:8:0;24295:346;-1:-1:-1;;;24295:346:0:o;25288:82::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25347:4:::1;:15:::0;25288:82::o;15095:233::-;15170:7;15206:30;15064:10;:17;;14976:113;15206:30;15198:5;:38;15190:95;;;;-1:-1:-1;;;15190:95:0;;12501:2:1;15190:95:0;;;12483:21:1;12540:2;12520:18;;;12513:30;12579:34;12559:18;;;12552:62;-1:-1:-1;;;12630:18:1;;;12623:42;12682:19;;15190:95:0;12299:408:1;15190:95:0;15303:10;15314:5;15303:17;;;;;;;;:::i;:::-;;;;;;;;;15296:24;;15095:233;;;:::o;25602:100::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25673:7:::1;:21;25683:11:::0;25673:7;:21:::1;:::i;:::-;;25602:100:::0;:::o;22952:361::-;23017:15;23035:20;23046:8;23035:10;:20::i;:::-;23017:38;;23071:9;23066:196;23090:8;:15;23086:1;:19;23066:196;;;23159:10;-1:-1:-1;;;;;23135:34:0;:20;23143:8;23152:1;23143:11;;;;;;;;:::i;:::-;;;;;;;23135:7;:20::i;:::-;-1:-1:-1;;;;;23135:34:0;;23127:60;;;;-1:-1:-1;;;23127:60:0;;15118:2:1;23127:60:0;;;15100:21:1;15157:2;15137:18;;;15130:30;-1:-1:-1;;;15176:18:1;;;15169:43;15229:18;;23127:60:0;14916:337:1;23127:60:0;23233:17;;23202:15;:28;23218:8;23227:1;23218:11;;;;;;;;:::i;:::-;;;;;;;23202:28;;;;;;;;;;;:48;;;;23107:3;;;;;:::i;:::-;;;;23066:196;;8132:239;8204:7;8240:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8240:16:0;;8267:73;;;;-1:-1:-1;;;8267:73:0;;15460:2:1;8267:73:0;;;15442:21:1;15499:2;15479:18;;;15472:30;15538:34;15518:18;;;15511:62;-1:-1:-1;;;15589:18:1;;;15582:39;15638:19;;8267:73:0;15258:405:1;26409:116:0;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;26485:14:::1;:32:::0;26409:116::o;26896:104::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;26966:11:::1;:26:::0;26896:104::o;25376:96::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25442:9:::1;:22:::0;25376:96::o;7918:208::-;7990:7;-1:-1:-1;;;;;8018:19:0;;8010:74;;;;-1:-1:-1;;;8010:74:0;;15870:2:1;8010:74:0;;;15852:21:1;15909:2;15889:18;;;15882:30;15948:34;15928:18;;;15921:62;-1:-1:-1;;;15999:18:1;;;15992:40;16049:19;;8010:74:0;15668:406:1;8010:74:0;-1:-1:-1;;;;;;8102:16:0;;;;;:9;:16;;;;;;;7918:208::o;17715:94::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;17780:21:::1;17798:1;17780:9;:21::i;:::-;17715:94::o:0;26662:114::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;26738:13:::1;:30:::0;26662:114::o;25478:118::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25555:13:::1;:33:::0;25478:118::o;26047:101::-;19894:14;;-1:-1:-1;;;;;19894:14:0;19880:10;:28;19872:37;;;;;;26127:13:::1;::::0;;-1:-1:-1;;26110:30:0;::::1;26127:13;::::0;;::::1;26126:14;26110:30;::::0;;26047:101::o;8483:104::-;8539:13;8572:7;8565:14;;;;;:::i;27006:101::-;27049:24;27092:7;27085:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27085:14:0;;;;;;;;;;;;;;;;;;;;;;27006:101;:::o;27113:126::-;19894:14;;-1:-1:-1;;;;;19894:14:0;19880:10;:28;19872:37;;;;;;27193:14:::1;::::0;-1:-1:-1;;;;;27193:14:0::1;27179:10;:28;27171:37;;;::::0;::::1;;27219:12;:10;:12::i;19935:1201::-:0;20005:6;;;;20004:7;19996:42;;;;-1:-1:-1;;;19996:42:0;;16281:2:1;19996:42:0;;;16263:21:1;16320:2;16300:18;;;16293:30;-1:-1:-1;;;16339:18:1;;;16332:52;16401:18;;19996:42:0;16079:346:1;19996:42:0;20049:14;20066:13;15064:10;:17;;14976:113;20066:13;20049:30;;20112:1;20098:11;:15;20090:55;;;;-1:-1:-1;;;20090:55:0;;16632:2:1;20090:55:0;;;16614:21:1;16671:2;16651:18;;;16644:30;16710:29;16690:18;;;16683:57;16757:18;;20090:55:0;16430:351:1;20090:55:0;20179:13;;20164:11;:28;;20156:77;;;;-1:-1:-1;;;20156:77:0;;16988:2:1;20156:77:0;;;16970:21:1;17027:2;17007:18;;;17000:30;17066:34;17046:18;;;17039:62;-1:-1:-1;;;17117:18:1;;;17110:34;17161:19;;20156:77:0;16786:400:1;20156:77:0;20276:9;;20252:20;20261:11;20252:6;:20;:::i;:::-;:33;;20244:68;;;;-1:-1:-1;;;20244:68:0;;17393:2:1;20244:68:0;;;17375:21:1;17432:2;17412:18;;;17405:30;-1:-1:-1;;;17451:18:1;;;17444:52;17513:18;;20244:68:0;17191:346:1;20244:68:0;17569:6;;-1:-1:-1;;;;;17569:6:0;20327:10;:21;20323:444;;20368:15;;;;;;;:23;;20387:4;20368:23;20365:314;;20420:25;20434:10;20420:13;:25::i;:::-;20412:61;;;;-1:-1:-1;;;20412:61:0;;17744:2:1;20412:61:0;;;17726:21:1;17783:2;17763:18;;;17756:30;-1:-1:-1;;;17802:18:1;;;17795:53;17865:18;;20412:61:0;17542:347:1;20412:61:0;20540:10;20492:24;20519:32;;;:20;:32;;;;;;20612:18;;20578:30;20597:11;20519:32;20578:30;:::i;:::-;:52;;20570:93;;;;-1:-1:-1;;;20570:93:0;;18096:2:1;20570:93:0;;;18078:21:1;18135:2;18115:18;;;18108:30;18174;18154:18;;;18147:58;18222:18;;20570:93:0;17894:352:1;20570:93:0;20393:286;20365:314;20721:11;20714:4;;:18;;;;:::i;:::-;20701:9;:31;;20693:62;;;;-1:-1:-1;;;20693:62:0;;18626:2:1;20693:62:0;;;18608:21:1;18665:2;18645:18;;;18638:30;-1:-1:-1;;;18684:18:1;;;18677:48;18742:18;;20693:62:0;18424:342:1;20693:62:0;20794:1;20777:214;20802:11;20797:1;:16;20777:214;;20856:10;20835:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;20884:33:0;;-1:-1:-1;20894:10:0;20906;20915:1;20906:6;:10;:::i;:::-;20884:9;:33::i;:::-;20962:17;;20932:15;:27;20948:10;20957:1;20948:6;:10;:::i;:::-;20932:27;;;;;;;;;;;-1:-1:-1;20932:27:0;:47;20815:3;;;;:::i;:::-;;;;20777:214;;;;20997:23;21054:3;21036:14;;21024:9;:26;;;;:::i;:::-;21023:34;;;;:::i;:::-;20997:60;;21064:27;21075:15;21064:10;:27::i;:::-;21119:9;21098:17;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;19935:1201:0:o;9632:293::-;6966:10;-1:-1:-1;;;;;9735:24:0;;;9727:62;;;;-1:-1:-1;;;9727:62:0;;19230:2:1;9727:62:0;;;19212:21:1;19269:2;19249:18;;;19242:30;19308:27;19288:18;;;19281:55;19353:18;;9727:62:0;19028:349:1;9727:62:0;6966:10;9800:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;9800:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;9800:53:0;;;;;;;;;;9869:48;;540:41:1;;;9800:42:0;;6966:10;9869:48;;513:18:1;9869:48:0;;;;;;;9632:293;;:::o;25101:69::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25147:8:::1;:15:::0;;-1:-1:-1;;25147:15:0::1;;;::::0;;25101:69::o;23686:330::-;23754:7;23770:10;23783:17;23793:6;23783:9;:17::i;:::-;23770:30;;23807:13;23839:6;23835:151;23855:5;23851:1;:9;23835:151;;;23881:12;23896:30;23916:6;23924:1;23896:19;:30::i;:::-;23881:45;;23950:24;23966:7;23950:15;:24::i;:::-;23941:33;;;;:::i;:::-;;;23866:120;23862:3;;;;;:::i;:::-;;;;23835:151;;10514:285;10646:41;6966:10;10679:7;10646:18;:41::i;:::-;10638:103;;;;-1:-1:-1;;;10638:103:0;;;;;;;:::i;:::-;10752:39;10766:4;10772:2;10776:7;10785:5;10752:13;:39::i;:::-;10514:285;;;;:::o;18826:37::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18826:37:0;;-1:-1:-1;18826:37:0;:::o;24647:448::-;11148:4;11172:16;;;:7;:16;;;;;;24720:13;;-1:-1:-1;;;;;11172:16:0;24742:82;;;;-1:-1:-1;;;24742:82:0;;19584:2:1;24742:82:0;;;19566:21:1;19623:2;19603:18;;;19596:30;19662:34;19642:18;;;19635:62;-1:-1:-1;;;19713:18:1;;;19706:45;19768:19;;24742:82:0;19382:411:1;24742:82:0;24834:8;;;;;;;:17;;24846:5;24834:17;24831:62;;24871:14;24864:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24647:448;;;:::o;24831:62::-;24899:28;24930:10;:8;:10::i;:::-;24899:41;;24985:1;24960:14;24954:28;:32;:133;;;;;;;;;;;;;;;;;25022:14;25038:18;:7;:16;:18::i;:::-;25058:13;25005:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24954:133;24947:140;24647:448;-1:-1:-1;;;24647:448:0:o;25176:106::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25247:18:::1;:27:::0;25176:106::o;21888:376::-;21958:11;;21945:9;:24;21937:33;;;;;;21990:13;;;;21989:14;21981:44;;;;-1:-1:-1;;;21981:44:0;;21235:2:1;21981:44:0;;;21217:21:1;21274:2;21254:18;;;21247:30;-1:-1:-1;;;21293:18:1;;;21286:47;21350:18;;21981:44:0;21033:341:1;21981:44:0;22036:7;:33;;;;;;;-1:-1:-1;22036:33:0;;;;;;;-1:-1:-1;;;;;;22036:33:0;22057:10;22036:33;;;22080:14;:16;;;;;;:::i;:::-;;;;;;22124:9;22107:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;22149:24:0;;22162:10;2024:51:1;;22149:24:0;;2012:2:1;1997:18;22149:24:0;;;;;;;22206:11;;22188:14;;:29;22184:73;;22233:12;:10;:12::i;25708:124::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25791:13:::1;:33;25807:17:::0;25791:13;:33:::1;:::i;26257:146::-:0;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;26332:27:::1;26339:20;;26332:27;:::i;:::-;26366:29;:20;26389:6:::0;;26366:29:::1;:::i;22457:72::-:0;22500:21;22511:9;22500:10;:21::i;21142:740::-;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;21210:14:::1;21227:13;15064:10:::0;:17;;14976:113;21227:13:::1;21210:30;;21273:1;21259:11;:15;21251:55;;;::::0;-1:-1:-1;;;21251:55:0;;16632:2:1;21251:55:0::1;::::0;::::1;16614:21:1::0;16671:2;16651:18;;;16644:30;16710:29;16690:18;;;16683:57;16757:18;;21251:55:0::1;16430:351:1::0;21251:55:0::1;21349:9;::::0;21325:20:::1;21334:11:::0;21325:6;:20:::1;:::i;:::-;:33;;21317:68;;;::::0;-1:-1:-1;;;21317:68:0;;17393:2:1;21317:68:0::1;::::0;::::1;17375:21:1::0;17432:2;17412:18;;;17405:30;-1:-1:-1;;;17451:18:1;;;17444:52;17513:18;;21317:68:0::1;17191:346:1::0;21317:68:0::1;17569:6:::0;;-1:-1:-1;;;;;17569:6:0;21400:10:::1;:21;21396:255;;21441:15;::::0;;;::::1;;;:23;;21460:4;21441:23:::0;21438:202:::1;;21493:25;21507:10;21493:13;:25::i;:::-;21485:61;;;::::0;-1:-1:-1;;;21485:61:0;;17744:2:1;21485:61:0::1;::::0;::::1;17726:21:1::0;17783:2;17763:18;;;17756:30;-1:-1:-1;;;17802:18:1;;;17795:53;17865:18;;21485:61:0::1;17542:347:1::0;21485:61:0::1;21613:10;21565:24;21592:32:::0;:20:::1;:32;::::0;21438:202:::1;21678:1;21661:214;21686:11;21681:1;:16;21661:214;;21740:10;21719:32;::::0;;;:20:::1;:32;::::0;;;;:34;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;21768:33:0::1;::::0;-1:-1:-1;21778:10:0::1;21790;21799:1:::0;21790:6;:10:::1;:::i;21768:33::-;21846:17;::::0;21816:15:::1;:27;21832:10;21841:1:::0;21832:6;:10:::1;:::i;:::-;21816:27:::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21816:27:0;:47;21699:3;::::1;::::0;::::1;:::i;:::-;;;;21661:214;;25838:122:::0;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;25920:14:::1;:32;25937:15:::0;25920:14;:32:::1;:::i;17815:192::-:0;17569:6;;-1:-1:-1;;;;;17569:6:0;6966:10;17629:23;17621:68;;;;-1:-1:-1;;;17621:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17904:22:0;::::1;17896:73;;;::::0;-1:-1:-1;;;17896:73:0;;21581:2:1;17896:73:0::1;::::0;::::1;21563:21:1::0;21620:2;21600:18;;;21593:30;21659:34;21639:18;;;21632:62;-1:-1:-1;;;21710:18:1;;;21703:36;21756:19;;17896:73:0::1;21379:402:1::0;17896:73:0::1;17980:19;17990:8;17980:9;:19::i;:::-;17815:192:::0;:::o;22535:235::-;22603:15;;22631:132;22655:8;:15;22651:1;:19;22631:132;;;22723:15;:28;22739:8;22748:1;22739:11;;;;;;;;:::i;:::-;;;;;;;22723:28;;;;;;;;;;;;22703:17;;:48;;;;:::i;:::-;22692:59;;;;:::i;:::-;;-1:-1:-1;22672:3:0;;;;:::i;:::-;;;;22631:132;;;;22535:235;;;:::o;19025:32::-;;;;;;;;;;;;7646:266;7748:4;-1:-1:-1;;;;;;7772:40:0;;-1:-1:-1;;;7772:40:0;;:92;;-1:-1:-1;;;;;;;7816:48:0;;-1:-1:-1;;;7816:48:0;7772:92;:132;;;-1:-1:-1;;;;;;;;;;1664:40:0;;;7868:36;1555:157;13144:174;13219:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;13219:29:0;-1:-1:-1;;;;;13219:29:0;;;;;;;;:24;;13273:23;13219:24;13273:14;:23::i;:::-;-1:-1:-1;;;;;13264:46:0;;;;;;;;;;;13144:174;;:::o;11216:348::-;11309:4;11172:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11172:16:0;11326:73;;;;-1:-1:-1;;;11326:73:0;;21988:2:1;11326:73:0;;;21970:21:1;22027:2;22007:18;;;22000:30;22066:34;22046:18;;;22039:62;-1:-1:-1;;;22117:18:1;;;22110:42;22169:19;;11326:73:0;21786:408:1;11326:73:0;11410:13;11426:23;11441:7;11426:14;:23::i;:::-;11410:39;;11479:5;-1:-1:-1;;;;;11468:16:0;:7;-1:-1:-1;;;;;11468:16:0;;:51;;;;11512:7;-1:-1:-1;;;;;11488:31:0;:20;11500:7;11488:11;:20::i;:::-;-1:-1:-1;;;;;11488:31:0;;11468:51;:87;;;-1:-1:-1;;;;;;10052:25:0;;;10028:4;10052:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;11523:32;11460:96;11216:348;-1:-1:-1;;;;11216:348:0:o;12654:484::-;12779:4;-1:-1:-1;;;;;12752:31:0;:23;12767:7;12752:14;:23::i;:::-;-1:-1:-1;;;;;12752:31:0;;12744:85;;;;-1:-1:-1;;;12744:85:0;;22401:2:1;12744:85:0;;;22383:21:1;22440:2;22420:18;;;22413:30;22479:34;22459:18;;;22452:62;-1:-1:-1;;;22530:18:1;;;22523:39;22579:19;;12744:85:0;22199:405:1;12744:85:0;-1:-1:-1;;;;;12848:16:0;;12840:65;;;;-1:-1:-1;;;12840:65:0;;22811:2:1;12840:65:0;;;22793:21:1;22850:2;22830:18;;;22823:30;22889:34;22869:18;;;22862:62;-1:-1:-1;;;22940:18:1;;;22933:34;22984:19;;12840:65:0;22609:400:1;12840:65:0;12916:39;12937:4;12943:2;12947:7;12916:20;:39::i;:::-;12966:29;12983:1;12987:7;12966:8;:29::i;:::-;-1:-1:-1;;;;;13006:15:0;;;;;;:9;:15;;;;;:20;;13025:1;;13006:15;:20;;13025:1;;13006:20;:::i;:::-;;;;-1:-1:-1;;;;;;;13037:13:0;;;;;;:9;:13;;;;;:18;;13054:1;;13037:13;:18;;13054:1;;13037:18;:::i;:::-;;;;-1:-1:-1;;13066:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;13066:21:0;-1:-1:-1;;;;;13066:21:0;;;;;;;;;13103:27;;13066:16;;13103:27;;;;;;;12654:484;;;:::o;18013:173::-;18088:6;;;-1:-1:-1;;;;;18105:17:0;;;-1:-1:-1;;;;;;18105:17:0;;;;;;;18138:40;;18088:6;;;18105:17;18088:6;;18138:40;;18069:16;;18138:40;18058:128;18013:173;:::o;27245:745::-;27313:7;:14;27286:13;;27302:8;:6;:8::i;:::-;:25;;;;:::i;:::-;27286:41;;27338:14;27369:11;;27355;;:25;;;;:::i;:::-;27338:42;;27391:22;27416:7;27424:5;27416:14;;;;;;;;:::i;:::-;;;;;;;;;;27482:16;;-1:-1:-1;;;;;27416:14:0;;;;-1:-1:-1;27502:3:0;;27473:25;;:6;:25;:::i;:::-;27472:33;;;;:::i;:::-;27449:56;;27516:18;27564:3;27547:13;;27538:6;:22;;;;:::i;:::-;27537:30;;;;:::i;:::-;27516:51;-1:-1:-1;27578:17:0;27598:25;27516:51;27598:12;:25;:::i;:::-;27578:45;-1:-1:-1;27634:19:0;27656:18;27578:45;27656:6;:18;:::i;:::-;27634:40;;27685:24;27696:12;27685:10;:24::i;:::-;17569:6;;27720:37;;-1:-1:-1;;;;;17569:6:0;;;;27720:37;;;;;27746:10;;27720:37;;;;27746:10;17569:6;27720:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27768:28:0;;-1:-1:-1;;;;;27768:15:0;;;:28;;;;;27784:11;;27768:28;;;;27784:11;27768:15;:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27818:24:0;;;27840:1;27818:24;;;;;;;;;27808:34;;;:7;;:34;:::i;:::-;-1:-1:-1;27870:1:0;27853:14;:18;27887:25;;;-1:-1:-1;;;;;23331:32:1;;23313:51;;23395:2;23380:18;;23373:34;;;27887:25:0;;23286:18:1;27887:25:0;;;;;;;27923:11;:13;;;:11;:13;;;:::i;:::-;;;;;;27970:12;27947:19;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;27245:745:0:o;11570:110::-;11646:26;11656:2;11660:7;11646:26;;;;;;;;;;;;:9;:26::i;22270:181::-;22357:6;22339:15;;:24;;;;:::i;:::-;22321:15;:42;15064:10;:17;22391:22;;:6;:22;:::i;:::-;22370:17;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;22425:18:0;;2669:25:1;;;22425:18:0;;2657:2:1;2642:18;22425::0;;;;;;;22270:181;:::o;10805:272::-;10919:28;10929:4;10935:2;10939:7;10919:9;:28::i;:::-;10966:48;10989:4;10995:2;10999:7;11008:5;10966:22;:48::i;:::-;10958:111;;;;-1:-1:-1;;;10958:111:0;;;;;;;:::i;19723:104::-;19783:13;19812:7;19805:14;;;;;:::i;1807:532::-;1863:13;1893:5;1902:1;1893:10;1889:53;;-1:-1:-1;;1920:10:0;;;;;;;;;;;;-1:-1:-1;;;1920:10:0;;;;;1807:532::o;1889:53::-;1967:5;1952:12;2008:78;2015:9;;2008:78;;2041:8;;;;:::i;:::-;;-1:-1:-1;2064:10:0;;-1:-1:-1;2072:2:0;2064:10;;:::i;:::-;;;2008:78;;;2096:19;2128:6;2118:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2118:17:0;;2096:39;;2146:154;2153:10;;2146:154;;2180:11;2190:1;2180:11;;:::i;:::-;;-1:-1:-1;2249:10:0;2257:2;2249:5;:10;:::i;:::-;2236:24;;:2;:24;:::i;:::-;2223:39;;2206:6;2213;2206:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;2206:56:0;;;;;;;;-1:-1:-1;2277:11:0;2286:2;2277:11;;:::i;:::-;;;2146:154;;15334:553;-1:-1:-1;;;;;15504:18:0;;15500:187;;15539:40;15571:7;16224:10;:17;;16197:24;;;;:15;:24;;;;;:44;;;16252:24;;;;;;;;;;;;16120:164;15539:40;15500:187;;;15609:2;-1:-1:-1;;;;;15601:10:0;:4;-1:-1:-1;;;;;15601:10:0;;15597:90;;15628:47;15661:4;15667:7;15628:32;:47::i;:::-;-1:-1:-1;;;;;15701:16:0;;15697:183;;15734:45;15771:7;15734:36;:45::i;15697:183::-;15807:4;-1:-1:-1;;;;;15801:10:0;:2;-1:-1:-1;;;;;15801:10:0;;15797:83;;15828:40;15856:2;15860:7;15828:27;:40::i;27996:147::-;28035:4;28090:16;28108:15;28125:7;28073:60;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28063:71;;;;;;28058:77;;28051:84;;27996:147;:::o;11686:250::-;11782:18;11788:2;11792:7;11782:5;:18::i;:::-;11819:54;11850:1;11854:2;11858:7;11867:5;11819:22;:54::i;:::-;11811:117;;;;-1:-1:-1;;;11811:117:0;;;;;;;:::i;13324:756::-;13436:4;-1:-1:-1;;;;;13457:13:0;;3304:20;3352:8;13453:620;;13493:72;;-1:-1:-1;;;13493:72:0;;-1:-1:-1;;;;;13493:36:0;;;;;:72;;6966:10;;13544:4;;13550:7;;13559:5;;13493:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13493:72:0;;;;;;;;-1:-1:-1;;13493:72:0;;;;;;;;;;;;:::i;:::-;;;13489:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13735:6;:13;13752:1;13735:18;13731:272;;13778:60;;-1:-1:-1;;;13778:60:0;;;;;;;:::i;13731:272::-;13953:6;13947:13;13938:6;13934:2;13930:15;13923:38;13489:529;-1:-1:-1;;;;;;13616:51:0;-1:-1:-1;;;13616:51:0;;-1:-1:-1;13609:58:0;;13453:620;-1:-1:-1;14057:4:0;13324:756;;;;;;:::o;16290:549::-;16382:22;16432:1;16407:22;16424:4;16407:16;:22::i;:::-;:26;;;;:::i;:::-;16444:18;16465:26;;;:17;:26;;;;;;16382:51;;-1:-1:-1;16506:28:0;;;16502:234;;-1:-1:-1;;;;;16573:18:0;;16551:19;16573:18;;;:12;:18;;;;;;;;:34;;;;;;;;;16622:30;;;;;;:44;;;16681:30;;:17;:30;;;;;:43;;;16502:234;-1:-1:-1;16753:26:0;;;;:17;:26;;;;;;;;16746:33;;;-1:-1:-1;;;;;16797:18:0;;;;;:12;:18;;;;;:34;;;;;;;16790:41;16290:549::o;16845:419::-;16952:10;:17;16927:22;;16952:21;;16972:1;;16952:21;:::i;:::-;16984:18;17005:24;;;:15;:24;;;;;;17062:10;:26;;16927:46;;-1:-1:-1;17005:24:0;;16927:46;;17062:26;;;;;;:::i;:::-;;;;;;;;;17040:48;;17124:11;17099:10;17110;17099:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;17146:28;;;:15;:28;;;;;;;:41;;;17205:24;;;;;17198:31;17240:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16916:348;;;16845:419;:::o;15893:221::-;15978:14;15995:20;16012:2;15995:16;:20::i;:::-;-1:-1:-1;;;;;16026:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;16071:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;15893:221:0:o;11942:376::-;-1:-1:-1;;;;;12022:16:0;;12014:61;;;;-1:-1:-1;;;12014:61:0;;25662:2:1;12014:61:0;;;25644:21:1;;;25681:18;;;25674:30;25740:34;25720:18;;;25713:62;25792:18;;12014:61:0;25460:356:1;12014:61:0;11148:4;11172:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11172:16:0;:30;12086:58;;;;-1:-1:-1;;;12086:58:0;;26023:2:1;12086:58:0;;;26005:21:1;26062:2;26042:18;;;26035:30;26101;26081:18;;;26074:58;26149:18;;12086:58:0;25821:352:1;12086:58:0;12155:45;12184:1;12188:2;12192:7;12155:20;:45::i;:::-;-1:-1:-1;;;;;12211:13:0;;;;;;:9;:13;;;;;:18;;12228:1;;12211:13;:18;;12228:1;;12211:18;:::i;:::-;;;;-1:-1:-1;;12240:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;12240:21:0;-1:-1:-1;;;;;12240:21:0;;;;;;;;12277:33;;12240:16;;;12277:33;;12240:16;;12277:33;11942:376;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:160::-;657:20;;713:13;;706:21;696:32;;686:60;;742:1;739;732:12;686:60;592:160;;;:::o;757:180::-;813:6;866:2;854:9;845:7;841:23;837:32;834:52;;;882:1;879;872:12;834:52;905:26;921:9;905:26;:::i;942:258::-;1014:1;1024:113;1038:6;1035:1;1032:13;1024:113;;;1114:11;;;1108:18;1095:11;;;1088:39;1060:2;1053:10;1024:113;;;1155:6;1152:1;1149:13;1146:48;;;-1:-1:-1;;1190:1:1;1172:16;;1165:27;942:258::o;1205:::-;1247:3;1285:5;1279:12;1312:6;1307:3;1300:19;1328:63;1384:6;1377:4;1372:3;1368:14;1361:4;1354:5;1350:16;1328:63;:::i;:::-;1445:2;1424:15;-1:-1:-1;;1420:29:1;1411:39;;;;1452:4;1407:50;;1205:258;-1:-1:-1;;1205:258:1:o;1468:220::-;1617:2;1606:9;1599:21;1580:4;1637:45;1678:2;1667:9;1663:18;1655:6;1637:45;:::i;1693:180::-;1752:6;1805:2;1793:9;1784:7;1780:23;1776:32;1773:52;;;1821:1;1818;1811:12;1773:52;-1:-1:-1;1844:23:1;;1693:180;-1:-1:-1;1693:180:1:o;2086:173::-;2154:20;;-1:-1:-1;;;;;2203:31:1;;2193:42;;2183:70;;2249:1;2246;2239:12;2264:254;2332:6;2340;2393:2;2381:9;2372:7;2368:23;2364:32;2361:52;;;2409:1;2406;2399:12;2361:52;2432:29;2451:9;2432:29;:::i;:::-;2422:39;2508:2;2493:18;;;;2480:32;;-1:-1:-1;;;2264:254:1:o;2705:186::-;2764:6;2817:2;2805:9;2796:7;2792:23;2788:32;2785:52;;;2833:1;2830;2823:12;2785:52;2856:29;2875:9;2856:29;:::i;2896:328::-;2973:6;2981;2989;3042:2;3030:9;3021:7;3017:23;3013:32;3010:52;;;3058:1;3055;3048:12;3010:52;3081:29;3100:9;3081:29;:::i;:::-;3071:39;;3129:38;3163:2;3152:9;3148:18;3129:38;:::i;:::-;3119:48;;3214:2;3203:9;3199:18;3186:32;3176:42;;2896:328;;;;;:::o;3229:632::-;3400:2;3452:21;;;3522:13;;3425:18;;;3544:22;;;3371:4;;3400:2;3623:15;;;;3597:2;3582:18;;;3371:4;3666:169;3680:6;3677:1;3674:13;3666:169;;;3741:13;;3729:26;;3810:15;;;;3775:12;;;;3702:1;3695:9;3666:169;;;-1:-1:-1;3852:3:1;;3229:632;-1:-1:-1;;;;;;3229:632:1:o;3866:127::-;3927:10;3922:3;3918:20;3915:1;3908:31;3958:4;3955:1;3948:15;3982:4;3979:1;3972:15;3998:275;4069:2;4063:9;4134:2;4115:13;;-1:-1:-1;;4111:27:1;4099:40;;4169:18;4154:34;;4190:22;;;4151:62;4148:88;;;4216:18;;:::i;:::-;4252:2;4245:22;3998:275;;-1:-1:-1;3998:275:1:o;4278:407::-;4343:5;4377:18;4369:6;4366:30;4363:56;;;4399:18;;:::i;:::-;4437:57;4482:2;4461:15;;-1:-1:-1;;4457:29:1;4488:4;4453:40;4437:57;:::i;:::-;4428:66;;4517:6;4510:5;4503:21;4557:3;4548:6;4543:3;4539:16;4536:25;4533:45;;;4574:1;4571;4564:12;4533:45;4623:6;4618:3;4611:4;4604:5;4600:16;4587:43;4677:1;4670:4;4661:6;4654:5;4650:18;4646:29;4639:40;4278:407;;;;;:::o;4690:451::-;4759:6;4812:2;4800:9;4791:7;4787:23;4783:32;4780:52;;;4828:1;4825;4818:12;4780:52;4868:9;4855:23;4901:18;4893:6;4890:30;4887:50;;;4933:1;4930;4923:12;4887:50;4956:22;;5009:4;5001:13;;4997:27;-1:-1:-1;4987:55:1;;5038:1;5035;5028:12;4987:55;5061:74;5127:7;5122:2;5109:16;5104:2;5100;5096:11;5061:74;:::i;5146:946::-;5230:6;5261:2;5304;5292:9;5283:7;5279:23;5275:32;5272:52;;;5320:1;5317;5310:12;5272:52;5360:9;5347:23;5389:18;5430:2;5422:6;5419:14;5416:34;;;5446:1;5443;5436:12;5416:34;5484:6;5473:9;5469:22;5459:32;;5529:7;5522:4;5518:2;5514:13;5510:27;5500:55;;5551:1;5548;5541:12;5500:55;5587:2;5574:16;5609:2;5605;5602:10;5599:36;;;5615:18;;:::i;:::-;5661:2;5658:1;5654:10;5644:20;;5684:28;5708:2;5704;5700:11;5684:28;:::i;:::-;5746:15;;;5816:11;;;5812:20;;;5777:12;;;;5844:19;;;5841:39;;;5876:1;5873;5866:12;5841:39;5900:11;;;;5920:142;5936:6;5931:3;5928:15;5920:142;;;6002:17;;5990:30;;5953:12;;;;6040;;;;5920:142;;;6081:5;5146:946;-1:-1:-1;;;;;;;;5146:946:1:o;6097:674::-;6284:2;6336:21;;;6406:13;;6309:18;;;6428:22;;;6255:4;;6284:2;6507:15;;;;6481:2;6466:18;;;6255:4;6550:195;6564:6;6561:1;6558:13;6550:195;;;6629:13;;-1:-1:-1;;;;;6625:39:1;6613:52;;6720:15;;;;6685:12;;;;6661:1;6579:9;6550:195;;6776:254;6841:6;6849;6902:2;6890:9;6881:7;6877:23;6873:32;6870:52;;;6918:1;6915;6908:12;6870:52;6941:29;6960:9;6941:29;:::i;:::-;6931:39;;6989:35;7020:2;7009:9;7005:18;6989:35;:::i;:::-;6979:45;;6776:254;;;;;:::o;7035:667::-;7130:6;7138;7146;7154;7207:3;7195:9;7186:7;7182:23;7178:33;7175:53;;;7224:1;7221;7214:12;7175:53;7247:29;7266:9;7247:29;:::i;:::-;7237:39;;7295:38;7329:2;7318:9;7314:18;7295:38;:::i;:::-;7285:48;;7380:2;7369:9;7365:18;7352:32;7342:42;;7435:2;7424:9;7420:18;7407:32;7462:18;7454:6;7451:30;7448:50;;;7494:1;7491;7484:12;7448:50;7517:22;;7570:4;7562:13;;7558:27;-1:-1:-1;7548:55:1;;7599:1;7596;7589:12;7548:55;7622:74;7688:7;7683:2;7670:16;7665:2;7661;7657:11;7622:74;:::i;:::-;7612:84;;;7035:667;;;;;;;:::o;7707:260::-;7775:6;7783;7836:2;7824:9;7815:7;7811:23;7807:32;7804:52;;;7852:1;7849;7842:12;7804:52;7875:29;7894:9;7875:29;:::i;:::-;7865:39;;7923:38;7957:2;7946:9;7942:18;7923:38;:::i;7972:615::-;8058:6;8066;8119:2;8107:9;8098:7;8094:23;8090:32;8087:52;;;8135:1;8132;8125:12;8087:52;8175:9;8162:23;8204:18;8245:2;8237:6;8234:14;8231:34;;;8261:1;8258;8251:12;8231:34;8299:6;8288:9;8284:22;8274:32;;8344:7;8337:4;8333:2;8329:13;8325:27;8315:55;;8366:1;8363;8356:12;8315:55;8406:2;8393:16;8432:2;8424:6;8421:14;8418:34;;;8448:1;8445;8438:12;8418:34;8501:7;8496:2;8486:6;8483:1;8479:14;8475:2;8471:23;8467:32;8464:45;8461:65;;;8522:1;8519;8512:12;8461:65;8553:2;8545:11;;;;;8575:6;;-1:-1:-1;7972:615:1;;-1:-1:-1;;;;7972:615:1:o;8816:356::-;9018:2;9000:21;;;9037:18;;;9030:30;9096:34;9091:2;9076:18;;9069:62;9163:2;9148:18;;8816:356::o;9177:380::-;9256:1;9252:12;;;;9299;;;9320:61;;9374:4;9366:6;9362:17;9352:27;;9320:61;9427:2;9419:6;9416:14;9396:18;9393:38;9390:161;;9473:10;9468:3;9464:20;9461:1;9454:31;9508:4;9505:1;9498:15;9536:4;9533:1;9526:15;10802:127;10863:10;10858:3;10854:20;10851:1;10844:31;10894:4;10891:1;10884:15;10918:4;10915:1;10908:15;10934:128;10974:3;11005:1;11001:6;10998:1;10995:13;10992:39;;;11011:18;;:::i;:::-;-1:-1:-1;11047:9:1;;10934:128::o;11067:135::-;11106:3;11127:17;;;11124:43;;11147:18;;:::i;:::-;-1:-1:-1;11194:1:1;11183:13;;11067:135::o;11207:413::-;11409:2;11391:21;;;11448:2;11428:18;;;11421:30;11487:34;11482:2;11467:18;;11460:62;-1:-1:-1;;;11553:2:1;11538:18;;11531:47;11610:3;11595:19;;11207:413::o;12037:127::-;12098:10;12093:3;12089:20;12086:1;12079:31;12129:4;12126:1;12119:15;12153:4;12150:1;12143:15;12169:125;12209:4;12237:1;12234;12231:8;12228:34;;;12242:18;;:::i;:::-;-1:-1:-1;12279:9:1;;12169:125::o;12838:545::-;12940:2;12935:3;12932:11;12929:448;;;12976:1;13001:5;12997:2;12990:17;13046:4;13042:2;13032:19;13116:2;13104:10;13100:19;13097:1;13093:27;13087:4;13083:38;13152:4;13140:10;13137:20;13134:47;;;-1:-1:-1;13175:4:1;13134:47;13230:2;13225:3;13221:12;13218:1;13214:20;13208:4;13204:31;13194:41;;13285:82;13303:2;13296:5;13293:13;13285:82;;;13348:17;;;13329:1;13318:13;13285:82;;;13289:3;;;12838:545;;;:::o;13559:1352::-;13685:3;13679:10;13712:18;13704:6;13701:30;13698:56;;;13734:18;;:::i;:::-;13763:97;13853:6;13813:38;13845:4;13839:11;13813:38;:::i;:::-;13807:4;13763:97;:::i;:::-;13915:4;;13979:2;13968:14;;13996:1;13991:663;;;;14698:1;14715:6;14712:89;;;-1:-1:-1;14767:19:1;;;14761:26;14712:89;-1:-1:-1;;13516:1:1;13512:11;;;13508:24;13504:29;13494:40;13540:1;13536:11;;;13491:57;14814:81;;13961:944;;13991:663;12785:1;12778:14;;;12822:4;12809:18;;-1:-1:-1;;14027:20:1;;;14145:236;14159:7;14156:1;14153:14;14145:236;;;14248:19;;;14242:26;14227:42;;14340:27;;;;14308:1;14296:14;;;;14175:19;;14145:236;;;14149:3;14409:6;14400:7;14397:19;14394:201;;;14470:19;;;14464:26;-1:-1:-1;;14553:1:1;14549:14;;;14565:3;14545:24;14541:37;14537:42;14522:58;14507:74;;14394:201;-1:-1:-1;;;;;14641:1:1;14625:14;;;14621:22;14608:36;;-1:-1:-1;13559:1352:1:o;18251:168::-;18291:7;18357:1;18353;18349:6;18345:14;18342:1;18339:21;18334:1;18327:9;18320:17;18316:45;18313:71;;;18364:18;;:::i;:::-;-1:-1:-1;18404:9:1;;18251:168::o;18771:127::-;18832:10;18827:3;18823:20;18820:1;18813:31;18863:4;18860:1;18853:15;18887:4;18884:1;18877:15;18903:120;18943:1;18969;18959:35;;18974:18;;:::i;:::-;-1:-1:-1;19008:9:1;;18903:120::o;19798:1230::-;20022:3;20060:6;20054:13;20086:4;20099:51;20143:6;20138:3;20133:2;20125:6;20121:15;20099:51;:::i;:::-;20213:13;;20172:16;;;;20235:55;20213:13;20172:16;20257:15;;;20235:55;:::i;:::-;20379:13;;20312:20;;;20352:1;;20417:36;20379:13;20417:36;:::i;:::-;20472:1;20489:18;;;20516:141;;;;20671:1;20666:337;;;;20482:521;;20516:141;-1:-1:-1;;20551:24:1;;20537:39;;20628:16;;20621:24;20607:39;;20596:51;;;-1:-1:-1;20516:141:1;;20666:337;20697:6;20694:1;20687:17;20745:2;20742:1;20732:16;20770:1;20784:169;20798:8;20795:1;20792:15;20784:169;;;20880:14;;20865:13;;;20858:37;20923:16;;;;20815:10;;20784:169;;;20788:3;;20984:8;20977:5;20973:20;20966:27;;20482:521;-1:-1:-1;21019:3:1;;19798:1230;-1:-1:-1;;;;;;;;;;19798:1230:1:o;23014:112::-;23046:1;23072;23062:35;;23077:18;;:::i;:::-;-1:-1:-1;23111:9:1;;23014:112::o;23418:414::-;23620:2;23602:21;;;23659:2;23639:18;;;23632:30;23698:34;23693:2;23678:18;;23671:62;-1:-1:-1;;;23764:2:1;23749:18;;23742:48;23822:3;23807:19;;23418:414::o;23837:738::-;24097:6;24092:3;24085:19;24067:3;24123:2;24155:6;24150:2;24145:3;24141:12;24134:28;24193:2;24188:3;24184:12;24225:6;24219:13;24274:6;24271:1;24264:17;24317:2;24314:1;24304:16;24338:1;24348:200;24362:6;24359:1;24356:13;24348:200;;;24429:13;;-1:-1:-1;;;;;24425:39:1;24411:54;;24487:14;;;;24461:1;24524:14;;;;24377:9;24348:200;;;-1:-1:-1;24564:5:1;;23837:738;-1:-1:-1;;;;;;;;23837:738:1:o;24580:489::-;-1:-1:-1;;;;;24849:15:1;;;24831:34;;24901:15;;24896:2;24881:18;;24874:43;24948:2;24933:18;;24926:34;;;24996:3;24991:2;24976:18;;24969:31;;;24774:4;;25017:46;;25043:19;;25035:6;25017:46;:::i;:::-;25009:54;24580:489;-1:-1:-1;;;;;;24580:489:1:o;25074:249::-;25143:6;25196:2;25184:9;25175:7;25171:23;25167:32;25164:52;;;25212:1;25209;25202:12;25164:52;25244:9;25238:16;25263:30;25287:5;25263:30;:::i;25328:127::-;25389:10;25384:3;25380:20;25377:1;25370:31;25420:4;25417:1;25410:15;25444:4;25441:1;25434:15
Swarm Source
ipfs://09edf38657a31c6ee27c71e6cc0522f5490575c44a6becbe947db8304b72362e