Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 15908302 | 838 days ago | IN | 0 ETH | 0.0008021 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ERC721K
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-06 */ // SPDX-License-Identifier: CC BY-NC-ND 4.0 pragma solidity ^0.8.17; /** INFO * Refinement of the work made at https://github.com/beskay/ERC721B * Public mint added, as well as price management * On chain metadata is now available * The contract is now compatible with baseURI and tokenURI mechanisms * Security has been handled with protected contract * Single tokens approve for granular ACL is now supported * Minting by sending price value or multiple of price value to contract is allowed * @author TheCookingSenpai * * ANCHOR Original ERC721B Header * Updated, minimalist and gas efficient version of OpenZeppelins ERC721 contract. * Includes the Metadata and Enumerable extension. * * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..). * Does not support burning tokens TODO * * Credits: beskay0x, chiru-labs, solmate, transmissions11, nftchance, squeebo_nft and others */ // SECTION Interfaces interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // !SECTION Interfaces // SECTION Safety contract protected { mapping (address => bool) is_auth; function authorized(address addy) public view returns(bool) { return is_auth[addy]; } function set_authorized(address addy, bool booly) public onlyAuth { is_auth[addy] = booly; } modifier onlyAuth() { require( is_auth[msg.sender] || msg.sender==owner, "not owner"); _; } address owner; modifier onlyOwner() { require(msg.sender==owner, "not owner"); _; } bool locked; modifier safe() { require(!locked, "reentrant"); locked = true; _; locked = false; } function change_owner(address new_owner) public onlyAuth { owner = new_owner; } fallback() external {} } // !SECTION Safety // SECTION Errors error ApprovalCallerNotOwnerNorApproved(); error ApprovalQueryForNonexistentToken(); error ApproveToCaller(); error ApprovalToCurrentOwner(); error BalanceQueryForZeroAddress(); error MintedQueryForZeroAddress(); error MintToZeroAddress(); error MintZeroQuantity(); error OwnerIndexOutOfBounds(); error OwnerQueryForNonexistentToken(); error TokenIndexOutOfBounds(); error TransferCallerNotOwnerNorApproved(); error TransferFromIncorrectOwner(); error TransferToNonERC721ReceiverImplementer(); error TransferToZeroAddress(); error UnableDetermineTokenOwner(); error UnableGetTokenOwnerByIndex(); error URIQueryForNonexistentToken(); // !SECTION Errors contract ERC721K is protected { /* EVENTS */ event Transfer(address indexed from, address indexed to, uint256 indexed id); event Approval(address indexed owner, address indexed spender, uint256 indexed id); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /* METADATA STORAGE/LOGIC */ string public name; string public symbol; string private baseURI; uint public price; struct METADATA { string name; string description; string image; string external_url; mapping(string => string) attribute; string[] attribute_keys; } mapping(uint => METADATA) metadata; function setTokenMetadata(uint id, string memory _name, string memory _description, string memory _image, string memory _external_url, string[] memory _traits, string[] memory _values) public onlyAuth { require(id < totalSupply(), "id out of bounds"); require(_traits.length == _values.length, "traits/values mismatch"); metadata[id].name = _name; metadata[id].description = _description; metadata[id].image = _image; metadata[id].external_url = _external_url; for (uint i=0; i<_traits.length; i++) { metadata[id].attribute[_traits[i]] = _values[i]; metadata[id].attribute_keys.push(_traits[i]); } } function getTokenMetadata(uint id) public view returns (string memory _metadata_) { // Ensure exists require(id < totalSupply(), "id out of bounds"); require(bytes(metadata[id].name).length > 0, "no metadata"); // Start string memory _metadata = "{"; _metadata = string.concat(_metadata, '"name": "'); _metadata = string.concat(_metadata, metadata[id].name); _metadata = string.concat(_metadata, '", "description": "'); _metadata = string.concat(_metadata, metadata[id].description); _metadata = string.concat(_metadata, '", "image": "'); _metadata = string.concat(_metadata, metadata[id].image); _metadata = string.concat(_metadata, '", "external_url": "'); _metadata = string.concat(_metadata, metadata[id].external_url); _metadata = string.concat(_metadata, '", "attributes": ['); for (uint i = 0; i < metadata[id].attribute_keys.length; i++) { _metadata = string.concat(_metadata, '{"trait_type": "'); _metadata = string.concat(_metadata, metadata[id].attribute_keys[i]); _metadata = string.concat(_metadata, '", "value": "'); _metadata = string.concat(_metadata, metadata[id].attribute[metadata[id].attribute_keys[i]]); _metadata = string.concat(_metadata, '"}'); if (i < metadata[id].attribute_keys.length - 1) { _metadata = string.concat(_metadata, ','); } } _metadata = string.concat(_metadata, ']}'); return _metadata; } function tokenURI(uint id) public view returns (string memory URI) { require(id < totalSupply(), "id out of bounds"); return string(abi.encodePacked(baseURI, id)); } function setBaseURI(string memory uri) public { baseURI = uri; } /* ERC721 STORAGE */ // Array which maps token ID to address (index is tokenID) address[] internal _owners; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Mapping to keep track of single tokens allowance given from addr to addr mapping(address => mapping(uint => mapping(address => bool))) public allowed; /* CONSTRUCTOR */ constructor(string memory _name, string memory _symbol, uint _price) { name = _name; symbol = _symbol; price = _price; owner = msg.sender; is_auth[msg.sender] = true; } /* ERC165 LOGIC */ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721 interfaceId == 0x780e9d63 || // ERC165 Interface ID for ERC721Enumerable interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata } /* ERC721ENUMERABLE LOGIC */ /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view returns (uint256) { return _owners.length; } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. * Dont call this function on chain from another smart contract, since it can become quite expensive */ function tokenOfOwnerByIndex(address _owner, uint256 index) public view virtual returns (uint256 tokenId) { if (index >= balanceOf(_owner)) revert OwnerIndexOutOfBounds(); uint256 count; uint256 qty = _owners.length; // Cannot realistically overflow, since we are using uint256 unchecked { for (tokenId; tokenId < qty; tokenId++) { if (_owner == ownerOf(tokenId)) { if (count == index) return tokenId; else count++; } } } revert UnableGetTokenOwnerByIndex(); } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual returns (uint256) { if (index >= totalSupply()) revert TokenIndexOutOfBounds(); return index; } /* ERC721 LOGIC */ /** * @dev Iterates through _owners array, returns balance of address * It is not recommended to call this function from another smart contract * as it can become quite expensive -- call this function off chain instead. */ function balanceOf(address _owner) public view virtual returns (uint256) { if (_owner == address(0)) revert BalanceQueryForZeroAddress(); uint256 count; uint256 qty = _owners.length; // Cannot realistically overflow, since we are using uint256 unchecked { for (uint256 i; i < qty; i++) { if (_owner == ownerOf(i)) { count++; } } } return count; } /** * @dev See {IERC721-ownerOf}. * Gas spent here starts off proportional to the maximum mint batch size. * It gradually moves to O(1) as tokens get transferred around in the collection over time. */ function ownerOf(uint256 tokenId) public view virtual returns (address) { if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken(); // Cannot realistically overflow, since we are using uint256 unchecked { for (tokenId; ; tokenId++) { if (_owners[tokenId] != address(0)) { return _owners[tokenId]; } } } revert UnableDetermineTokenOwner(); } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual { address _owner = ownerOf(tokenId); if (to == _owner) revert ApprovalToCurrentOwner(); if (msg.sender != _owner && !isApprovedForAll(_owner, msg.sender)) revert ApprovalCallerNotOwnerNorApproved(); _tokenApprovals[tokenId] = to; emit Approval(_owner, to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual returns (address) { if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual { if (operator == msg.sender) revert ApproveToCaller(); _operatorApprovals[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address _owner, address operator) public view virtual returns (bool) { return _operatorApprovals[_owner][operator]; } function approveOwned(address _approved, uint256 _tokenId) public payable { if (!(_owners[_tokenId]==msg.sender)) { revert("Not owned"); } // Setting allowance allowed[msg.sender][_tokenId][_approved] = true; emit Approval(msg.sender, _approved, _tokenId); } function disapproveOwned(address _disapproved, uint256 _tokenId) public payable { if (!(_owners[_tokenId]==msg.sender)) { revert("Not owned"); } // Setting allowance allowed[msg.sender][_tokenId][_disapproved] = false; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual { if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken(); if (ownerOf(tokenId) != from) revert TransferFromIncorrectOwner(); if (to == address(0)) revert TransferToZeroAddress(); bool isApprovedOrOwner = (msg.sender == from || msg.sender == getApproved(tokenId) || isApprovedForAll(from, msg.sender) || allowed[from][tokenId][msg.sender]); if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved(); // delete token approvals from previous owner delete allowed[from][tokenId][msg.sender]; delete _tokenApprovals[tokenId]; _owners[tokenId] = to; // if token ID below transferred one isnt set, set it to previous owner // if tokenid is zero, skip this to prevent underflow if (tokenId > 0 && _owners[tokenId - 1] == address(0)) { _owners[tokenId - 1] = from; } emit Transfer(from, to, tokenId); } /** * @dev See {IERC721-safe}. */ function safeTransferFrom( address from, address to, uint256 id ) public virtual { safeTransferFrom(from, to, id, ''); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, bytes memory data ) public virtual { transferFrom(from, to, id); if (!_checkOnERC721Received(from, to, id, data)) revert TransferToNonERC721ReceiverImplementer(); } /** * @dev Returns whether `tokenId` exists. */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return tokenId < _owners.length; } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.code.length == 0) return true; try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) revert TransferToNonERC721ReceiverImplementer(); assembly { revert(add(32, reason), mload(reason)) } } } /* MINT LOGIC */ function mint(uint quantity) public safe payable returns (bool success) { // In bounds if(!(quantity > 0)) revert("quantity must be > 0"); if(!(msg.value == price)) revert("Wrong price"); _mint(msg.sender, quantity); return true; } function setPrice(uint price_) public onlyAuth { price = price_; } /** * @dev check if contract confirms token transfer, if not - reverts * unlike the standard ERC721 implementation this is only called once per mint, * no matter how many tokens get minted, since it is useless to check this * requirement several times -- if the contract confirms one token, * it will confirm all additional ones too. * This saves us around 5k gas per additional mint */ function _safeMint(address to, uint256 qty) internal virtual { _safeMint(to, qty, ''); } function _safeMint( address to, uint256 qty, bytes memory data ) internal virtual { _mint(to, qty); if (!_checkOnERC721Received(address(0), to, _owners.length - 1, data)) revert TransferToNonERC721ReceiverImplementer(); } function _mint(address to, uint256 qty) internal virtual { if (to == address(0)) revert MintToZeroAddress(); if (qty == 0) revert MintZeroQuantity(); uint256 _currentIndex = _owners.length; // Cannot realistically overflow, since we are using uint256 unchecked { for (uint256 i; i < qty - 1; i++) { _owners.push(); emit Transfer(address(0), to, _currentIndex + i); } } // set last index to receiver _owners.push(to); emit Transfer(address(0), to, _currentIndex + (qty - 1)); } receive() external payable { if((msg.value%price)!=0) return; uint qty_ = msg.value/price; _mint(msg.sender, qty_); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_price","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"inputs":[],"name":"UnableGetTokenOwnerByIndex","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approveOwned","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"new_owner","type":"address"}],"name":"change_owner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_disapproved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"disapproveOwned","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getTokenMetadata","outputs":[{"internalType":"string","name":"_metadata_","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","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":"id","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":"id","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":"uri","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_description","type":"string"},{"internalType":"string","name":"_image","type":"string"},{"internalType":"string","name":"_external_url","type":"string"},{"internalType":"string[]","name":"_traits","type":"string[]"},{"internalType":"string[]","name":"_values","type":"string[]"}],"name":"setTokenMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_authorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"URI","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200271d3803806200271d83398101604081905262000034916200014f565b600262000042848262000251565b50600362000051838262000251565b506005555050600180546001600160a01b0319163390811782556000908152602081905260409020805460ff191690911790556200031d565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b257600080fd5b81516001600160401b0380821115620000cf57620000cf6200008a565b604051601f8301601f19908116603f01168101908282118183101715620000fa57620000fa6200008a565b816040528381526020925086838588010111156200011757600080fd5b600091505b838210156200013b57858201830151818301840152908201906200011c565b600093810190920192909252949350505050565b6000806000606084860312156200016557600080fd5b83516001600160401b03808211156200017d57600080fd5b6200018b87838801620000a0565b94506020860151915080821115620001a257600080fd5b50620001b186828701620000a0565b925050604084015190509250925092565b600181811c90821680620001d757607f821691505b602082108103620001f857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200024c57600081815260208120601f850160051c81016020861015620002275750805b601f850160051c820191505b81811015620002485782815560010162000233565b5050505b505050565b81516001600160401b038111156200026d576200026d6200008a565b62000285816200027e8454620001c2565b84620001fe565b602080601f831160018114620002bd5760008415620002a45750858301515b600019600386901b1c1916600185901b17855562000248565b600085815260208120601f198616915b82811015620002ee57888601518255948401946001909101908401620002cd565b50858210156200030d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6123f0806200032d6000396000f3fe6080604052600436106101bb5760003560e01c80636352211e116100ec578063a0712d681161008a578063b918161111610064578063b9181611146104f0578063c87b56dd14610529578063e985e9c514610549578063ffa481f814610569576101f2565b8063a0712d681461049d578063a22cb465146104b0578063b88d4fde146104d0576101f2565b80637bb7e664116100c65780637bb7e6641461043257806391b7f5ed1461045257806395d89b4114610472578063a035b1fe14610487576101f2565b80636352211e146103df57806370a08231146103ff5780637b7c45191461041f576101f2565b8063253c8bd41161015957806342842e0e1161013357806342842e0e1461035f5780634f6ccce71461037f57806355f804b31461039f57806360316801146103bf576101f2565b8063253c8bd4146102ff5780632bfe87421461031f5780632f745c591461033f576101f2565b8063095ea7b311610195578063095ea7b31461028d57806311944442146102ad57806318160ddd146102c057806323b872dd146102df576101f2565b806301ffc9a7146101fe57806306fdde0314610233578063081812fc14610255576101f2565b366101f2576005546101cd9034611974565b156101d457005b6000600554346101e4919061199e565b90506101f033826105aa565b005b3480156101f057600080fd5b34801561020a57600080fd5b5061021e6102193660046119cb565b6106eb565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b50610248610758565b60405161022a9190611a3f565b34801561026157600080fd5b50610275610270366004611a52565b6107e6565b6040516001600160a01b03909116815260200161022a565b34801561029957600080fd5b506101f06102a8366004611a87565b61082c565b6101f06102bb366004611a87565b610905565b3480156102cc57600080fd5b506007545b60405190815260200161022a565b3480156102eb57600080fd5b506101f06102fa366004611ab1565b6109d8565b34801561030b57600080fd5b506101f061031a366004611aed565b610c62565b34801561032b57600080fd5b506101f061033a366004611b08565b610cc8565b34801561034b57600080fd5b506102d161035a366004611a87565b610d37565b34801561036b57600080fd5b506101f061037a366004611ab1565b610dca565b34801561038b57600080fd5b506102d161039a366004611a52565b610dea565b3480156103ab57600080fd5b506101f06103ba366004611c03565b610e18565b3480156103cb57600080fd5b506102486103da366004611a52565b610e28565b3480156103eb57600080fd5b506102756103fa366004611a52565b6111ff565b34801561040b57600080fd5b506102d161041a366004611aed565b61129a565b6101f061042d366004611a87565b61130c565b34801561043e57600080fd5b506101f061044d366004611cd7565b6113b0565b34801561045e57600080fd5b506101f061046d366004611a52565b6115b8565b34801561047e57600080fd5b50610248611601565b34801561049357600080fd5b506102d160055481565b61021e6104ab366004611a52565b61160e565b3480156104bc57600080fd5b506101f06104cb366004611b08565b611709565b3480156104dc57600080fd5b506101f06104eb366004611dd7565b61179e565b3480156104fc57600080fd5b5061021e61050b366004611aed565b6001600160a01b031660009081526020819052604090205460ff1690565b34801561053557600080fd5b50610248610544366004611a52565b6117d8565b34801561055557600080fd5b5061021e610564366004611e53565b61182b565b34801561057557600080fd5b5061021e610584366004611e86565b600a60209081526000938452604080852082529284528284209052825290205460ff1681565b6001600160a01b0382166105d057604051622e076360e81b815260040160405180910390fd5b806000036105f15760405163b562e8dd60e01b815260040160405180910390fd5b60075460005b6001830381101561064f576007805460010181556000908152604051838301916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001016105f7565b5060078054600180820183556000929092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0386161790556106a69083611ec2565b6106b09082611ed5565b6040516001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b60006301ffc9a760e01b6001600160e01b03198316148061071c57506380ac58cd60e01b6001600160e01b03198316145b80610737575063780e9d6360e01b6001600160e01b03198316145b806107525750635b5e139f60e01b6001600160e01b03198316145b92915050565b6002805461076590611ee8565b80601f016020809104026020016040519081016040528092919081815260200182805461079190611ee8565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505081565b60006107f3826007541190565b610810576040516333d1c03960e21b815260040160405180910390fd5b506000908152600860205260409020546001600160a01b031690565b6000610837826111ff565b9050806001600160a01b0316836001600160a01b03160361086b5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161480159061088b5750610889813361182b565b155b156108a9576040516367d9dca160e11b815260040160405180910390fd5b60008281526008602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b336001600160a01b03166007828154811061092257610922611f22565b6000918252602090912001546001600160a01b0316146109755760405162461bcd60e51b8152602060048201526009602482015268139bdd081bdddb995960ba1b60448201526064015b60405180910390fd5b336000818152600a6020908152604080832085845282528083206001600160a01b0387168085529252808320805460ff1916600117905551849391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6109e3816007541190565b610a0057604051636f96cda160e11b815260040160405180910390fd5b826001600160a01b0316610a13826111ff565b6001600160a01b031614610a395760405162a1148160e81b815260040160405180910390fd5b6001600160a01b038216610a6057604051633a954ecd60e21b815260040160405180910390fd5b6000336001600160a01b0385161480610a925750610a7d826107e6565b6001600160a01b0316336001600160a01b0316145b80610aa25750610aa2843361182b565b80610ad857506001600160a01b0384166000908152600a60209081526040808320858452825280832033845290915290205460ff165b905080610af857604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0384166000908152600a6020908152604080832085845282528083203384528252808320805460ff191690558483526008909152902080546001600160a01b03191690556007805484919084908110610b5a57610b5a611f22565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600082118015610bc9575060006007610ba2600185611ec2565b81548110610bb257610bb2611f22565b6000918252602090912001546001600160a01b0316145b15610c1b57836007610bdc600185611ec2565b81548110610bec57610bec611f22565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b3360009081526020819052604090205460ff1680610c8a57506001546001600160a01b031633145b610ca65760405162461bcd60e51b815260040161096c90611f38565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff1680610cf057506001546001600160a01b031633145b610d0c5760405162461bcd60e51b815260040161096c90611f38565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b6000610d428361129a565b8210610d61576040516306ed618760e11b815260040160405180910390fd5b6007546000905b80831015610db157610d79836111ff565b6001600160a01b0316856001600160a01b031603610da657838203610d9f575050610752565b6001909101905b600190920191610d68565b604051637339954760e01b815260040160405180910390fd5b610de58383836040518060200160405280600081525061179e565b505050565b6000610df560075490565b8210610e14576040516329c8c00760e21b815260040160405180910390fd5b5090565b6004610e248282611fa9565b5050565b6060610e3360075490565b8210610e515760405162461bcd60e51b815260040161096c90612069565b60008281526006602052604081208054610e6a90611ee8565b905011610ea75760405162461bcd60e51b815260206004820152600b60248201526a6e6f206d6574616461746160a81b604482015260640161096c565b6000604051806040016040528060018152602001607b60f81b815250905080604051602001610ed69190612093565b60408051601f19818403018152828252600086815260066020908152929020909350610f0492849201612133565b604051602081830303815290604052905080604051602001610f26919061215a565b60408051601f19818403018152828252600086815260066020908152929020909350610f5a92849260019092019101612133565b604051602081830303815290604052905080604051602001610f7c9190612191565b60408051601f19818403018152828252600086815260066020908152929020909350610fb092849260029092019101612133565b604051602081830303815290604052905080604051602001610fd291906121c2565b60408051601f1981840301815282825260008681526006602090815292902090935061100692849260039092019101612133565b60405160208183030381529060405290508060405160200161102891906121fa565b604051602081830303815290604052905060005b6000848152600660205260409020600501548110156111d657816040516020016110669190612230565b60408051601f198184030181529181526000868152600660205220600501805491935083918390811061109b5761109b611f22565b906000526020600020016040516020016110b6929190612133565b6040516020818303038152906040529150816040516020016110d89190612264565b60408051601f19818403018152918152600086815260066020522060058101805492945084926004909201918490811061111457611114611f22565b9060005260206000200160405161112b9190612295565b908152602001604051809103902060405160200161114a929190612133565b60405160208183030381529060405291508160405160200161116c91906122a1565b60408051601f1981840301815291815260008681526006602052206005015490925061119a90600190611ec2565b8110156111c457816040516020016111b291906122c7565b60405160208183030381529060405291505b806111ce816122ec565b91505061103c565b50806040516020016111e89190612305565b60408051601f198184030181529190529392505050565b600061120c826007541190565b61122957604051636f96cda160e11b815260040160405180910390fd5b60006001600160a01b03166007838154811061124757611247611f22565b6000918252602090912001546001600160a01b03161461128f576007828154811061127457611274611f22565b6000918252602090912001546001600160a01b031692915050565b600190910190611229565b60006001600160a01b0382166112c3576040516323d3ad8160e21b815260040160405180910390fd5b600754600090815b81811015611303576112dc816111ff565b6001600160a01b0316856001600160a01b0316036112fb576001909201915b6001016112cb565b50909392505050565b336001600160a01b03166007828154811061132957611329611f22565b6000918252602090912001546001600160a01b0316146113775760405162461bcd60e51b8152602060048201526009602482015268139bdd081bdddb995960ba1b604482015260640161096c565b336000908152600a602090815260408083209383529281528282206001600160a01b03949094168252929092529020805460ff19169055565b3360009081526020819052604090205460ff16806113d857506001546001600160a01b031633145b6113f45760405162461bcd60e51b815260040161096c90611f38565b60075487106114155760405162461bcd60e51b815260040161096c90612069565b805182511461145f5760405162461bcd60e51b81526020600482015260166024820152750e8e4c2d2e8e65eecc2d8eacae640dad2e6dac2e8c6d60531b604482015260640161096c565b60008781526006602052604090206114778782611fa9565b5060008781526006602052604090206001016114938682611fa9565b5060008781526006602052604090206002016114af8582611fa9565b5060008781526006602052604090206003016114cb8482611fa9565b5060005b82518110156115ae578181815181106114ea576114ea611f22565b6020026020010151600660008a815260200190815260200160002060040184838151811061151a5761151a611f22565b602002602001015160405161152f919061232b565b908152602001604051809103902090816115499190611fa9565b506006600089815260200190815260200160002060050183828151811061157257611572611f22565b6020908102919091018101518254600181018455600093845291909220019061159b9082611fa9565b50806115a6816122ec565b9150506114cf565b5050505050505050565b3360009081526020819052604090205460ff16806115e057506001546001600160a01b031633145b6115fc5760405162461bcd60e51b815260040161096c90611f38565b600555565b6003805461076590611ee8565b600154600090600160a01b900460ff16156116575760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b604482015260640161096c565b6001805460ff60a01b1916600160a01b179055816116ae5760405162461bcd60e51b815260206004820152601460248201527307175616e74697479206d757374206265203e20360641b604482015260640161096c565b60055434146116ed5760405162461bcd60e51b815260206004820152600b60248201526a57726f6e6720707269636560a81b604482015260640161096c565b6116f733836105aa565b50506001805460ff60a01b1916815590565b336001600160a01b038316036117325760405163b06307db60e01b815260040160405180910390fd5b3360008181526009602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6117a98484846109d8565b6117b584848484611859565b6117d2576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606117e360075490565b82106118015760405162461bcd60e51b815260040161096c90612069565b600482604051602001611815929190612347565b6040516020818303038152906040529050919050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6000836001600160a01b03163b60000361187557506001611956565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906118a7903390899088908890600401612360565b6020604051808303816000875af19250505080156118e2575060408051601f3d908101601f191682019092526118df9181019061239d565b60015b611940573d808015611910576040519150601f19603f3d011682016040523d82523d6000602084013e611915565b606091505b508051600003611938576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826119835761198361195e565b500690565b634e487b7160e01b600052601160045260246000fd5b6000826119ad576119ad61195e565b500490565b6001600160e01b0319811681146119c857600080fd5b50565b6000602082840312156119dd57600080fd5b81356119e8816119b2565b9392505050565b60005b83811015611a0a5781810151838201526020016119f2565b50506000910152565b60008151808452611a2b8160208601602086016119ef565b601f01601f19169290920160200192915050565b6020815260006119e86020830184611a13565b600060208284031215611a6457600080fd5b5035919050565b80356001600160a01b0381168114611a8257600080fd5b919050565b60008060408385031215611a9a57600080fd5b611aa383611a6b565b946020939093013593505050565b600080600060608486031215611ac657600080fd5b611acf84611a6b565b9250611add60208501611a6b565b9150604084013590509250925092565b600060208284031215611aff57600080fd5b6119e882611a6b565b60008060408385031215611b1b57600080fd5b611b2483611a6b565b915060208301358015158114611b3957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b8357611b83611b44565b604052919050565b600067ffffffffffffffff831115611ba557611ba5611b44565b611bb8601f8401601f1916602001611b5a565b9050828152838383011115611bcc57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611bf457600080fd5b6119e883833560208501611b8b565b600060208284031215611c1557600080fd5b813567ffffffffffffffff811115611c2c57600080fd5b61195684828501611be3565b600082601f830112611c4957600080fd5b8135602067ffffffffffffffff80831115611c6657611c66611b44565b8260051b611c75838201611b5a565b9384528581018301938381019088861115611c8f57600080fd5b84880192505b85831015611ccb57823584811115611cad5760008081fd5b611cbb8a87838c0101611be3565b8352509184019190840190611c95565b98975050505050505050565b600080600080600080600060e0888a031215611cf257600080fd5b87359650602088013567ffffffffffffffff80821115611d1157600080fd5b611d1d8b838c01611be3565b975060408a0135915080821115611d3357600080fd5b611d3f8b838c01611be3565b965060608a0135915080821115611d5557600080fd5b611d618b838c01611be3565b955060808a0135915080821115611d7757600080fd5b611d838b838c01611be3565b945060a08a0135915080821115611d9957600080fd5b611da58b838c01611c38565b935060c08a0135915080821115611dbb57600080fd5b50611dc88a828b01611c38565b91505092959891949750929550565b60008060008060808587031215611ded57600080fd5b611df685611a6b565b9350611e0460208601611a6b565b925060408501359150606085013567ffffffffffffffff811115611e2757600080fd5b8501601f81018713611e3857600080fd5b611e4787823560208401611b8b565b91505092959194509250565b60008060408385031215611e6657600080fd5b611e6f83611a6b565b9150611e7d60208401611a6b565b90509250929050565b600080600060608486031215611e9b57600080fd5b611ea484611a6b565b925060208401359150611eb960408501611a6b565b90509250925092565b8181038181111561075257610752611988565b8082018082111561075257610752611988565b600181811c90821680611efc57607f821691505b602082108103611f1c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b601f821115610de557600081815260208120601f850160051c81016020861015611f825750805b601f850160051c820191505b81811015611fa157828155600101611f8e565b505050505050565b815167ffffffffffffffff811115611fc357611fc3611b44565b611fd781611fd18454611ee8565b84611f5b565b602080601f83116001811461200c5760008415611ff45750858301515b600019600386901b1c1916600185901b178555611fa1565b600085815260208120601f198616915b8281101561203b5788860151825594840194600190910190840161201c565b50858210156120595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526010908201526f6964206f7574206f6620626f756e647360801b604082015260600190565b600082516120a58184602087016119ef565b68113730b6b2911d101160b91b920191825250600901919050565b600081546120cd81611ee8565b600182811680156120e557600181146120fa57612129565b60ff1984168752821515830287019450612129565b8560005260208060002060005b858110156121205781548a820152908401908201612107565b50505082870194505b5050505092915050565b600083516121458184602088016119ef565b612151818401856120c0565b95945050505050565b6000825161216c8184602087016119ef565b72111610113232b9b1b934b83a34b7b7111d101160691b920191825250601301919050565b600082516121a38184602087016119ef565b6c1116101134b6b0b3b2911d101160991b920191825250600d01919050565b600082516121d48184602087016119ef565b731116101132bc3a32b93730b62fbab936111d101160611b920191825250601401919050565b6000825161220c8184602087016119ef565b71222c202261747472696275746573223a205b60701b920191825250601201919050565b600082516122428184602087016119ef565b6f3d913a3930b4ba2fba3cb832911d101160811b920191825250601001919050565b600082516122768184602087016119ef565b6c111610113b30b63ab2911d101160991b920191825250600d01919050565b60006119e882846120c0565b600082516122b38184602087016119ef565b61227d60f01b920191825250600201919050565b600082516122d98184602087016119ef565b600b60fa1b920191825250600101919050565b6000600182016122fe576122fe611988565b5060010190565b600082516123178184602087016119ef565b615d7d60f01b920191825250600201919050565b6000825161233d8184602087016119ef565b9190910192915050565b600061235382856120c0565b9283525050602001919050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061239390830184611a13565b9695505050505050565b6000602082840312156123af57600080fd5b81516119e8816119b256fea2646970667358221220ba67a2097658386e3b6d68e334750c15176d6a6a1bf7ff751dba1b8c40d82c9664736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004546573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035453540000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80636352211e116100ec578063a0712d681161008a578063b918161111610064578063b9181611146104f0578063c87b56dd14610529578063e985e9c514610549578063ffa481f814610569576101f2565b8063a0712d681461049d578063a22cb465146104b0578063b88d4fde146104d0576101f2565b80637bb7e664116100c65780637bb7e6641461043257806391b7f5ed1461045257806395d89b4114610472578063a035b1fe14610487576101f2565b80636352211e146103df57806370a08231146103ff5780637b7c45191461041f576101f2565b8063253c8bd41161015957806342842e0e1161013357806342842e0e1461035f5780634f6ccce71461037f57806355f804b31461039f57806360316801146103bf576101f2565b8063253c8bd4146102ff5780632bfe87421461031f5780632f745c591461033f576101f2565b8063095ea7b311610195578063095ea7b31461028d57806311944442146102ad57806318160ddd146102c057806323b872dd146102df576101f2565b806301ffc9a7146101fe57806306fdde0314610233578063081812fc14610255576101f2565b366101f2576005546101cd9034611974565b156101d457005b6000600554346101e4919061199e565b90506101f033826105aa565b005b3480156101f057600080fd5b34801561020a57600080fd5b5061021e6102193660046119cb565b6106eb565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b50610248610758565b60405161022a9190611a3f565b34801561026157600080fd5b50610275610270366004611a52565b6107e6565b6040516001600160a01b03909116815260200161022a565b34801561029957600080fd5b506101f06102a8366004611a87565b61082c565b6101f06102bb366004611a87565b610905565b3480156102cc57600080fd5b506007545b60405190815260200161022a565b3480156102eb57600080fd5b506101f06102fa366004611ab1565b6109d8565b34801561030b57600080fd5b506101f061031a366004611aed565b610c62565b34801561032b57600080fd5b506101f061033a366004611b08565b610cc8565b34801561034b57600080fd5b506102d161035a366004611a87565b610d37565b34801561036b57600080fd5b506101f061037a366004611ab1565b610dca565b34801561038b57600080fd5b506102d161039a366004611a52565b610dea565b3480156103ab57600080fd5b506101f06103ba366004611c03565b610e18565b3480156103cb57600080fd5b506102486103da366004611a52565b610e28565b3480156103eb57600080fd5b506102756103fa366004611a52565b6111ff565b34801561040b57600080fd5b506102d161041a366004611aed565b61129a565b6101f061042d366004611a87565b61130c565b34801561043e57600080fd5b506101f061044d366004611cd7565b6113b0565b34801561045e57600080fd5b506101f061046d366004611a52565b6115b8565b34801561047e57600080fd5b50610248611601565b34801561049357600080fd5b506102d160055481565b61021e6104ab366004611a52565b61160e565b3480156104bc57600080fd5b506101f06104cb366004611b08565b611709565b3480156104dc57600080fd5b506101f06104eb366004611dd7565b61179e565b3480156104fc57600080fd5b5061021e61050b366004611aed565b6001600160a01b031660009081526020819052604090205460ff1690565b34801561053557600080fd5b50610248610544366004611a52565b6117d8565b34801561055557600080fd5b5061021e610564366004611e53565b61182b565b34801561057557600080fd5b5061021e610584366004611e86565b600a60209081526000938452604080852082529284528284209052825290205460ff1681565b6001600160a01b0382166105d057604051622e076360e81b815260040160405180910390fd5b806000036105f15760405163b562e8dd60e01b815260040160405180910390fd5b60075460005b6001830381101561064f576007805460010181556000908152604051838301916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001016105f7565b5060078054600180820183556000929092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0386161790556106a69083611ec2565b6106b09082611ed5565b6040516001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b60006301ffc9a760e01b6001600160e01b03198316148061071c57506380ac58cd60e01b6001600160e01b03198316145b80610737575063780e9d6360e01b6001600160e01b03198316145b806107525750635b5e139f60e01b6001600160e01b03198316145b92915050565b6002805461076590611ee8565b80601f016020809104026020016040519081016040528092919081815260200182805461079190611ee8565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505081565b60006107f3826007541190565b610810576040516333d1c03960e21b815260040160405180910390fd5b506000908152600860205260409020546001600160a01b031690565b6000610837826111ff565b9050806001600160a01b0316836001600160a01b03160361086b5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161480159061088b5750610889813361182b565b155b156108a9576040516367d9dca160e11b815260040160405180910390fd5b60008281526008602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b336001600160a01b03166007828154811061092257610922611f22565b6000918252602090912001546001600160a01b0316146109755760405162461bcd60e51b8152602060048201526009602482015268139bdd081bdddb995960ba1b60448201526064015b60405180910390fd5b336000818152600a6020908152604080832085845282528083206001600160a01b0387168085529252808320805460ff1916600117905551849391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6109e3816007541190565b610a0057604051636f96cda160e11b815260040160405180910390fd5b826001600160a01b0316610a13826111ff565b6001600160a01b031614610a395760405162a1148160e81b815260040160405180910390fd5b6001600160a01b038216610a6057604051633a954ecd60e21b815260040160405180910390fd5b6000336001600160a01b0385161480610a925750610a7d826107e6565b6001600160a01b0316336001600160a01b0316145b80610aa25750610aa2843361182b565b80610ad857506001600160a01b0384166000908152600a60209081526040808320858452825280832033845290915290205460ff165b905080610af857604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0384166000908152600a6020908152604080832085845282528083203384528252808320805460ff191690558483526008909152902080546001600160a01b03191690556007805484919084908110610b5a57610b5a611f22565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600082118015610bc9575060006007610ba2600185611ec2565b81548110610bb257610bb2611f22565b6000918252602090912001546001600160a01b0316145b15610c1b57836007610bdc600185611ec2565b81548110610bec57610bec611f22565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b3360009081526020819052604090205460ff1680610c8a57506001546001600160a01b031633145b610ca65760405162461bcd60e51b815260040161096c90611f38565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526020819052604090205460ff1680610cf057506001546001600160a01b031633145b610d0c5760405162461bcd60e51b815260040161096c90611f38565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b6000610d428361129a565b8210610d61576040516306ed618760e11b815260040160405180910390fd5b6007546000905b80831015610db157610d79836111ff565b6001600160a01b0316856001600160a01b031603610da657838203610d9f575050610752565b6001909101905b600190920191610d68565b604051637339954760e01b815260040160405180910390fd5b610de58383836040518060200160405280600081525061179e565b505050565b6000610df560075490565b8210610e14576040516329c8c00760e21b815260040160405180910390fd5b5090565b6004610e248282611fa9565b5050565b6060610e3360075490565b8210610e515760405162461bcd60e51b815260040161096c90612069565b60008281526006602052604081208054610e6a90611ee8565b905011610ea75760405162461bcd60e51b815260206004820152600b60248201526a6e6f206d6574616461746160a81b604482015260640161096c565b6000604051806040016040528060018152602001607b60f81b815250905080604051602001610ed69190612093565b60408051601f19818403018152828252600086815260066020908152929020909350610f0492849201612133565b604051602081830303815290604052905080604051602001610f26919061215a565b60408051601f19818403018152828252600086815260066020908152929020909350610f5a92849260019092019101612133565b604051602081830303815290604052905080604051602001610f7c9190612191565b60408051601f19818403018152828252600086815260066020908152929020909350610fb092849260029092019101612133565b604051602081830303815290604052905080604051602001610fd291906121c2565b60408051601f1981840301815282825260008681526006602090815292902090935061100692849260039092019101612133565b60405160208183030381529060405290508060405160200161102891906121fa565b604051602081830303815290604052905060005b6000848152600660205260409020600501548110156111d657816040516020016110669190612230565b60408051601f198184030181529181526000868152600660205220600501805491935083918390811061109b5761109b611f22565b906000526020600020016040516020016110b6929190612133565b6040516020818303038152906040529150816040516020016110d89190612264565b60408051601f19818403018152918152600086815260066020522060058101805492945084926004909201918490811061111457611114611f22565b9060005260206000200160405161112b9190612295565b908152602001604051809103902060405160200161114a929190612133565b60405160208183030381529060405291508160405160200161116c91906122a1565b60408051601f1981840301815291815260008681526006602052206005015490925061119a90600190611ec2565b8110156111c457816040516020016111b291906122c7565b60405160208183030381529060405291505b806111ce816122ec565b91505061103c565b50806040516020016111e89190612305565b60408051601f198184030181529190529392505050565b600061120c826007541190565b61122957604051636f96cda160e11b815260040160405180910390fd5b60006001600160a01b03166007838154811061124757611247611f22565b6000918252602090912001546001600160a01b03161461128f576007828154811061127457611274611f22565b6000918252602090912001546001600160a01b031692915050565b600190910190611229565b60006001600160a01b0382166112c3576040516323d3ad8160e21b815260040160405180910390fd5b600754600090815b81811015611303576112dc816111ff565b6001600160a01b0316856001600160a01b0316036112fb576001909201915b6001016112cb565b50909392505050565b336001600160a01b03166007828154811061132957611329611f22565b6000918252602090912001546001600160a01b0316146113775760405162461bcd60e51b8152602060048201526009602482015268139bdd081bdddb995960ba1b604482015260640161096c565b336000908152600a602090815260408083209383529281528282206001600160a01b03949094168252929092529020805460ff19169055565b3360009081526020819052604090205460ff16806113d857506001546001600160a01b031633145b6113f45760405162461bcd60e51b815260040161096c90611f38565b60075487106114155760405162461bcd60e51b815260040161096c90612069565b805182511461145f5760405162461bcd60e51b81526020600482015260166024820152750e8e4c2d2e8e65eecc2d8eacae640dad2e6dac2e8c6d60531b604482015260640161096c565b60008781526006602052604090206114778782611fa9565b5060008781526006602052604090206001016114938682611fa9565b5060008781526006602052604090206002016114af8582611fa9565b5060008781526006602052604090206003016114cb8482611fa9565b5060005b82518110156115ae578181815181106114ea576114ea611f22565b6020026020010151600660008a815260200190815260200160002060040184838151811061151a5761151a611f22565b602002602001015160405161152f919061232b565b908152602001604051809103902090816115499190611fa9565b506006600089815260200190815260200160002060050183828151811061157257611572611f22565b6020908102919091018101518254600181018455600093845291909220019061159b9082611fa9565b50806115a6816122ec565b9150506114cf565b5050505050505050565b3360009081526020819052604090205460ff16806115e057506001546001600160a01b031633145b6115fc5760405162461bcd60e51b815260040161096c90611f38565b600555565b6003805461076590611ee8565b600154600090600160a01b900460ff16156116575760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b604482015260640161096c565b6001805460ff60a01b1916600160a01b179055816116ae5760405162461bcd60e51b815260206004820152601460248201527307175616e74697479206d757374206265203e20360641b604482015260640161096c565b60055434146116ed5760405162461bcd60e51b815260206004820152600b60248201526a57726f6e6720707269636560a81b604482015260640161096c565b6116f733836105aa565b50506001805460ff60a01b1916815590565b336001600160a01b038316036117325760405163b06307db60e01b815260040160405180910390fd5b3360008181526009602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6117a98484846109d8565b6117b584848484611859565b6117d2576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606117e360075490565b82106118015760405162461bcd60e51b815260040161096c90612069565b600482604051602001611815929190612347565b6040516020818303038152906040529050919050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6000836001600160a01b03163b60000361187557506001611956565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906118a7903390899088908890600401612360565b6020604051808303816000875af19250505080156118e2575060408051601f3d908101601f191682019092526118df9181019061239d565b60015b611940573d808015611910576040519150601f19603f3d011682016040523d82523d6000602084013e611915565b606091505b508051600003611938576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826119835761198361195e565b500690565b634e487b7160e01b600052601160045260246000fd5b6000826119ad576119ad61195e565b500490565b6001600160e01b0319811681146119c857600080fd5b50565b6000602082840312156119dd57600080fd5b81356119e8816119b2565b9392505050565b60005b83811015611a0a5781810151838201526020016119f2565b50506000910152565b60008151808452611a2b8160208601602086016119ef565b601f01601f19169290920160200192915050565b6020815260006119e86020830184611a13565b600060208284031215611a6457600080fd5b5035919050565b80356001600160a01b0381168114611a8257600080fd5b919050565b60008060408385031215611a9a57600080fd5b611aa383611a6b565b946020939093013593505050565b600080600060608486031215611ac657600080fd5b611acf84611a6b565b9250611add60208501611a6b565b9150604084013590509250925092565b600060208284031215611aff57600080fd5b6119e882611a6b565b60008060408385031215611b1b57600080fd5b611b2483611a6b565b915060208301358015158114611b3957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b8357611b83611b44565b604052919050565b600067ffffffffffffffff831115611ba557611ba5611b44565b611bb8601f8401601f1916602001611b5a565b9050828152838383011115611bcc57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611bf457600080fd5b6119e883833560208501611b8b565b600060208284031215611c1557600080fd5b813567ffffffffffffffff811115611c2c57600080fd5b61195684828501611be3565b600082601f830112611c4957600080fd5b8135602067ffffffffffffffff80831115611c6657611c66611b44565b8260051b611c75838201611b5a565b9384528581018301938381019088861115611c8f57600080fd5b84880192505b85831015611ccb57823584811115611cad5760008081fd5b611cbb8a87838c0101611be3565b8352509184019190840190611c95565b98975050505050505050565b600080600080600080600060e0888a031215611cf257600080fd5b87359650602088013567ffffffffffffffff80821115611d1157600080fd5b611d1d8b838c01611be3565b975060408a0135915080821115611d3357600080fd5b611d3f8b838c01611be3565b965060608a0135915080821115611d5557600080fd5b611d618b838c01611be3565b955060808a0135915080821115611d7757600080fd5b611d838b838c01611be3565b945060a08a0135915080821115611d9957600080fd5b611da58b838c01611c38565b935060c08a0135915080821115611dbb57600080fd5b50611dc88a828b01611c38565b91505092959891949750929550565b60008060008060808587031215611ded57600080fd5b611df685611a6b565b9350611e0460208601611a6b565b925060408501359150606085013567ffffffffffffffff811115611e2757600080fd5b8501601f81018713611e3857600080fd5b611e4787823560208401611b8b565b91505092959194509250565b60008060408385031215611e6657600080fd5b611e6f83611a6b565b9150611e7d60208401611a6b565b90509250929050565b600080600060608486031215611e9b57600080fd5b611ea484611a6b565b925060208401359150611eb960408501611a6b565b90509250925092565b8181038181111561075257610752611988565b8082018082111561075257610752611988565b600181811c90821680611efc57607f821691505b602082108103611f1c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b601f821115610de557600081815260208120601f850160051c81016020861015611f825750805b601f850160051c820191505b81811015611fa157828155600101611f8e565b505050505050565b815167ffffffffffffffff811115611fc357611fc3611b44565b611fd781611fd18454611ee8565b84611f5b565b602080601f83116001811461200c5760008415611ff45750858301515b600019600386901b1c1916600185901b178555611fa1565b600085815260208120601f198616915b8281101561203b5788860151825594840194600190910190840161201c565b50858210156120595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526010908201526f6964206f7574206f6620626f756e647360801b604082015260600190565b600082516120a58184602087016119ef565b68113730b6b2911d101160b91b920191825250600901919050565b600081546120cd81611ee8565b600182811680156120e557600181146120fa57612129565b60ff1984168752821515830287019450612129565b8560005260208060002060005b858110156121205781548a820152908401908201612107565b50505082870194505b5050505092915050565b600083516121458184602088016119ef565b612151818401856120c0565b95945050505050565b6000825161216c8184602087016119ef565b72111610113232b9b1b934b83a34b7b7111d101160691b920191825250601301919050565b600082516121a38184602087016119ef565b6c1116101134b6b0b3b2911d101160991b920191825250600d01919050565b600082516121d48184602087016119ef565b731116101132bc3a32b93730b62fbab936111d101160611b920191825250601401919050565b6000825161220c8184602087016119ef565b71222c202261747472696275746573223a205b60701b920191825250601201919050565b600082516122428184602087016119ef565b6f3d913a3930b4ba2fba3cb832911d101160811b920191825250601001919050565b600082516122768184602087016119ef565b6c111610113b30b63ab2911d101160991b920191825250600d01919050565b60006119e882846120c0565b600082516122b38184602087016119ef565b61227d60f01b920191825250600201919050565b600082516122d98184602087016119ef565b600b60fa1b920191825250600101919050565b6000600182016122fe576122fe611988565b5060010190565b600082516123178184602087016119ef565b615d7d60f01b920191825250600201919050565b6000825161233d8184602087016119ef565b9190910192915050565b600061235382856120c0565b9283525050602001919050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061239390830184611a13565b9695505050505050565b6000602082840312156123af57600080fd5b81516119e8816119b256fea2646970667358221220ba67a2097658386e3b6d68e334750c15176d6a6a1bf7ff751dba1b8c40d82c9664736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004546573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035453540000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Test
Arg [1] : _symbol (string): TST
Arg [2] : _price (uint256): 0
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 5465737400000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 5453540000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
2735:15102:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17737:5;;17727:15;;:9;:15;:::i;:::-;17726:20;17723:32;;2735:15102;17723:32;17765:9;17787:5;;17777:9;:15;;;;:::i;:::-;17765:27;;17803:23;17809:10;17821:4;17803:5;:23::i;:::-;17712:122;2735:15102;;;;;;;;;7274:426;;;;;;;;;;-1:-1:-1;7274:426:0;;;;;:::i;:::-;;:::i;:::-;;;1071:14:1;;1064:22;1046:41;;1034:2;1019:18;7274:426:0;;;;;;;;3168:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11057:203::-;;;;;;;;;;-1:-1:-1;11057:203:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2203:32:1;;;2185:51;;2173:2;2158:18;11057:203:0;2039::1;10609:382:0;;;;;;;;;;-1:-1:-1;10609:382:0;;;;;:::i;:::-;;:::i;11840:367::-;;;;;;:::i;:::-;;:::i;7841:93::-;;;;;;;;;;-1:-1:-1;7912:7:0;:14;7841:93;;;2830:25:1;;;2818:2;2803:18;7841:93:0;2684:177:1;12622:1115:0;;;;;;;;;;-1:-1:-1;12622:1115:0;;;;;:::i;:::-;;:::i;1892:93::-;;;;;;;;;;-1:-1:-1;1892:93:0;;;;;:::i;:::-;;:::i;1392:106::-;;;;;;;;;;-1:-1:-1;1392:106:0;;;;;:::i;:::-;;:::i;8124:634::-;;;;;;;;;;-1:-1:-1;8124:634:0;;;;;:::i;:::-;;:::i;13796:166::-;;;;;;;;;;-1:-1:-1;13796:166:0;;;;;:::i;:::-;;:::i;8835:175::-;;;;;;;;;;-1:-1:-1;8835:175:0;;;;;:::i;:::-;;:::i;6245:78::-;;;;;;;;;;-1:-1:-1;6245:78:0;;;;;:::i;:::-;;:::i;4437:1604::-;;;;;;;;;;-1:-1:-1;4437:1604:0;;;;;:::i;:::-;;:::i;10067:480::-;;;;;;;;;;-1:-1:-1;10067:480:0;;;;;:::i;:::-;;:::i;9332:497::-;;;;;;;;;;-1:-1:-1;9332:497:0;;;;;:::i;:::-;;:::i;12219:326::-;;;;;;:::i;:::-;;:::i;3540:889::-;;;;;;;;;;-1:-1:-1;3540:889:0;;;;;:::i;:::-;;:::i;16118:80::-;;;;;;;;;;-1:-1:-1;16118:80:0;;;;;:::i;:::-;;:::i;3195:20::-;;;;;;;;;;;;;:::i;3255:17::-;;;;;;;;;;;;;;;;15789:321;;;;;;:::i;:::-;;:::i;11332:272::-;;;;;;;;;;-1:-1:-1;11332:272:0;;;;;:::i;:::-;;:::i;14033:295::-;;;;;;;;;;-1:-1:-1;14033:295:0;;;;;:::i;:::-;;:::i;1287:99::-;;;;;;;;;;-1:-1:-1;1287:99:0;;;;;:::i;:::-;-1:-1:-1;;;;;1365:13:0;1341:4;1365:13;;;;;;;;;;;;;;1287:99;6049:188;;;;;;;;;;-1:-1:-1;6049:188:0;;;;;:::i;:::-;;:::i;11675:157::-;;;;;;;;;;-1:-1:-1;11675:157:0;;;;;:::i;:::-;;:::i;6810:106::-;;;;;;;;;;-1:-1:-1;6810:106:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17049:628;-1:-1:-1;;;;;17121:16:0;;17117:48;;17146:19;;-1:-1:-1;;;17146:19:0;;;;;;;;;;;17117:48;17180:3;17187:1;17180:8;17176:39;;17197:18;;-1:-1:-1;;;17197:18:0;;;;;;;;;;;17176:39;17252:7;:14;17228:21;17374:150;17400:1;17394:3;:7;17390:1;:11;17374:150;;;17427:7;:14;;;;;;-1:-1:-1;17427:14:0;;;17465:43;;17490:17;;;;-1:-1:-1;;;;;17465:43:0;;;;;-1:-1:-1;;17465:43:0;17403:3;;17374:150;;;-1:-1:-1;17586:7:0;:16;;;;;;;;-1:-1:-1;17586:16:0;;;;;;;;-1:-1:-1;;;;;;17586:16:0;-1:-1:-1;;;;;17586:16:0;;;;;17660:7;;:3;:7;:::i;:::-;17643:25;;:13;:25;:::i;:::-;17618:51;;-1:-1:-1;;;;;17618:51:0;;;17635:1;;17618:51;;17635:1;;17618:51;17106:571;17049:628;;:::o;7274:426::-;7350:4;-1:-1:-1;;;;;;;;;7387:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;7463:25:0;;;7387:101;:177;;;-1:-1:-1;;;;;;;;;;7539:25:0;;;7387:177;:263;;;-1:-1:-1;;;;;;;;;;7625:25:0;;;7387:263;7367:283;7274:426;-1:-1:-1;;7274:426:0:o;3168:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11057:203::-;11124:7;11149:16;11157:7;14500;:14;-1:-1:-1;14490:24:0;14401:121;11149:16;11144:64;;11174:34;;-1:-1:-1;;;11174:34:0;;;;;;;;;;;11144:64;-1:-1:-1;11228:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;11228:24:0;;11057:203::o;10609:382::-;10681:14;10698:16;10706:7;10698;:16::i;:::-;10681:33;;10735:6;-1:-1:-1;;;;;10729:12:0;:2;-1:-1:-1;;;;;10729:12:0;;10725:49;;10750:24;;-1:-1:-1;;;10750:24:0;;;;;;;;;;;10725:49;10791:10;-1:-1:-1;;;;;10791:20:0;;;;;;:61;;;10816:36;10833:6;10841:10;10816:16;:36::i;:::-;10815:37;10791:61;10787:109;;;10861:35;;-1:-1:-1;;;10861:35:0;;;;;;;;;;;10787:109;10909:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;10909:29:0;-1:-1:-1;;;;;10909:29:0;;;;;;;;;10954;;10909:24;;10954:29;;;;;;;10670:321;10609:382;;:::o;11840:367::-;11996:10;-1:-1:-1;;;;;11977:29:0;:7;11985:8;11977:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;11977:17:0;:29;11971:84;;12024:19;;-1:-1:-1;;;12024:19:0;;9810:2:1;12024:19:0;;;9792:21:1;9849:1;9829:18;;;9822:29;-1:-1:-1;;;9867:18:1;;;9860:39;9916:18;;12024:19:0;;;;;;;;11971:84;12103:10;12095:19;;;;:7;:19;;;;;;;;:29;;;;;;;;-1:-1:-1;;;;;12095:40:0;;;;;;;;;;:47;;-1:-1:-1;;12095:47:0;12138:4;12095:47;;;12158:41;12115:8;;12095:40;;12158:41;;;11840:367;;:::o;12622:1115::-;12752:16;12760:7;14500;:14;-1:-1:-1;14490:24:0;14401:121;12752:16;12747:61;;12777:31;;-1:-1:-1;;;12777:31:0;;;;;;;;;;;12747:61;12843:4;-1:-1:-1;;;;;12823:24:0;:16;12831:7;12823;:16::i;:::-;-1:-1:-1;;;;;12823:24:0;;12819:65;;12856:28;;-1:-1:-1;;;12856:28:0;;;;;;;;;;;12819:65;-1:-1:-1;;;;;12899:16:0;;12895:52;;12924:23;;-1:-1:-1;;;12924:23:0;;;;;;;;;;;12895:52;12960:22;12986:10;-1:-1:-1;;;;;12986:18:0;;;;:69;;;13035:20;13047:7;13035:11;:20::i;:::-;-1:-1:-1;;;;;13021:34:0;:10;-1:-1:-1;;;;;13021:34:0;;12986:69;:120;;;;13072:34;13089:4;13095:10;13072:16;:34::i;:::-;12986:172;;;-1:-1:-1;;;;;;13124:13:0;;;;;;:7;:13;;;;;;;;:22;;;;;;;;13147:10;13124:34;;;;;;;;;;12986:172;12960:199;;13175:17;13170:66;;13201:35;;-1:-1:-1;;;13201:35:0;;;;;;;;;;;13170:66;-1:-1:-1;;;;;13311:13:0;;;;;;:7;:13;;;;;;;;:22;;;;;;;;13334:10;13311:34;;;;;;;13304:41;;-1:-1:-1;;13304:41:0;;;13363:24;;;:15;:24;;;;;13356:31;;-1:-1:-1;;;;;;13356:31:0;;;13398:7;:16;;13417:2;;13398:7;13325;;13398:16;;;;;;:::i;:::-;;;;;;;;;:21;;;;;-1:-1:-1;;;;;13398:21:0;;;;;-1:-1:-1;;;;;13398:21:0;;;;;;13590:1;13580:7;:11;:49;;;;-1:-1:-1;13627:1:0;13595:7;13603:11;13613:1;13603:7;:11;:::i;:::-;13595:20;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;13595:20:0;:34;13580:49;13576:109;;;13669:4;13646:7;13654:11;13664:1;13654:7;:11;:::i;:::-;13646:20;;;;;;;;:::i;:::-;;;;;;;;;:27;;;;;-1:-1:-1;;;;;13646:27:0;;;;;-1:-1:-1;;;;;13646:27:0;;;;;;13576:109;13721:7;13717:2;-1:-1:-1;;;;;13702:27:0;13711:4;-1:-1:-1;;;;;13702:27:0;;;;;;;;;;;12736:1001;12622:1115;;;:::o;1892:93::-;1552:10;1544:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;1579:5:0;;-1:-1:-1;;;;;1579:5:0;1567:10;:17;1544:40;1535:63;;;;-1:-1:-1;;;1535:63:0;;;;;;;:::i;:::-;1960:5:::1;:17:::0;;-1:-1:-1;;;;;;1960:17:0::1;-1:-1:-1::0;;;;;1960:17:0;;;::::1;::::0;;;::::1;::::0;;1892:93::o;1392:106::-;1552:10;1544:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;1579:5:0;;-1:-1:-1;;;;;1579:5:0;1567:10;:17;1544:40;1535:63;;;;-1:-1:-1;;;1535:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1469:13:0;;;::::1;:7;:13:::0;;;::::1;::::0;;;;;;:21;;-1:-1:-1;;1469:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;1392:106::o;8124:634::-;8213:15;8254:17;8264:6;8254:9;:17::i;:::-;8245:5;:26;8241:62;;8280:23;;-1:-1:-1;;;8280:23:0;;;;;;;;;;;8241:62;8354:7;:14;8316:13;;8474:218;8498:3;8488:7;:13;8474:218;;;8547:16;8555:7;8547;:16::i;:::-;-1:-1:-1;;;;;8537:26:0;:6;-1:-1:-1;;;;;8537:26:0;;8533:144;;8601:5;8592;:14;8588:69;;8608:14;;;;8588:69;8650:7;;;;;8588:69;8503:9;;;;;8474:218;;;8722:28;;-1:-1:-1;;;8722:28:0;;;;;;;;;;;13796:166;13920:34;13937:4;13943:2;13947;13920:34;;;;;;;;;;;;:16;:34::i;:::-;13796:166;;;:::o;8835:175::-;8901:7;8934:13;7912:7;:14;;7841:93;8934:13;8925:5;:22;8921:58;;8956:23;;-1:-1:-1;;;8956:23:0;;;;;;;;;;;8921:58;-1:-1:-1;8997:5:0;8835:175::o;6245:78::-;6302:7;:13;6312:3;6302:7;:13;:::i;:::-;;6245:78;:::o;4437:1604::-;4493:24;4569:13;7912:7;:14;;7841:93;4569:13;4564:2;:18;4556:47;;;;-1:-1:-1;;;4556:47:0;;;;;;;:::i;:::-;4656:1;4628:12;;;:8;:12;;;;;4622:31;;;;;:::i;:::-;;;:35;4614:59;;;;-1:-1:-1;;;4614:59:0;;13033:2:1;4614:59:0;;;13015:21:1;13072:2;13052:18;;;13045:30;-1:-1:-1;;;13091:18:1;;;13084:41;13142:18;;4614:59:0;12831:335:1;4614:59:0;4702:23;:29;;;;;;;;;;;;;-1:-1:-1;;;4702:29:0;;;;;4768:9;4754:37;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4754:37:0;;;;;;;;;4839:12;;;;:8;4754:37;4839:12;;;;;;4754:37;;-1:-1:-1;4814:43:0;;4754:37;;4814:43;;:::i;:::-;;;;;;;;;;;;;4802:55;;4894:9;4880:47;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4880:47:0;;;;;;;;;4975:12;;;;:8;4880:47;4975:12;;;;;;4880:47;;-1:-1:-1;4950:50:0;;4880:47;;4975:24;;;;;4950:50;;:::i;:::-;;;;;;;;;;;;;4938:62;;5037:9;5023:41;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5023:41:0;;;;;;;;;5112:12;;;;:8;5023:41;5112:12;;;;;;5023:41;;-1:-1:-1;5087:44:0;;5023:41;;5112:18;;;;;5087:44;;:::i;:::-;;;;;;;;;;;;;5075:56;;5168:9;5154:48;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5154:48:0;;;;;;;;;5250:12;;;;:8;5154:48;5250:12;;;;;;5154:48;;-1:-1:-1;5225:51:0;;5154:48;;5250:25;;;;;5225:51;;:::i;:::-;;;;;;;;;;;;;5213:63;;5313:9;5299:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;5287:58;;5361:6;5356:598;5377:12;;;;:8;:12;;;;;:27;;:34;5373:38;;5356:598;;;5459:9;5445:44;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5445:44:0;;;;;;;;;5541:12;;;;:8;5445:44;5541:12;;:27;;:30;;5445:44;;-1:-1:-1;5445:44:0;;5569:1;;5541:30;;;;;;:::i;:::-;;;;;;;;5516:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5504:68;;5613:9;5599:41;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5599:41:0;;;;;;;;;5692:12;;;;:8;5599:41;5692:12;;5715:27;;;:30;;5599:41;;-1:-1:-1;5599:41:0;;5692:22;;;;;5743:1;;5715:30;;;;;;:::i;:::-;;;;;;;;5692:54;;;;;;:::i;:::-;;;;;;;;;;;;;5667:80;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5655:92;;5788:9;5774:30;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5774:30:0;;;;;;;;;5827:12;;;;:8;5774:30;5827:12;;:27;;:34;5774:30;;-1:-1:-1;5827:38:0;;5864:1;;5827:38;:::i;:::-;5823:1;:42;5819:124;;;5912:9;5898:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;5886:41;;5819:124;5413:3;;;;:::i;:::-;;;;5356:598;;;;5990:9;5976:30;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5976:30:0;;;;;;;;;;4437:1604;-1:-1:-1;;;4437:1604:0:o;10067:480::-;10130:7;10155:16;10163:7;14500;:14;-1:-1:-1;14490:24:0;14401:121;10155:16;10150:61;;10180:31;;-1:-1:-1;;;10180:31:0;;;;;;;;;;;10150:61;10397:1;-1:-1:-1;;;;;10369:30:0;:7;10377;10369:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10369:16:0;:30;10365:102;;10431:7;10439;10431:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10431:16:0;;10067:480;-1:-1:-1;;10067:480:0:o;10365:102::-;10335:9;;;;;10319:163;;9332:497;9396:7;-1:-1:-1;;;;;9420:20:0;;9416:61;;9449:28;;-1:-1:-1;;;9449:28:0;;;;;;;;;;;9416:61;9528:7;:14;9490:13;;;9648:140;9668:3;9664:1;:7;9648:140;;;9711:10;9719:1;9711:7;:10::i;:::-;-1:-1:-1;;;;;9701:20:0;:6;-1:-1:-1;;;;;9701:20:0;;9697:76;;9746:7;;;;;9697:76;9673:3;;9648:140;;;-1:-1:-1;9816:5:0;;9332:497;-1:-1:-1;;;9332:497:0:o;12219:326::-;12387:10;-1:-1:-1;;;;;12368:29:0;:7;12376:8;12368:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;12368:17:0;:29;12362:84;;12415:19;;-1:-1:-1;;;12415:19:0;;9810:2:1;12415:19:0;;;9792:21:1;9849:1;9829:18;;;9822:29;-1:-1:-1;;;9867:18:1;;;9860:39;9916:18;;12415:19:0;9608:332:1;12362:84:0;12494:10;12532:5;12486:19;;;:7;:19;;;;;;;;:29;;;;;;;;;-1:-1:-1;;;;;12486:43:0;;;;;;;;;;;;:51;;-1:-1:-1;;12486:51:0;;;12219:326::o;3540:889::-;1552:10;1544:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;1579:5:0;;-1:-1:-1;;;;;1579:5:0;1567:10;:17;1544:40;1535:63;;;;-1:-1:-1;;;1535:63:0;;;;;;;:::i;:::-;7912:7;:14;3947:2:::1;:18;3939:47;;;;-1:-1:-1::0;;;3939:47:0::1;;;;;;;:::i;:::-;4023:7;:14;4005:7;:14;:32;3997:67;;;::::0;-1:-1:-1;;;3997:67:0;;19578:2:1;3997:67:0::1;::::0;::::1;19560:21:1::0;19617:2;19597:18;;;19590:30;-1:-1:-1;;;19636:18:1;;;19629:52;19698:18;;3997:67:0::1;19376:346:1::0;3997:67:0::1;4075:12;::::0;;;:8:::1;:12;::::0;;;;:25:::1;4095:5:::0;4075:12;:25:::1;:::i;:::-;-1:-1:-1::0;4111:12:0::1;::::0;;;:8:::1;:12;::::0;;;;:24:::1;;:39;4138:12:::0;4111:24;:39:::1;:::i;:::-;-1:-1:-1::0;4161:12:0::1;::::0;;;:8:::1;:12;::::0;;;;:18:::1;;:27;4182:6:::0;4161:18;:27:::1;:::i;:::-;-1:-1:-1::0;4199:12:0::1;::::0;;;:8:::1;:12;::::0;;;;:25:::1;;:41;4227:13:::0;4199:25;:41:::1;:::i;:::-;;4256:6;4251:171;4268:7;:14;4266:1;:16;4251:171;;;4341:7;4349:1;4341:10;;;;;;;;:::i;:::-;;;;;;;4304:8;:12;4313:2;4304:12;;;;;;;;;;;:22;;4327:7;4335:1;4327:10;;;;;;;;:::i;:::-;;;;;;;4304:34;;;;;;:::i;:::-;;;;;;;;;;;;;:47;;;;;;:::i;:::-;;4366:8;:12;4375:2;4366:12;;;;;;;;;;;:27;;4399:7;4407:1;4399:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;4366:44;;::::1;::::0;::::1;::::0;;-1:-1:-1;4366:44:0;;;;;;;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;4284:3:0;::::1;::::0;::::1;:::i;:::-;;;;4251:171;;;;3540:889:::0;;;;;;;:::o;16118:80::-;1552:10;1544:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;1579:5:0;;-1:-1:-1;;;;;1579:5:0;1567:10;:17;1544:40;1535:63;;;;-1:-1:-1;;;1535:63:0;;;;;;;:::i;:::-;16176:5:::1;:14:::0;16118:80::o;3195:20::-;;;;;;;:::i;15789:321::-;1795:6;;15887:12;;-1:-1:-1;;;1795:6:0;;;;1794:7;1786:29;;;;-1:-1:-1;;;1786:29:0;;20223:2:1;1786:29:0;;;20205:21:1;20262:1;20242:18;;;20235:29;-1:-1:-1;;;20280:18:1;;;20273:39;20329:18;;1786:29:0;20021:332:1;1786:29:0;1835:4;1826:13;;-1:-1:-1;;;;1826:13:0;-1:-1:-1;;;1826:13:0;;;15939:12;15934:50:::1;;15954:30;::::0;-1:-1:-1;;;15954:30:0;;20560:2:1;15954:30:0::1;::::0;::::1;20542:21:1::0;20599:2;20579:18;;;20572:30;-1:-1:-1;;;20618:18:1;;;20611:50;20678:18;;15954:30:0::1;20358:344:1::0;15934:50:0::1;16013:5;;16000:9;:18;15995:47;;16021:21;::::0;-1:-1:-1;;;16021:21:0;;20909:2:1;16021:21:0::1;::::0;::::1;20891::1::0;20948:2;20928:18;;;20921:30;-1:-1:-1;;;20967:18:1;;;20960:41;21018:18;;16021:21:0::1;20707:335:1::0;15995:47:0::1;16053:27;16059:10;16071:8;16053:5;:27::i;:::-;-1:-1:-1::0;;16098:4:0::1;1862:14:::0;;-1:-1:-1;;;;1862:14:0;;;16098:4;15789:321::o;11332:272::-;11434:10;-1:-1:-1;;;;;11422:22:0;;;11418:52;;11453:17;;-1:-1:-1;;;11453:17:0;;;;;;;;;;;11418:52;11502:10;11483:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;11483:40:0;;;;;;;;;;;;:51;;-1:-1:-1;;11483:51:0;;;;;;;;;;11550:46;;1046:41:1;;;11483:40:0;;11502:10;11550:46;;1019:18:1;11550:46:0;;;;;;;11332:272;;:::o;14033:295::-;14185:26;14198:4;14204:2;14208;14185:12;:26::i;:::-;14229:42;14252:4;14258:2;14262;14266:4;14229:22;:42::i;:::-;14224:96;;14280:40;;-1:-1:-1;;;14280:40:0;;;;;;;;;;;14224:96;14033:295;;;;:::o;6049:188::-;6097:17;6140:13;7912:7;:14;;7841:93;6140:13;6135:2;:18;6127:47;;;;-1:-1:-1;;;6127:47:0;;;;;;;:::i;:::-;6216:7;6225:2;6199:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6185:44;;6049:188;;;:::o;11675:157::-;-1:-1:-1;;;;;11788:26:0;;;11764:4;11788:26;;;:18;:26;;;;;;;;:36;;;;;;;;;;;;;;;11675:157::o;15087:640::-;15242:4;15263:2;-1:-1:-1;;;;;15263:14:0;;15281:1;15263:19;15259:36;;-1:-1:-1;15291:4:0;15284:11;;15259:36;15312:70;;-1:-1:-1;;;15312:70:0;;-1:-1:-1;;;;;15312:36:0;;;;;:70;;15349:10;;15361:4;;15367:7;;15376:5;;15312:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15312:70:0;;;;;;;;-1:-1:-1;;15312:70:0;;;;;;;;;;;;:::i;:::-;;;15308:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15544:6;:13;15561:1;15544:18;15540:71;;15571:40;;-1:-1:-1;;;15571:40:0;;;;;;;;;;;15540:71;15686:6;15680:13;15671:6;15667:2;15663:15;15656:38;15308:412;-1:-1:-1;;;;;;15429:55:0;-1:-1:-1;;;15429:55:0;;-1:-1:-1;15308:412:0;15087:640;;;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:112;178:1;204;194:35;;209:18;;:::i;:::-;-1:-1:-1;243:9:1;;146:112::o;263:127::-;324:10;319:3;315:20;312:1;305:31;355:4;352:1;345:15;379:4;376:1;369:15;395:120;435:1;461;451:35;;466:18;;:::i;:::-;-1:-1:-1;500:9:1;;395:120::o;520:131::-;-1:-1:-1;;;;;;594:32:1;;584:43;;574:71;;641:1;638;631:12;574:71;520:131;:::o;656:245::-;714:6;767:2;755:9;746:7;742:23;738:32;735:52;;;783:1;780;773:12;735:52;822:9;809:23;841:30;865:5;841:30;:::i;:::-;890:5;656:245;-1:-1:-1;;;656:245:1:o;1098:250::-;1183:1;1193:113;1207:6;1204:1;1201:13;1193:113;;;1283:11;;;1277:18;1264:11;;;1257:39;1229:2;1222:10;1193:113;;;-1:-1:-1;;1340:1:1;1322:16;;1315:27;1098:250::o;1353:271::-;1395:3;1433:5;1427:12;1460:6;1455:3;1448:19;1476:76;1545:6;1538:4;1533:3;1529:14;1522:4;1515:5;1511:16;1476:76;:::i;:::-;1606:2;1585:15;-1:-1:-1;;1581:29:1;1572:39;;;;1613:4;1568:50;;1353:271;-1:-1:-1;;1353:271:1:o;1629:220::-;1778:2;1767:9;1760:21;1741:4;1798:45;1839:2;1828:9;1824:18;1816:6;1798:45;:::i;1854:180::-;1913:6;1966:2;1954:9;1945:7;1941:23;1937:32;1934:52;;;1982:1;1979;1972:12;1934:52;-1:-1:-1;2005:23:1;;1854:180;-1:-1:-1;1854:180:1:o;2247:173::-;2315:20;;-1:-1:-1;;;;;2364:31:1;;2354:42;;2344:70;;2410:1;2407;2400:12;2344:70;2247:173;;;:::o;2425:254::-;2493:6;2501;2554:2;2542:9;2533:7;2529:23;2525:32;2522:52;;;2570:1;2567;2560:12;2522:52;2593:29;2612:9;2593:29;:::i;:::-;2583:39;2669:2;2654:18;;;;2641:32;;-1:-1:-1;;;2425:254:1:o;2866:328::-;2943:6;2951;2959;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;3051:29;3070:9;3051:29;:::i;:::-;3041:39;;3099:38;3133:2;3122:9;3118:18;3099:38;:::i;:::-;3089:48;;3184:2;3173:9;3169:18;3156:32;3146:42;;2866:328;;;;;:::o;3199:186::-;3258:6;3311:2;3299:9;3290:7;3286:23;3282:32;3279:52;;;3327:1;3324;3317:12;3279:52;3350:29;3369:9;3350:29;:::i;3390:347::-;3455:6;3463;3516:2;3504:9;3495:7;3491:23;3487:32;3484:52;;;3532:1;3529;3522:12;3484:52;3555:29;3574:9;3555:29;:::i;:::-;3545:39;;3634:2;3623:9;3619:18;3606:32;3681:5;3674:13;3667:21;3660:5;3657:32;3647:60;;3703:1;3700;3693:12;3647:60;3726:5;3716:15;;;3390:347;;;;;:::o;3742:127::-;3803:10;3798:3;3794:20;3791:1;3784:31;3834:4;3831:1;3824:15;3858:4;3855:1;3848:15;3874:275;3945:2;3939:9;4010:2;3991:13;;-1:-1:-1;;3987:27:1;3975:40;;4045:18;4030:34;;4066:22;;;4027:62;4024:88;;;4092:18;;:::i;:::-;4128:2;4121:22;3874:275;;-1:-1:-1;3874:275:1:o;4154:407::-;4219:5;4253:18;4245:6;4242:30;4239:56;;;4275:18;;:::i;:::-;4313:57;4358:2;4337:15;;-1:-1:-1;;4333:29:1;4364:4;4329:40;4313:57;:::i;:::-;4304:66;;4393:6;4386:5;4379:21;4433:3;4424:6;4419:3;4415:16;4412:25;4409:45;;;4450:1;4447;4440:12;4409:45;4499:6;4494:3;4487:4;4480:5;4476:16;4463:43;4553:1;4546:4;4537:6;4530:5;4526:18;4522:29;4515:40;4154:407;;;;;:::o;4566:222::-;4609:5;4662:3;4655:4;4647:6;4643:17;4639:27;4629:55;;4680:1;4677;4670:12;4629:55;4702:80;4778:3;4769:6;4756:20;4749:4;4741:6;4737:17;4702:80;:::i;4793:322::-;4862:6;4915:2;4903:9;4894:7;4890:23;4886:32;4883:52;;;4931:1;4928;4921:12;4883:52;4971:9;4958:23;5004:18;4996:6;4993:30;4990:50;;;5036:1;5033;5026:12;4990:50;5059;5101:7;5092:6;5081:9;5077:22;5059:50;:::i;5120:943::-;5173:5;5226:3;5219:4;5211:6;5207:17;5203:27;5193:55;;5244:1;5241;5234:12;5193:55;5280:6;5267:20;5306:4;5329:18;5366:2;5362;5359:10;5356:36;;;5372:18;;:::i;:::-;5418:2;5415:1;5411:10;5441:28;5465:2;5461;5457:11;5441:28;:::i;:::-;5503:15;;;5573;;;5569:24;;;5534:12;;;;5605:15;;;5602:35;;;5633:1;5630;5623:12;5602:35;5669:2;5661:6;5657:15;5646:26;;5681:353;5697:6;5692:3;5689:15;5681:353;;;5783:3;5770:17;5819:2;5806:11;5803:19;5800:109;;;5863:1;5892:2;5888;5881:14;5800:109;5934:57;5987:3;5982:2;5968:11;5960:6;5956:24;5952:33;5934:57;:::i;:::-;5922:70;;-1:-1:-1;5714:12:1;;;;6012;;;;5681:353;;;6052:5;5120:943;-1:-1:-1;;;;;;;;5120:943:1:o;6068:1485::-;6291:6;6299;6307;6315;6323;6331;6339;6392:3;6380:9;6371:7;6367:23;6363:33;6360:53;;;6409:1;6406;6399:12;6360:53;6445:9;6432:23;6422:33;;6506:2;6495:9;6491:18;6478:32;6529:18;6570:2;6562:6;6559:14;6556:34;;;6586:1;6583;6576:12;6556:34;6609:50;6651:7;6642:6;6631:9;6627:22;6609:50;:::i;:::-;6599:60;;6712:2;6701:9;6697:18;6684:32;6668:48;;6741:2;6731:8;6728:16;6725:36;;;6757:1;6754;6747:12;6725:36;6780:52;6824:7;6813:8;6802:9;6798:24;6780:52;:::i;:::-;6770:62;;6885:2;6874:9;6870:18;6857:32;6841:48;;6914:2;6904:8;6901:16;6898:36;;;6930:1;6927;6920:12;6898:36;6953:52;6997:7;6986:8;6975:9;6971:24;6953:52;:::i;:::-;6943:62;;7058:3;7047:9;7043:19;7030:33;7014:49;;7088:2;7078:8;7075:16;7072:36;;;7104:1;7101;7094:12;7072:36;7127:52;7171:7;7160:8;7149:9;7145:24;7127:52;:::i;:::-;7117:62;;7232:3;7221:9;7217:19;7204:33;7188:49;;7262:2;7252:8;7249:16;7246:36;;;7278:1;7275;7268:12;7246:36;7301:62;7355:7;7344:8;7333:9;7329:24;7301:62;:::i;:::-;7291:72;;7416:3;7405:9;7401:19;7388:33;7372:49;;7446:2;7436:8;7433:16;7430:36;;;7462:1;7459;7452:12;7430:36;;7485:62;7539:7;7528:8;7517:9;7513:24;7485:62;:::i;:::-;7475:72;;;6068:1485;;;;;;;;;;:::o;7558:667::-;7653:6;7661;7669;7677;7730:3;7718:9;7709:7;7705:23;7701:33;7698:53;;;7747:1;7744;7737:12;7698:53;7770:29;7789:9;7770:29;:::i;:::-;7760:39;;7818:38;7852:2;7841:9;7837:18;7818:38;:::i;:::-;7808:48;;7903:2;7892:9;7888:18;7875:32;7865:42;;7958:2;7947:9;7943:18;7930:32;7985:18;7977:6;7974:30;7971:50;;;8017:1;8014;8007:12;7971:50;8040:22;;8093:4;8085:13;;8081:27;-1:-1:-1;8071:55:1;;8122:1;8119;8112:12;8071:55;8145:74;8211:7;8206:2;8193:16;8188:2;8184;8180:11;8145:74;:::i;:::-;8135:84;;;7558:667;;;;;;;:::o;8230:260::-;8298:6;8306;8359:2;8347:9;8338:7;8334:23;8330:32;8327:52;;;8375:1;8372;8365:12;8327:52;8398:29;8417:9;8398:29;:::i;:::-;8388:39;;8446:38;8480:2;8469:9;8465:18;8446:38;:::i;:::-;8436:48;;8230:260;;;;;:::o;8495:328::-;8572:6;8580;8588;8641:2;8629:9;8620:7;8616:23;8612:32;8609:52;;;8657:1;8654;8647:12;8609:52;8680:29;8699:9;8680:29;:::i;:::-;8670:39;;8756:2;8745:9;8741:18;8728:32;8718:42;;8779:38;8813:2;8802:9;8798:18;8779:38;:::i;:::-;8769:48;;8495:328;;;;;:::o;8828:128::-;8895:9;;;8916:11;;;8913:37;;;8930:18;;:::i;8961:125::-;9026:9;;;9047:10;;;9044:36;;;9060:18;;:::i;9091:380::-;9170:1;9166:12;;;;9213;;;9234:61;;9288:4;9280:6;9276:17;9266:27;;9234:61;9341:2;9333:6;9330:14;9310:18;9307:38;9304:161;;9387:10;9382:3;9378:20;9375:1;9368:31;9422:4;9419:1;9412:15;9450:4;9447:1;9440:15;9304:161;;9091:380;;;:::o;9476:127::-;9537:10;9532:3;9528:20;9525:1;9518:31;9568:4;9565:1;9558:15;9592:4;9589:1;9582:15;9945:332;10147:2;10129:21;;;10186:1;10166:18;;;10159:29;-1:-1:-1;;;10219:2:1;10204:18;;10197:39;10268:2;10253:18;;9945:332::o;10408:545::-;10510:2;10505:3;10502:11;10499:448;;;10546:1;10571:5;10567:2;10560:17;10616:4;10612:2;10602:19;10686:2;10674:10;10670:19;10667:1;10663:27;10657:4;10653:38;10722:4;10710:10;10707:20;10704:47;;;-1:-1:-1;10745:4:1;10704:47;10800:2;10795:3;10791:12;10788:1;10784:20;10778:4;10774:31;10764:41;;10855:82;10873:2;10866:5;10863:13;10855:82;;;10918:17;;;10899:1;10888:13;10855:82;;;10859:3;;;10408:545;;;:::o;11129:1352::-;11255:3;11249:10;11282:18;11274:6;11271:30;11268:56;;;11304:18;;:::i;:::-;11333:97;11423:6;11383:38;11415:4;11409:11;11383:38;:::i;:::-;11377:4;11333:97;:::i;:::-;11485:4;;11549:2;11538:14;;11566:1;11561:663;;;;12268:1;12285:6;12282:89;;;-1:-1:-1;12337:19:1;;;12331:26;12282:89;-1:-1:-1;;11086:1:1;11082:11;;;11078:24;11074:29;11064:40;11110:1;11106:11;;;11061:57;12384:81;;11531:944;;11561:663;10355:1;10348:14;;;10392:4;10379:18;;-1:-1:-1;;11597:20:1;;;11715:236;11729:7;11726:1;11723:14;11715:236;;;11818:19;;;11812:26;11797:42;;11910:27;;;;11878:1;11866:14;;;;11745:19;;11715:236;;;11719:3;11979:6;11970:7;11967:19;11964:201;;;12040:19;;;12034:26;-1:-1:-1;;12123:1:1;12119:14;;;12135:3;12115:24;12111:37;12107:42;12092:58;12077:74;;11964:201;-1:-1:-1;;;;;12211:1:1;12195:14;;;12191:22;12178:36;;-1:-1:-1;11129:1352:1:o;12486:340::-;12688:2;12670:21;;;12727:2;12707:18;;;12700:30;-1:-1:-1;;;12761:2:1;12746:18;;12739:46;12817:2;12802:18;;12486:340::o;13171:468::-;13392:3;13430:6;13424:13;13446:66;13505:6;13500:3;13493:4;13485:6;13481:17;13446:66;:::i;:::-;-1:-1:-1;;;13534:16:1;;13559:45;;;-1:-1:-1;13631:1:1;13620:13;;13171:468;-1:-1:-1;13171:468:1:o;13644:722::-;13694:3;13735:5;13729:12;13764:36;13790:9;13764:36;:::i;:::-;13819:1;13836:18;;;13863:133;;;;14010:1;14005:355;;;;13829:531;;13863:133;-1:-1:-1;;13896:24:1;;13884:37;;13969:14;;13962:22;13950:35;;13941:45;;;-1:-1:-1;13863:133:1;;14005:355;14036:5;14033:1;14026:16;14065:4;14110:2;14107:1;14097:16;14135:1;14149:165;14163:6;14160:1;14157:13;14149:165;;;14241:14;;14228:11;;;14221:35;14284:16;;;;14178:10;;14149:165;;;14153:3;;;14343:6;14338:3;14334:16;14327:23;;13829:531;;;;;13644:722;;;;:::o;14371:369::-;14547:3;14585:6;14579:13;14601:66;14660:6;14655:3;14648:4;14640:6;14636:17;14601:66;:::i;:::-;14683:51;14726:6;14721:3;14717:16;14709:6;14683:51;:::i;:::-;14676:58;14371:369;-1:-1:-1;;;;;14371:369:1:o;14745:490::-;14967:3;15005:6;14999:13;15021:66;15080:6;15075:3;15068:4;15060:6;15056:17;15021:66;:::i;:::-;-1:-1:-1;;;15109:16:1;;15134:65;;;-1:-1:-1;15226:2:1;15215:14;;14745:490;-1:-1:-1;14745:490:1:o;15240:478::-;15462:3;15500:6;15494:13;15516:66;15575:6;15570:3;15563:4;15555:6;15551:17;15516:66;:::i;:::-;-1:-1:-1;;;15604:16:1;;15629:53;;;-1:-1:-1;15709:2:1;15698:14;;15240:478;-1:-1:-1;15240:478:1:o;15723:491::-;15945:3;15983:6;15977:13;15999:66;16058:6;16053:3;16046:4;16038:6;16034:17;15999:66;:::i;:::-;-1:-1:-1;;;16087:16:1;;16112:66;;;-1:-1:-1;16205:2:1;16194:14;;15723:491;-1:-1:-1;15723:491:1:o;16219:488::-;16441:3;16479:6;16473:13;16495:66;16554:6;16549:3;16542:4;16534:6;16530:17;16495:66;:::i;:::-;-1:-1:-1;;;16583:16:1;;16608:63;;;-1:-1:-1;16698:2:1;16687:14;;16219:488;-1:-1:-1;16219:488:1:o;16712:484::-;16934:3;16972:6;16966:13;16988:66;17047:6;17042:3;17035:4;17027:6;17023:17;16988:66;:::i;:::-;-1:-1:-1;;;17076:16:1;;17101:59;;;-1:-1:-1;17187:2:1;17176:14;;16712:484;-1:-1:-1;16712:484:1:o;17201:478::-;17423:3;17461:6;17455:13;17477:66;17536:6;17531:3;17524:4;17516:6;17512:17;17477:66;:::i;:::-;-1:-1:-1;;;17565:16:1;;17590:53;;;-1:-1:-1;17670:2:1;17659:14;;17201:478;-1:-1:-1;17201:478:1:o;17684:197::-;17812:3;17837:38;17871:3;17863:6;17837:38;:::i;17886:452::-;18107:3;18145:6;18139:13;18161:66;18220:6;18215:3;18208:4;18200:6;18196:17;18161:66;:::i;:::-;-1:-1:-1;;;18249:16:1;;18274:29;;;-1:-1:-1;18330:1:1;18319:13;;17886:452;-1:-1:-1;17886:452:1:o;18343:441::-;18564:3;18602:6;18596:13;18618:66;18677:6;18672:3;18665:4;18657:6;18653:17;18618:66;:::i;:::-;-1:-1:-1;;;18706:16:1;;18731:18;;;-1:-1:-1;18776:1:1;18765:13;;18343:441;-1:-1:-1;18343:441:1:o;18789:135::-;18828:3;18849:17;;;18846:43;;18869:18;;:::i;:::-;-1:-1:-1;18916:1:1;18905:13;;18789:135::o;18929:442::-;19150:3;19188:6;19182:13;19204:66;19263:6;19258:3;19251:4;19243:6;19239:17;19204:66;:::i;:::-;-1:-1:-1;;;19292:16:1;;19317:19;;;-1:-1:-1;19363:1:1;19352:13;;18929:442;-1:-1:-1;18929:442:1:o;19727:289::-;19858:3;19896:6;19890:13;19912:66;19971:6;19966:3;19959:4;19951:6;19947:17;19912:66;:::i;:::-;19994:16;;;;;19727:289;-1:-1:-1;;19727:289:1:o;21047:291::-;21203:3;21234:38;21268:3;21260:6;21234:38;:::i;:::-;21281:21;;;-1:-1:-1;;21329:2:1;21318:14;;21047:291;-1:-1:-1;21047:291:1:o;21343:489::-;-1:-1:-1;;;;;21612:15:1;;;21594:34;;21664:15;;21659:2;21644:18;;21637:43;21711:2;21696:18;;21689:34;;;21759:3;21754:2;21739:18;;21732:31;;;21537:4;;21780:46;;21806:19;;21798:6;21780:46;:::i;:::-;21772:54;21343:489;-1:-1:-1;;;;;;21343:489:1:o;21837:249::-;21906:6;21959:2;21947:9;21938:7;21934:23;21930:32;21927:52;;;21975:1;21972;21965:12;21927:52;22007:9;22001:16;22026:30;22050:5;22026:30;:::i
Swarm Source
ipfs://ba67a2097658386e3b6d68e334750c15176d6a6a1bf7ff751dba1b8c40d82c96
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.