ERC-721
Overview
Max Total Supply
268 F1DT
Holders
254
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 F1DTLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DeltaTimeNFT
Compiler Version
v0.5.0+commit.1d4f565a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-05-23 */ pragma solidity ^0.5.0; /** * @title IERC165 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md */ interface IERC165 { /** * @notice Query if a contract implements an interface * @param interfaceId The interface identifier, as specified in ERC-165 * @dev Interface identification is specified in ERC-165. This function * uses less than 30,000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } /** * @title ERC165 * @author Matt Condon (@shrugs) * @dev Implements ERC165 using a lookup table. */ contract ERC165 is IERC165 { bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; /** * 0x01ffc9a7 === * bytes4(keccak256('supportsInterface(bytes4)')) */ /** * @dev a mapping of interface id to whether or not it's supported */ mapping(bytes4 => bool) private _supportedInterfaces; /** * @dev A contract implementing SupportsInterfaceWithLookup * implement ERC165 itself */ constructor () internal { _registerInterface(_INTERFACE_ID_ERC165); } /** * @dev implement supportsInterface(bytes4) using a lookup table */ function supportsInterface(bytes4 interfaceId) external view returns (bool) { return _supportedInterfaces[interfaceId]; } /** * @dev internal method for registering an interface */ function _registerInterface(bytes4 interfaceId) internal { require(interfaceId != 0xffffffff); _supportedInterfaces[interfaceId] = true; } } /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ contract IERC721Receiver { /** * @notice Handle the receipt of an NFT * @dev The ERC721 smart contract calls this function on the recipient * after a `safeTransfer`. This function MUST return the function selector, * otherwise the caller will revert the transaction. The selector to be * returned can be obtained as `this.onERC721Received.selector`. This * function MAY throw to revert and reject the transfer. * Note: the ERC721 contract address is always the message sender. * @param operator The address which called `safeTransferFrom` function * @param from The address which previously owned the token * @param tokenId The NFT identifier which is being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` */ function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data) public returns (bytes4); } /** * @title ERC721 Non-Fungible Token Standard basic interface * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md */ contract 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) public view returns (uint256 balance); function ownerOf(uint256 tokenId) public view returns (address owner); function approve(address to, uint256 tokenId) public; function getApproved(uint256 tokenId) public view returns (address operator); function setApprovalForAll(address operator, bool _approved) public; function isApprovedForAll(address owner, address operator) public view returns (bool); function transferFrom(address from, address to, uint256 tokenId) public; function safeTransferFrom(address from, address to, uint256 tokenId) public; function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public; } /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md */ contract 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); } /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev give an account access to this role */ function add(Role storage role, address account) internal { require(account != address(0)); require(!has(role, account)); role.bearer[account] = true; } /** * @dev remove an account's access to this role */ function remove(Role storage role, address account) internal { require(account != address(0)); require(has(role, account)); role.bearer[account] = false; } /** * @dev check if an account has this role * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0)); return role.bearer[account]; } } contract PauserRole { using Roles for Roles.Role; event PauserAdded(address indexed account); event PauserRemoved(address indexed account); Roles.Role private _pausers; constructor () internal { _addPauser(msg.sender); } modifier onlyPauser() { require(isPauser(msg.sender)); _; } function isPauser(address account) public view returns (bool) { return _pausers.has(account); } function addPauser(address account) public onlyPauser { _addPauser(account); } function renouncePauser() public { _removePauser(msg.sender); } function _addPauser(address account) internal { _pausers.add(account); emit PauserAdded(account); } function _removePauser(address account) internal { _pausers.remove(account); emit PauserRemoved(account); } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is PauserRole { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () internal { _paused = false; } /** * @return true if the contract is paused, false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!_paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(_paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() public onlyPauser whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() public onlyPauser whenPaused { _paused = false; emit Unpaused(msg.sender); } } contract MinterRole { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () internal { _addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender)); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function addMinter(address account) public onlyMinter { _addMinter(account); } function renounceMinter() public { _removeMinter(msg.sender); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } /** * Utility library of inline functions on addresses */ library Address { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param account address of the account to check * @return whether the target address is a contract */ function isContract(address account) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } library Strings { function strConcat(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e) internal pure returns (string memory _concatenatedString) { bytes memory _ba = bytes(_a); bytes memory _bb = bytes(_b); bytes memory _bc = bytes(_c); bytes memory _bd = bytes(_d); bytes memory _be = bytes(_e); bytes memory babcde = new bytes(_ba.length + _bb.length + _bc.length + _bd.length + _be.length); uint k = 0; uint i = 0; for (i = 0; i < _ba.length; i++) { babcde[k++] = _ba[i]; } for (i = 0; i < _bb.length; i++) { babcde[k++] = _bb[i]; } for (i = 0; i < _bc.length; i++) { babcde[k++] = _bc[i]; } for (i = 0; i < _bd.length; i++) { babcde[k++] = _bd[i]; } for (i = 0; i < _be.length; i++) { babcde[k++] = _be[i]; } return string(babcde); } function strConcat(string memory _a, string memory _b, string memory _c, string memory _d) internal pure returns (string memory) { return strConcat(_a, _b, _c, _d, ""); } function strConcat(string memory _a, string memory _b, string memory _c) internal pure returns (string memory) { return strConcat(_a, _b, _c, "", ""); } function strConcat(string memory _a, string memory _b) internal pure returns (string memory) { return strConcat(_a, _b, "", "", ""); } function uint2str(uint _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len - 1; while (_i != 0) { bstr[k--] = byte(uint8(48 + _i % 10)); _i /= 10; } return string(bstr); } function split(bytes memory _base, uint8[] memory _lengths) internal pure returns (bytes[] memory arr) { uint _offset = 0; bytes[] memory splitArr = new bytes[](_lengths.length); for(uint i = 0; i < _lengths.length; i++) { bytes memory _tmpBytes = new bytes(_lengths[i]); for(uint j = 0; j < _lengths[i]; j++) _tmpBytes[j] = _base[_offset+j]; splitArr[i] = _tmpBytes; _offset += _lengths[i]; } return splitArr; } } /** * @title F1 Delta Time Non-Fungible Token * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md */ contract DeltaTimeNFTBase is ERC165, IERC721, IERC721Metadata, Pausable, MinterRole { using SafeMath for uint256; using Address for address; using Strings for string; bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd; /* * 0x80ac58cd === * bytes4(keccak256('balanceOf(address)')) ^ * bytes4(keccak256('ownerOf(uint256)')) ^ * bytes4(keccak256('approve(address,uint256)')) ^ * bytes4(keccak256('getApproved(uint256)')) ^ * bytes4(keccak256('setApprovalForAll(address,bool)')) ^ * bytes4(keccak256('isApprovedForAll(address,address)')) ^ * bytes4(keccak256('transferFrom(address,address,uint256)')) ^ * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^ * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) */ bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f; /** * 0x5b5e139f === * bytes4(keccak256('name()')) ^ * bytes4(keccak256('symbol()')) ^ * bytes4(keccak256('tokenURI(uint256)')) */ // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; // Token name string private _name; // Token symbol string private _symbol; // Token URI prefix string private _baseTokenURI; // Flag representing if metadata migrated to IPFS bool private _ipfsMigrated; // Token total Supply uint256 private _totalSupply; // Mapping from token ID to owner mapping (uint256 => address) private _tokenOwner; // Mapping from token ID to approved address mapping (uint256 => address) private _tokenApprovals; // Mapping Mapping from token ID to token URI mapping(uint256 => string) private _tokenURIs; // Mapping Mapping from token ID to token properties mapping (uint256 => uint256) private _tokenProperties; // Mapping from owner to number of owned token mapping (address => uint256) private _ownedTokensCount; // Mapping from owner to operator approvals mapping (address => mapping (address => bool)) private _operatorApprovals; event TokenURI(uint256 indexed tokenId, string uri); /** * @dev Constructor function */ constructor (string memory name, string memory symbol, string memory baseTokenURI) public { _name = name; _symbol = symbol; _totalSupply = 0; _baseTokenURI = baseTokenURI; _ipfsMigrated = false; // register the supported interfaces to conform to ERC721 via ERC165 _registerInterface(_INTERFACE_ID_ERC721); _registerInterface(_INTERFACE_ID_ERC721_METADATA); } /** * @dev Gets the token name * @return string representing the token name */ function name() external view returns (string memory) { return _name; } /** * @dev Gets the token symbol * @return string representing the token symbol */ function symbol() external view returns (string memory) { return _symbol; } /** * @dev Gets the total amount of tokens stored by the contract * @return uint256 representing the total amount of tokens */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev Returns whether the specified token exists * @param tokenId uint256 ID of the token to query the existence of * @return whether the token exists */ function exists(uint256 tokenId) external view returns (bool) { return _exists(tokenId); } /** * @dev Sets IPFS migration flag true */ function ipfsMigrationDone() public onlyMinter { _ipfsMigrated = true; } /** * @dev public function to set the token URI for a given token * Reverts if the token ID does not exist or metadata has migrated to IPFS * @param tokenId uint256 ID of the token to set its URI * @param uri string URI to assign */ function setTokenURI(uint256 tokenId, string memory uri) public onlyMinter { require(!_ipfsMigrated); _setTokenURI(tokenId, uri); } /** * @dev Returns the URI for a given token ID * Throws if the token ID does not exist. May return an empty string. * @param tokenId uint256 ID of the token to query */ function tokenURI(uint256 tokenId) external view returns (string memory) { require(_exists(tokenId)); if (bytes(_tokenURIs[tokenId]).length > 0) return _tokenURIs[tokenId]; return Strings.strConcat(baseTokenURI(),Strings.uint2str(tokenId)); } /** * @dev Sets the prefix of token URI * @param baseTokenURI token URI prefix to be set */ function setBaseTokenURI(string memory baseTokenURI) public onlyMinter { _baseTokenURI = baseTokenURI; } /** * @dev Returns prefix of token URI * @return string representing the token URI prefix */ function baseTokenURI() public view returns (string memory) { return _baseTokenURI; } /** * @dev Returns the properties for a given token ID * Throws if the token ID does not exist. * @param tokenId uint256 ID of the token to query */ function tokenProperties(uint256 tokenId) public view returns (uint256) { require(_exists(tokenId)); return _tokenProperties[tokenId]; } /** * @dev Gets the balance of the specified address * @param owner address to query the balance of * @return uint256 representing the amount owned by the passed address */ function balanceOf(address owner) public view returns (uint256) { require(owner != address(0)); return _ownedTokensCount[owner]; } /** * @dev Gets the owner of the specified token ID * @param tokenId uint256 ID of the token to query the owner of * @return owner address currently marked as the owner of the given token ID */ function ownerOf(uint256 tokenId) public view returns (address) { address owner = _tokenOwner[tokenId]; require(owner != address(0)); return owner; } /** * @dev Approves another address to transfer the given token ID * The zero address indicates there is no approved address. * There can only be one approved address per token at a given time. * Can only be called by the token owner or an approved operator. * @param to address to be approved for the given token ID * @param tokenId uint256 ID of the token to be approved */ function approve(address to, uint256 tokenId) public whenNotPaused { address owner = ownerOf(tokenId); require(to != owner); require(msg.sender == owner || isApprovedForAll(owner, msg.sender)); _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } /** * @dev Gets the approved address for a token ID, or zero if no address set * Reverts if the token ID does not exist. * @param tokenId uint256 ID of the token to query the approval of * @return address currently approved for the given token ID */ function getApproved(uint256 tokenId) public view returns (address) { require(_exists(tokenId)); return _tokenApprovals[tokenId]; } /** * @dev Sets or unsets the approval of a given operator * An operator is allowed to transfer all tokens of the sender on their behalf * @param to operator address to set the approval * @param approved representing the status of the approval to be set */ function setApprovalForAll(address to, bool approved) public whenNotPaused { require(to != msg.sender); _operatorApprovals[msg.sender][to] = approved; emit ApprovalForAll(msg.sender, to, approved); } /** * @dev Tells whether an operator is approved by a given owner * @param owner owner address which you want to query the approval of * @param operator operator address which you want to query the approval of * @return bool whether the given operator is approved by the given owner */ function isApprovedForAll(address owner, address operator) public view returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev Transfers the ownership of a given token ID to another address * Usage of this method is discouraged, use `safeTransferFrom` whenever possible * Requires the msg sender to be the owner, approved, or operator * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred */ function transferFrom(address from, address to, uint256 tokenId) public whenNotPaused { require(_isApprovedOrOwner(msg.sender, tokenId)); _transferFrom(from, to, tokenId); } /** * @dev Safely transfers the ownership of a given token ID to another address * If the target address is a contract, it must implement `onERC721Received`, * which is called upon a safe transfer, and return the magic value * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, * the transfer is reverted. * * Requires the msg sender to be the owner, approved, or operator * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred */ function safeTransferFrom(address from, address to, uint256 tokenId) public { safeTransferFrom(from, to, tokenId, ""); } /** * @dev Safely transfers the ownership of a given token ID to another address * If the target address is a contract, it must implement `onERC721Received`, * which is called upon a safe transfer, and return the magic value * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, * the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred * @param _data bytes data to send along with a safe transfer check */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public { transferFrom(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data)); } /** * @dev Public function to mint a new token * Reverts if the given token ID already exists * @param to address The address that will own the minted token * @param tokenId uint256 ID of the token to be minted * @param uri string Metadata URI of the token to be minted * @param tokenProps uint256 Properties of the token to be minted */ function mint(address to, uint256 tokenId, string memory uri, uint256 tokenProps) public onlyMinter { _mint(to, tokenId, uri, tokenProps); _totalSupply += 1; } /** * @dev Public function to mint a batch of new tokens * Reverts if some the given token IDs already exist * @param to address[] List of addresses that will own the minted tokens * @param tokenIds uint256[] List of IDs of the tokens to be minted * @param tokenURIs bytes[] Concatenated metadata URIs of the tokens to be minted * @param urisLengths uint8[] Lengths of the metadata URIs in the tokenURIs parameter * @param tokenProps uint256[] List of properties of the tokens to be minted */ function batchMint( address[] memory to, uint256[] memory tokenIds, bytes memory tokenURIs, uint8[] memory urisLengths, uint256[] memory tokenProps) public onlyMinter { require(tokenIds.length == to.length && tokenIds.length == urisLengths.length && tokenIds.length == tokenProps.length); bytes[] memory uris = Strings.split(tokenURIs, urisLengths); for (uint i = 0; i < tokenIds.length; i++) { _mint(to[i], tokenIds[i], string(uris[i]), tokenProps[i]); } _totalSupply += tokenIds.length; } /** * @dev Returns whether the specified token exists * @param tokenId uint256 ID of the token to query the existence of * @return whether the token exists */ function _exists(uint256 tokenId) internal view returns (bool) { address owner = _tokenOwner[tokenId]; return owner != address(0); } /** * @dev Returns whether the given spender can transfer a given token ID * @param spender address of the spender to query * @param tokenId uint256 ID of the token to be transferred * @return bool whether the msg.sender is approved for the given token ID, * is an operator of the owner, or is the owner of the token */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) { address owner = ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Internal function to mint a new token * Reverts if the given token ID already exists * @param to The address that will own the minted token * @param tokenId uint256 ID of the token to be minted * @param uri string URI of the token to be minted metadata * @param tokenProps uint256 properties of the token to be minted */ function _mint(address to, uint256 tokenId, string memory uri, uint256 tokenProps) internal { require(to != address(0)); require(!_exists(tokenId)); _tokenOwner[tokenId] = to; _ownedTokensCount[to] = _ownedTokensCount[to].add(1); _setTokenURI(tokenId, uri); _tokenProperties[tokenId] = tokenProps; emit Transfer(address(0), to, tokenId); } /** * @dev Internal function to set the token URI for a given token * Reverts if the token ID does not exist * @param tokenId uint256 ID of the token to set its URI * @param uri string URI to assign */ function _setTokenURI(uint256 tokenId, string memory uri) internal { require(_exists(tokenId)); _tokenURIs[tokenId] = uri; emit TokenURI(tokenId, uri); } /** * @dev Internal function to transfer ownership of a given token ID to another address. * As opposed to transferFrom, this imposes no restrictions on msg.sender. * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred */ function _transferFrom(address from, address to, uint256 tokenId) internal { require(ownerOf(tokenId) == from); require(to != address(0)); _clearApproval(tokenId); _ownedTokensCount[from] = _ownedTokensCount[from].sub(1); _ownedTokensCount[to] = _ownedTokensCount[to].add(1); _tokenOwner[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Internal function to invoke `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 whether the call correctly returned the expected magic value */ function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) internal returns (bool) { if (!to.isContract()) { return true; } bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data); return (retval == _ERC721_RECEIVED); } /** * @dev Private function to clear current approval of a given token ID * @param tokenId uint256 ID of the token to be transferred */ function _clearApproval(uint256 tokenId) private { if (_tokenApprovals[tokenId] != address(0)) { _tokenApprovals[tokenId] = address(0); } } } contract DeltaTimeNFT is DeltaTimeNFTBase { constructor (string memory baseTokenURI) public DeltaTimeNFTBase("F1® Delta Time", "F1DT", baseTokenURI) { } function tokenType(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return properties & 0xFF; } function tokenSubType(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFF << 8)) >> 8; } function tokenTeam(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFF << 16)) >> 16; } function tokenSeason(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFF << 24)) >> 24; } function tokenRarity(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFF << 32)) >> 32; } function tokenTrack(uint256 tokenId) public view returns (uint256) { // only CarNFT, DriverNFT, CarCompNFT, DriverCompNFT and TyreNFT has a track id uint256 properties = tokenProperties(tokenId); return (properties & (0xFF << 40)) >> 40; } function tokenCollection(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 48)) >> 48; } function tokenDriverNumber(uint256 tokenId) public view returns (uint256) { // only Car and Driver has a driver id uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 64)) >> 64; } function tokenRacingProperty1(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 80)) >> 80; } function tokenRacingProperty2(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 96)) >> 96; } function tokenRacingProperty3(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 112)) >> 112; } function tokenLuck(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 128)) >> 128; } function tokenEffect(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFF << 144)) >> 144; } function tokenSpecial1(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 152)) >> 152; } function tokenSpecial2(uint256 tokenId) public view returns (uint256) { uint256 properties = tokenProperties(tokenId); return (properties & (0xFFFF << 168)) >> 168; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"},{"name":"uri","type":"string"},{"name":"tokenProps","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"uri","type":"string"}],"name":"setTokenURI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenSeason","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"ipfsMigrationDone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenCollection","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"baseTokenURI","type":"string"}],"name":"setBaseTokenURI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenTeam","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenProperties","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenTrack","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenSpecial1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenRacingProperty3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenSubType","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenRacingProperty2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenDriverNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenRarity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address[]"},{"name":"tokenIds","type":"uint256[]"},{"name":"tokenURIs","type":"bytes"},{"name":"urisLengths","type":"uint8[]"},{"name":"tokenProps","type":"uint256[]"}],"name":"batchMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseTokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenLuck","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenType","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenEffect","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenSpecial2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"tokenRacingProperty1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"baseTokenURI","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"uri","type":"string"}],"name":"TokenURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200414b3803806200414b833981018060405260208110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291905050506040805190810160405280600f81526020017f4631c2ae2044656c74612054696d6500000000000000000000000000000000008152506040805190810160405280600481526020017f463144540000000000000000000000000000000000000000000000000000000081525082620001376301ffc9a77c01000000000000000000000000000000000000000000000000000000000262000278640100000000026401000000009004565b620001513362000336640100000000026401000000009004565b6000600260006101000a81548160ff0219169083151502179055506200018633620003a0640100000000026401000000009004565b82600490805190602001906200019e92919062000562565b508160059080519060200190620001b792919062000562565b5060006008819055508060069080519060200190620001d892919062000562565b506000600760006101000a81548160ff021916908315150217905550620002316380ac58cd7c01000000000000000000000000000000000000000000000000000000000262000278640100000000026401000000009004565b6200026e635b5e139f7c01000000000000000000000000000000000000000000000000000000000262000278640100000000026401000000009004565b5050505062000611565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515620002ca57600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6200035a8160016200040a6401000000000262003581179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b620003c48160036200040a6401000000000262003581179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200044757600080fd5b620004628282620004cd640100000000026401000000009004565b1515156200046f57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200050b57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005a557805160ff1916838001178555620005d6565b82800160010185558215620005d6579182015b82811115620005d5578251825591602001919060010190620005b8565b5b509050620005e59190620005e9565b5090565b6200060e91905b808211156200060a576000816000905550600101620005f0565b5090565b90565b613b2a80620006216000396000f3fe608060405260043610610230576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461023557806306fdde03146102a7578063081812fc1461033757806308a8d7aa146103b2578063095ea7b3146104ae578063162094c41461050957806318160ddd146105db5780631ccd03ac1461060657806323b872dd1461065557806324af9942146106d05780632dd883e8146106e757806330176e1314610736578063332e4f78146107fe57806334110a4d1461084d5780633f4ba83a1461089c57806342842e0e146108b357806346fbf68e1461092e5780634ace9497146109975780634b2993e7146109e65780634f558e7914610a355780634fca277214610a885780635419808f14610ad75780635c975abb14610b265780636352211e14610b555780636ef8d66d14610bd057806370a0823114610be757806373c85eba14610c4c57806382dc1ec414610c9b5780638456cb5914610cec578063869b81a814610d0357806395d89b4114610d52578063983b2d5614610de25780639865027514610e33578063a22cb46514610e4a578063aa271e1a14610ea7578063afb0a36914610f10578063b88d4fde14610f5f578063bed93fb514611071578063c87b56dd14611389578063d547cfb71461143d578063dd8aafd5146114cd578063e6c3b1f61461151c578063e985e9c51461156b578063ebd2b309146115f4578063ee673c4014611643578063fe5585f614611692575b600080fd5b34801561024157600080fd5b5061028d6004803603602081101561025857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506116e1565b604051808215151515815260200191505060405180910390f35b3480156102b357600080fd5b506102bc611748565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fc5780820151818401526020810190506102e1565b50505050905090810190601f1680156103295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034357600080fd5b506103706004803603602081101561035a57600080fd5b81019080803590602001909291905050506117ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103be57600080fd5b506104ac600480360360808110156103d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561041c57600080fd5b82018360208201111561042e57600080fd5b8035906020019184600183028401116401000000008311171561045057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919050505061183b565b005b3480156104ba57600080fd5b50610507600480360360408110156104d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611872565b005b34801561051557600080fd5b506105d96004803603604081101561052c57600080fd5b81019080803590602001909291908035906020019064010000000081111561055357600080fd5b82018360208201111561056557600080fd5b8035906020019184600183028401116401000000008311171561058757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506119d3565b005b3480156105e757600080fd5b506105f0611a11565b6040518082815260200191505060405180910390f35b34801561061257600080fd5b5061063f6004803603602081101561062957600080fd5b8101908080359060200190929190505050611a1b565b6040518082815260200191505060405180910390f35b34801561066157600080fd5b506106ce6004803603606081101561067857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a44565b005b3480156106dc57600080fd5b506106e5611a85565b005b3480156106f357600080fd5b506107206004803603602081101561070a57600080fd5b8101908080359060200190929190505050611ab6565b6040518082815260200191505060405180910390f35b34801561074257600080fd5b506107fc6004803603602081101561075957600080fd5b810190808035906020019064010000000081111561077657600080fd5b82018360208201111561078857600080fd5b803590602001918460018302840111640100000000831117156107aa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611ae3565b005b34801561080a57600080fd5b506108376004803603602081101561082157600080fd5b8101908080359060200190929190505050611b11565b6040518082815260200191505060405180910390f35b34801561085957600080fd5b506108866004803603602081101561087057600080fd5b8101908080359060200190929190505050611b39565b6040518082815260200191505060405180910390f35b3480156108a857600080fd5b506108b1611b6a565b005b3480156108bf57600080fd5b5061092c600480360360608110156108d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c19565b005b34801561093a57600080fd5b5061097d6004803603602081101561095157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c3a565b604051808215151515815260200191505060405180910390f35b3480156109a357600080fd5b506109d0600480360360208110156109ba57600080fd5b8101908080359060200190929190505050611c57565b6040518082815260200191505060405180910390f35b3480156109f257600080fd5b50610a1f60048036036020811015610a0957600080fd5b8101908080359060200190929190505050611c82565b6040518082815260200191505060405180910390f35b348015610a4157600080fd5b50610a6e60048036036020811015610a5857600080fd5b8101908080359060200190929190505050611cbc565b604051808215151515815260200191505060405180910390f35b348015610a9457600080fd5b50610ac160048036036020811015610aab57600080fd5b8101908080359060200190929190505050611cce565b6040518082815260200191505060405180910390f35b348015610ae357600080fd5b50610b1060048036036020811015610afa57600080fd5b8101908080359060200190929190505050611d03565b6040518082815260200191505060405180910390f35b348015610b3257600080fd5b50610b3b611d2a565b604051808215151515815260200191505060405180910390f35b348015610b6157600080fd5b50610b8e60048036036020811015610b7857600080fd5b8101908080359060200190929190505050611d41565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bdc57600080fd5b50610be5611dbf565b005b348015610bf357600080fd5b50610c3660048036036020811015610c0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dca565b6040518082815260200191505060405180910390f35b348015610c5857600080fd5b50610c8560048036036020811015610c6f57600080fd5b8101908080359060200190929190505050611e4e565b6040518082815260200191505060405180910390f35b348015610ca757600080fd5b50610cea60048036036020811015610cbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e81565b005b348015610cf857600080fd5b50610d01611ea1565b005b348015610d0f57600080fd5b50610d3c60048036036020811015610d2657600080fd5b8101908080359060200190929190505050611f51565b6040518082815260200191505060405180910390f35b348015610d5e57600080fd5b50610d67611f80565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da7578082015181840152602081019050610d8c565b50505050905090810190601f168015610dd45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610dee57600080fd5b50610e3160048036036020811015610e0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612022565b005b348015610e3f57600080fd5b50610e48612042565b005b348015610e5657600080fd5b50610ea560048036036040811015610e6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061204d565b005b348015610eb357600080fd5b50610ef660048036036020811015610eca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121a5565b604051808215151515815260200191505060405180910390f35b348015610f1c57600080fd5b50610f4960048036036020811015610f3357600080fd5b81019080803590602001909291905050506121c2565b6040518082815260200191505060405180910390f35b348015610f6b57600080fd5b5061106f60048036036080811015610f8257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610fe957600080fd5b820183602082011115610ffb57600080fd5b8035906020019184600183028401116401000000008311171561101d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506121ec565b005b34801561107d57600080fd5b50611387600480360360a081101561109457600080fd5b81019080803590602001906401000000008111156110b157600080fd5b8201836020820111156110c357600080fd5b803590602001918460208302840111640100000000831117156110e557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561114557600080fd5b82018360208201111561115757600080fd5b8035906020019184602083028401116401000000008311171561117957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156111d957600080fd5b8201836020820111156111eb57600080fd5b8035906020019184600183028401116401000000008311171561120d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561127057600080fd5b82018360208201111561128257600080fd5b803590602001918460208302840111640100000000831117156112a457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561130457600080fd5b82018360208201111561131657600080fd5b8035906020019184602083028401116401000000008311171561133857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612214565b005b34801561139557600080fd5b506113c2600480360360208110156113ac57600080fd5b81019080803590602001909291905050506122fe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156114025780820151818401526020810190506113e7565b50505050905090810190601f16801561142f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561144957600080fd5b50611452612418565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611492578082015181840152602081019050611477565b50505050905090810190601f1680156114bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156114d957600080fd5b50611506600480360360208110156114f057600080fd5b81019080803590602001909291905050506124ba565b6040518082815260200191505060405180910390f35b34801561152857600080fd5b506115556004803603602081101561153f57600080fd5b81019080803590602001909291905050506124f1565b6040518082815260200191505060405180910390f35b34801561157757600080fd5b506115da6004803603604081101561158e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250b565b604051808215151515815260200191505060405180910390f35b34801561160057600080fd5b5061162d6004803603602081101561161757600080fd5b810190808035906020019092919050505061259f565b6040518082815260200191505060405180910390f35b34801561164f57600080fd5b5061167c6004803603602081101561166657600080fd5b81019080803590602001909291905050506125d7565b6040518082815260200191505060405180910390f35b34801561169e57600080fd5b506116cb600480360360208110156116b557600080fd5b8101908080359060200190929190505050612613565b6040518082815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117e05780601f106117b5576101008083540402835291602001916117e0565b820191906000526020600020905b8154815290600101906020018083116117c357829003601f168201915b5050505050905090565b60006117f582612644565b151561180057600080fd5b600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611844336121a5565b151561184f57600080fd5b61185b848484846126b6565b600160086000828254019250508190555050505050565b600260009054906101000a900460ff1615151561188e57600080fd5b600061189982611d41565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156118d657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119165750611915813361250b565b5b151561192157600080fd5b82600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6119dc336121a5565b15156119e757600080fd5b600760009054906101000a900460ff16151515611a0357600080fd5b611a0d8282612873565b5050565b6000600854905090565b600080611a2783611b39565b9050601863ff0000008216908060020a8204915050915050919050565b600260009054906101000a900460ff16151515611a6057600080fd5b611a6a3382612950565b1515611a7557600080fd5b611a808383836129e5565b505050565b611a8e336121a5565b1515611a9957600080fd5b6001600760006101000a81548160ff021916908315150217905550565b600080611ac283611b39565b9050603067ffff0000000000008216908060020a8204915050915050919050565b611aec336121a5565b1515611af757600080fd5b8060069080519060200190611b0d929190613a59565b5050565b600080611b1d83611b39565b9050601062ff00008216908060020a8204915050915050919050565b6000611b4482612644565b1515611b4f57600080fd5b600c6000838152602001908152602001600020549050919050565b611b7333611c3a565b1515611b7e57600080fd5b600260009054906101000a900460ff161515611b9957600080fd5b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b611c3583838360206040519081016040528060008152506121ec565b505050565b6000611c50826001612c4a90919063ffffffff16565b9050919050565b600080611c6383611b39565b9050602865ff00000000008216908060020a8204915050915050919050565b600080611c8e83611b39565b9050609874ffff000000000000000000000000000000000000008216908060020a8204915050915050919050565b6000611cc782612644565b9050919050565b600080611cda83611b39565b905060706fffff00000000000000000000000000008216908060020a8204915050915050919050565b600080611d0f83611b39565b9050600861ff008216908060020a8204915050915050919050565b6000600260009054906101000a900460ff16905090565b6000806009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611db657600080fd5b80915050919050565b611dc833612cde565b565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e0757600080fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080611e5a83611b39565b905060606dffff0000000000000000000000008216908060020a8204915050915050919050565b611e8a33611c3a565b1515611e9557600080fd5b611e9e81612d38565b50565b611eaa33611c3a565b1515611eb557600080fd5b600260009054906101000a900460ff16151515611ed157600080fd5b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080611f5d83611b39565b9050604069ffff00000000000000008216908060020a8204915050915050919050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120185780601f10611fed57610100808354040283529160200191612018565b820191906000526020600020905b815481529060010190602001808311611ffb57829003601f168201915b5050505050905090565b61202b336121a5565b151561203657600080fd5b61203f81612d92565b50565b61204b33612dec565b565b600260009054906101000a900460ff1615151561206957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156120a457600080fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006121bb826003612c4a90919063ffffffff16565b9050919050565b6000806121ce83611b39565b9050602064ff000000008216908060020a8204915050915050919050565b6121f7848484611a44565b61220384848484612e46565b151561220e57600080fd5b50505050565b61221d336121a5565b151561222857600080fd5b8451845114801561223a575081518451145b8015612247575080518451145b151561225257600080fd5b606061225e8484613069565b905060008090505b85518110156122e4576122d7878281518110151561228057fe5b90602001906020020151878381518110151561229857fe5b9060200190602002015184848151811015156122b057fe5b9060200190602002015186858151811015156122c857fe5b906020019060200201516126b6565b8080600101915050612266565b508451600860008282540192505081905550505050505050565b606061230982612644565b151561231457600080fd5b6000600b600084815260200190815260200160002080546001816001161561010002031660029004905011156123f757600b60008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123eb5780601f106123c0576101008083540402835291602001916123eb565b820191906000526020600020905b8154815290600101906020018083116123ce57829003601f168201915b50505050509050612413565b612410612402612418565b61240b8461322f565b613388565b90505b919050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124b05780601f10612485576101008083540402835291602001916124b0565b820191906000526020600020905b81548152906001019060200180831161249357829003601f168201915b5050505050905090565b6000806124c683611b39565b9050608071ffff000000000000000000000000000000008216908060020a8204915050915050919050565b6000806124fd83611b39565b905060ff8116915050919050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806125ab83611b39565b9050609072ff0000000000000000000000000000000000008216908060020a8204915050915050919050565b6000806125e383611b39565b905060a876ffff0000000000000000000000000000000000000000008216908060020a8204915050915050919050565b60008061261f83611b39565b905060506bffff000000000000000000008216908060020a8204915050915050919050565b6000806009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156126f257600080fd5b6126fb83612644565b15151561270757600080fd5b836009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506127ac6001600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133cf90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127f98383612873565b80600c600085815260200190815260200160002081905550828473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b61287c82612644565b151561288757600080fd5b80600b600084815260200190815260200160002090805190602001906128ae929190613a59565b50817fe9dd2c01379f6033709e315d41f1a58fcbd937ae2512da16462852d1082e7b73826040518080602001828103825283818151815260200191508051906020019080838360005b838110156129125780820151818401526020810190506128f7565b50505050905090810190601f16801561293f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60008061295c83611d41565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806129cb57508373ffffffffffffffffffffffffffffffffffffffff166129b3846117ea565b73ffffffffffffffffffffffffffffffffffffffff16145b806129dc57506129db818561250b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612a0582611d41565b73ffffffffffffffffffffffffffffffffffffffff16141515612a2757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612a6357600080fd5b612a6c816133f0565b612abf6001600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b090919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b556001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133cf90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612c8757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612cf28160016134d290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b612d4c81600161358190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b612da681600361358190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b612e008160036134d290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000612e678473ffffffffffffffffffffffffffffffffffffffff16613631565b1515612e765760019050613061565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612f6d578082015181840152602081019050612f52565b50505050905090810190601f168015612f9a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612fbc57600080fd5b505af1158015612fd0573d6000803e3d6000fd5b505050506040513d6020811015612fe657600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b60606000809050606083516040519080825280602002602001820160405280156130a757816020015b60608152602001906001900390816130925790505b50905060008090505b845181101561322357606085828151811015156130c957fe5b9060200190602002015160ff166040519080825280601f01601f1916602001820160405280156131085781602001600182028038833980820191505090505b50905060008090505b868381518110151561311f57fe5b9060200190602002015160ff168110156131d9578781860181518110151561314357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002828281518110151561319c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613111565b508083838151811015156131e957fe5b90602001906020020181905250858281518110151561320457fe5b9060200190602002015160ff16840193505080806001019150506130b0565b50809250505092915050565b60606000821415613277576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613383565b600082905060005b6000821415156132a5578080600101915050600a8281151561329d57fe5b04915061327f565b6060816040519080825280601f01601f1916602001820160405280156132da5781602001600182028038833980820191505090505b50905060006001830390505b60008614151561337b57600a868115156132fc57fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110151561333757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8681151561337357fe5b0495506132e6565b819450505050505b919050565b60606133c78383602060405190810160405280600081525060206040519081016040528060008152506020604051908101604052806000815250613644565b905092915050565b60008082840190508381101515156133e657600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156134ad576000600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156134c157600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561350e57600080fd5b6135188282612c4a565b151561352357600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156135bd57600080fd5b6135c78282612c4a565b1515156135d357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b905060008111915050919050565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f1916602001820160405280156136a05781602001600182028038833980820191505090505b50905060008090506000809050600090505b87518110156137655787818151811015156136c957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561372857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506136b2565b600090505b865181101561381d57868181518110151561378157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156137e057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061376a565b600090505b85518110156138d557858181518110151561383957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561389857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613822565b600090505b845181101561398d5784818151811015156138f157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561395057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506138da565b600090505b8351811015613a455783818151811015156139a957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028383806001019450815181101515613a0857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613992565b829850505050505050505095945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a9a57805160ff1916838001178555613ac8565b82800160010185558215613ac8579182015b82811115613ac7578251825591602001919060010190613aac565b5b509050613ad59190613ad9565b5090565b613afb91905b80821115613af7576000816000905550600101613adf565b5090565b9056fea165627a7a723058204daec22e8ac080c17cac5478ff62a5466d5397f8535b2e9ec0dee0768ecd9c3900290000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f6e66742e663164656c746174696d652e636f6d2f6a736f6e2f00000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610230576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461023557806306fdde03146102a7578063081812fc1461033757806308a8d7aa146103b2578063095ea7b3146104ae578063162094c41461050957806318160ddd146105db5780631ccd03ac1461060657806323b872dd1461065557806324af9942146106d05780632dd883e8146106e757806330176e1314610736578063332e4f78146107fe57806334110a4d1461084d5780633f4ba83a1461089c57806342842e0e146108b357806346fbf68e1461092e5780634ace9497146109975780634b2993e7146109e65780634f558e7914610a355780634fca277214610a885780635419808f14610ad75780635c975abb14610b265780636352211e14610b555780636ef8d66d14610bd057806370a0823114610be757806373c85eba14610c4c57806382dc1ec414610c9b5780638456cb5914610cec578063869b81a814610d0357806395d89b4114610d52578063983b2d5614610de25780639865027514610e33578063a22cb46514610e4a578063aa271e1a14610ea7578063afb0a36914610f10578063b88d4fde14610f5f578063bed93fb514611071578063c87b56dd14611389578063d547cfb71461143d578063dd8aafd5146114cd578063e6c3b1f61461151c578063e985e9c51461156b578063ebd2b309146115f4578063ee673c4014611643578063fe5585f614611692575b600080fd5b34801561024157600080fd5b5061028d6004803603602081101561025857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506116e1565b604051808215151515815260200191505060405180910390f35b3480156102b357600080fd5b506102bc611748565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fc5780820151818401526020810190506102e1565b50505050905090810190601f1680156103295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034357600080fd5b506103706004803603602081101561035a57600080fd5b81019080803590602001909291905050506117ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103be57600080fd5b506104ac600480360360808110156103d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561041c57600080fd5b82018360208201111561042e57600080fd5b8035906020019184600183028401116401000000008311171561045057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919050505061183b565b005b3480156104ba57600080fd5b50610507600480360360408110156104d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611872565b005b34801561051557600080fd5b506105d96004803603604081101561052c57600080fd5b81019080803590602001909291908035906020019064010000000081111561055357600080fd5b82018360208201111561056557600080fd5b8035906020019184600183028401116401000000008311171561058757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506119d3565b005b3480156105e757600080fd5b506105f0611a11565b6040518082815260200191505060405180910390f35b34801561061257600080fd5b5061063f6004803603602081101561062957600080fd5b8101908080359060200190929190505050611a1b565b6040518082815260200191505060405180910390f35b34801561066157600080fd5b506106ce6004803603606081101561067857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a44565b005b3480156106dc57600080fd5b506106e5611a85565b005b3480156106f357600080fd5b506107206004803603602081101561070a57600080fd5b8101908080359060200190929190505050611ab6565b6040518082815260200191505060405180910390f35b34801561074257600080fd5b506107fc6004803603602081101561075957600080fd5b810190808035906020019064010000000081111561077657600080fd5b82018360208201111561078857600080fd5b803590602001918460018302840111640100000000831117156107aa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611ae3565b005b34801561080a57600080fd5b506108376004803603602081101561082157600080fd5b8101908080359060200190929190505050611b11565b6040518082815260200191505060405180910390f35b34801561085957600080fd5b506108866004803603602081101561087057600080fd5b8101908080359060200190929190505050611b39565b6040518082815260200191505060405180910390f35b3480156108a857600080fd5b506108b1611b6a565b005b3480156108bf57600080fd5b5061092c600480360360608110156108d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c19565b005b34801561093a57600080fd5b5061097d6004803603602081101561095157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c3a565b604051808215151515815260200191505060405180910390f35b3480156109a357600080fd5b506109d0600480360360208110156109ba57600080fd5b8101908080359060200190929190505050611c57565b6040518082815260200191505060405180910390f35b3480156109f257600080fd5b50610a1f60048036036020811015610a0957600080fd5b8101908080359060200190929190505050611c82565b6040518082815260200191505060405180910390f35b348015610a4157600080fd5b50610a6e60048036036020811015610a5857600080fd5b8101908080359060200190929190505050611cbc565b604051808215151515815260200191505060405180910390f35b348015610a9457600080fd5b50610ac160048036036020811015610aab57600080fd5b8101908080359060200190929190505050611cce565b6040518082815260200191505060405180910390f35b348015610ae357600080fd5b50610b1060048036036020811015610afa57600080fd5b8101908080359060200190929190505050611d03565b6040518082815260200191505060405180910390f35b348015610b3257600080fd5b50610b3b611d2a565b604051808215151515815260200191505060405180910390f35b348015610b6157600080fd5b50610b8e60048036036020811015610b7857600080fd5b8101908080359060200190929190505050611d41565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bdc57600080fd5b50610be5611dbf565b005b348015610bf357600080fd5b50610c3660048036036020811015610c0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dca565b6040518082815260200191505060405180910390f35b348015610c5857600080fd5b50610c8560048036036020811015610c6f57600080fd5b8101908080359060200190929190505050611e4e565b6040518082815260200191505060405180910390f35b348015610ca757600080fd5b50610cea60048036036020811015610cbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e81565b005b348015610cf857600080fd5b50610d01611ea1565b005b348015610d0f57600080fd5b50610d3c60048036036020811015610d2657600080fd5b8101908080359060200190929190505050611f51565b6040518082815260200191505060405180910390f35b348015610d5e57600080fd5b50610d67611f80565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da7578082015181840152602081019050610d8c565b50505050905090810190601f168015610dd45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610dee57600080fd5b50610e3160048036036020811015610e0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612022565b005b348015610e3f57600080fd5b50610e48612042565b005b348015610e5657600080fd5b50610ea560048036036040811015610e6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061204d565b005b348015610eb357600080fd5b50610ef660048036036020811015610eca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121a5565b604051808215151515815260200191505060405180910390f35b348015610f1c57600080fd5b50610f4960048036036020811015610f3357600080fd5b81019080803590602001909291905050506121c2565b6040518082815260200191505060405180910390f35b348015610f6b57600080fd5b5061106f60048036036080811015610f8257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610fe957600080fd5b820183602082011115610ffb57600080fd5b8035906020019184600183028401116401000000008311171561101d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506121ec565b005b34801561107d57600080fd5b50611387600480360360a081101561109457600080fd5b81019080803590602001906401000000008111156110b157600080fd5b8201836020820111156110c357600080fd5b803590602001918460208302840111640100000000831117156110e557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561114557600080fd5b82018360208201111561115757600080fd5b8035906020019184602083028401116401000000008311171561117957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156111d957600080fd5b8201836020820111156111eb57600080fd5b8035906020019184600183028401116401000000008311171561120d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561127057600080fd5b82018360208201111561128257600080fd5b803590602001918460208302840111640100000000831117156112a457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561130457600080fd5b82018360208201111561131657600080fd5b8035906020019184602083028401116401000000008311171561133857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612214565b005b34801561139557600080fd5b506113c2600480360360208110156113ac57600080fd5b81019080803590602001909291905050506122fe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156114025780820151818401526020810190506113e7565b50505050905090810190601f16801561142f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561144957600080fd5b50611452612418565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611492578082015181840152602081019050611477565b50505050905090810190601f1680156114bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156114d957600080fd5b50611506600480360360208110156114f057600080fd5b81019080803590602001909291905050506124ba565b6040518082815260200191505060405180910390f35b34801561152857600080fd5b506115556004803603602081101561153f57600080fd5b81019080803590602001909291905050506124f1565b6040518082815260200191505060405180910390f35b34801561157757600080fd5b506115da6004803603604081101561158e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250b565b604051808215151515815260200191505060405180910390f35b34801561160057600080fd5b5061162d6004803603602081101561161757600080fd5b810190808035906020019092919050505061259f565b6040518082815260200191505060405180910390f35b34801561164f57600080fd5b5061167c6004803603602081101561166657600080fd5b81019080803590602001909291905050506125d7565b6040518082815260200191505060405180910390f35b34801561169e57600080fd5b506116cb600480360360208110156116b557600080fd5b8101908080359060200190929190505050612613565b6040518082815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117e05780601f106117b5576101008083540402835291602001916117e0565b820191906000526020600020905b8154815290600101906020018083116117c357829003601f168201915b5050505050905090565b60006117f582612644565b151561180057600080fd5b600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611844336121a5565b151561184f57600080fd5b61185b848484846126b6565b600160086000828254019250508190555050505050565b600260009054906101000a900460ff1615151561188e57600080fd5b600061189982611d41565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156118d657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119165750611915813361250b565b5b151561192157600080fd5b82600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6119dc336121a5565b15156119e757600080fd5b600760009054906101000a900460ff16151515611a0357600080fd5b611a0d8282612873565b5050565b6000600854905090565b600080611a2783611b39565b9050601863ff0000008216908060020a8204915050915050919050565b600260009054906101000a900460ff16151515611a6057600080fd5b611a6a3382612950565b1515611a7557600080fd5b611a808383836129e5565b505050565b611a8e336121a5565b1515611a9957600080fd5b6001600760006101000a81548160ff021916908315150217905550565b600080611ac283611b39565b9050603067ffff0000000000008216908060020a8204915050915050919050565b611aec336121a5565b1515611af757600080fd5b8060069080519060200190611b0d929190613a59565b5050565b600080611b1d83611b39565b9050601062ff00008216908060020a8204915050915050919050565b6000611b4482612644565b1515611b4f57600080fd5b600c6000838152602001908152602001600020549050919050565b611b7333611c3a565b1515611b7e57600080fd5b600260009054906101000a900460ff161515611b9957600080fd5b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b611c3583838360206040519081016040528060008152506121ec565b505050565b6000611c50826001612c4a90919063ffffffff16565b9050919050565b600080611c6383611b39565b9050602865ff00000000008216908060020a8204915050915050919050565b600080611c8e83611b39565b9050609874ffff000000000000000000000000000000000000008216908060020a8204915050915050919050565b6000611cc782612644565b9050919050565b600080611cda83611b39565b905060706fffff00000000000000000000000000008216908060020a8204915050915050919050565b600080611d0f83611b39565b9050600861ff008216908060020a8204915050915050919050565b6000600260009054906101000a900460ff16905090565b6000806009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611db657600080fd5b80915050919050565b611dc833612cde565b565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e0757600080fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080611e5a83611b39565b905060606dffff0000000000000000000000008216908060020a8204915050915050919050565b611e8a33611c3a565b1515611e9557600080fd5b611e9e81612d38565b50565b611eaa33611c3a565b1515611eb557600080fd5b600260009054906101000a900460ff16151515611ed157600080fd5b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080611f5d83611b39565b9050604069ffff00000000000000008216908060020a8204915050915050919050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120185780601f10611fed57610100808354040283529160200191612018565b820191906000526020600020905b815481529060010190602001808311611ffb57829003601f168201915b5050505050905090565b61202b336121a5565b151561203657600080fd5b61203f81612d92565b50565b61204b33612dec565b565b600260009054906101000a900460ff1615151561206957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156120a457600080fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006121bb826003612c4a90919063ffffffff16565b9050919050565b6000806121ce83611b39565b9050602064ff000000008216908060020a8204915050915050919050565b6121f7848484611a44565b61220384848484612e46565b151561220e57600080fd5b50505050565b61221d336121a5565b151561222857600080fd5b8451845114801561223a575081518451145b8015612247575080518451145b151561225257600080fd5b606061225e8484613069565b905060008090505b85518110156122e4576122d7878281518110151561228057fe5b90602001906020020151878381518110151561229857fe5b9060200190602002015184848151811015156122b057fe5b9060200190602002015186858151811015156122c857fe5b906020019060200201516126b6565b8080600101915050612266565b508451600860008282540192505081905550505050505050565b606061230982612644565b151561231457600080fd5b6000600b600084815260200190815260200160002080546001816001161561010002031660029004905011156123f757600b60008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123eb5780601f106123c0576101008083540402835291602001916123eb565b820191906000526020600020905b8154815290600101906020018083116123ce57829003601f168201915b50505050509050612413565b612410612402612418565b61240b8461322f565b613388565b90505b919050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124b05780601f10612485576101008083540402835291602001916124b0565b820191906000526020600020905b81548152906001019060200180831161249357829003601f168201915b5050505050905090565b6000806124c683611b39565b9050608071ffff000000000000000000000000000000008216908060020a8204915050915050919050565b6000806124fd83611b39565b905060ff8116915050919050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806125ab83611b39565b9050609072ff0000000000000000000000000000000000008216908060020a8204915050915050919050565b6000806125e383611b39565b905060a876ffff0000000000000000000000000000000000000000008216908060020a8204915050915050919050565b60008061261f83611b39565b905060506bffff000000000000000000008216908060020a8204915050915050919050565b6000806009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156126f257600080fd5b6126fb83612644565b15151561270757600080fd5b836009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506127ac6001600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133cf90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127f98383612873565b80600c600085815260200190815260200160002081905550828473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b61287c82612644565b151561288757600080fd5b80600b600084815260200190815260200160002090805190602001906128ae929190613a59565b50817fe9dd2c01379f6033709e315d41f1a58fcbd937ae2512da16462852d1082e7b73826040518080602001828103825283818151815260200191508051906020019080838360005b838110156129125780820151818401526020810190506128f7565b50505050905090810190601f16801561293f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60008061295c83611d41565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806129cb57508373ffffffffffffffffffffffffffffffffffffffff166129b3846117ea565b73ffffffffffffffffffffffffffffffffffffffff16145b806129dc57506129db818561250b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612a0582611d41565b73ffffffffffffffffffffffffffffffffffffffff16141515612a2757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612a6357600080fd5b612a6c816133f0565b612abf6001600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b090919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b556001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133cf90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612c8757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612cf28160016134d290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b612d4c81600161358190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b612da681600361358190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b612e008160036134d290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000612e678473ffffffffffffffffffffffffffffffffffffffff16613631565b1515612e765760019050613061565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612f6d578082015181840152602081019050612f52565b50505050905090810190601f168015612f9a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612fbc57600080fd5b505af1158015612fd0573d6000803e3d6000fd5b505050506040513d6020811015612fe657600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b60606000809050606083516040519080825280602002602001820160405280156130a757816020015b60608152602001906001900390816130925790505b50905060008090505b845181101561322357606085828151811015156130c957fe5b9060200190602002015160ff166040519080825280601f01601f1916602001820160405280156131085781602001600182028038833980820191505090505b50905060008090505b868381518110151561311f57fe5b9060200190602002015160ff168110156131d9578781860181518110151561314357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002828281518110151561319c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613111565b508083838151811015156131e957fe5b90602001906020020181905250858281518110151561320457fe5b9060200190602002015160ff16840193505080806001019150506130b0565b50809250505092915050565b60606000821415613277576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613383565b600082905060005b6000821415156132a5578080600101915050600a8281151561329d57fe5b04915061327f565b6060816040519080825280601f01601f1916602001820160405280156132da5781602001600182028038833980820191505090505b50905060006001830390505b60008614151561337b57600a868115156132fc57fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110151561333757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8681151561337357fe5b0495506132e6565b819450505050505b919050565b60606133c78383602060405190810160405280600081525060206040519081016040528060008152506020604051908101604052806000815250613644565b905092915050565b60008082840190508381101515156133e657600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156134ad576000600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156134c157600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561350e57600080fd5b6135188282612c4a565b151561352357600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156135bd57600080fd5b6135c78282612c4a565b1515156135d357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b905060008111915050919050565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f1916602001820160405280156136a05781602001600182028038833980820191505090505b50905060008090506000809050600090505b87518110156137655787818151811015156136c957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561372857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506136b2565b600090505b865181101561381d57868181518110151561378157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156137e057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061376a565b600090505b85518110156138d557858181518110151561383957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561389857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613822565b600090505b845181101561398d5784818151811015156138f157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561395057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506138da565b600090505b8351811015613a455783818151811015156139a957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028383806001019450815181101515613a0857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613992565b829850505050505050505095945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a9a57805160ff1916838001178555613ac8565b82800160010185558215613ac8579182015b82811115613ac7578251825591602001919060010190613aac565b5b509050613ad59190613ad9565b5090565b613afb91905b80821115613af7576000816000905550600101613adf565b5090565b9056fea165627a7a723058204daec22e8ac080c17cac5478ff62a5466d5397f8535b2e9ec0dee0768ecd9c390029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f6e66742e663164656c746174696d652e636f6d2f6a736f6e2f00000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : baseTokenURI (string): https://nft.f1deltatime.com/json/
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000021
Arg [2] : 68747470733a2f2f6e66742e663164656c746174696d652e636f6d2f6a736f6e
Arg [3] : 2f00000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
31376:3025:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1257:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1257:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17288:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17288:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17288:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21829:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21829:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21829:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25744:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25744:196:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;25744:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;25744:196:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25744:196:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;25744:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;25744:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21223:313;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21223:313:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21223:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18556:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18556:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18556:154:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;18556:154:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18556:154:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18556:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18556:154:0;;;;;;;;;;;;;;;;;;17734:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17734:91:0;;;;;;;;;;;;;;;;;;;;;;;32063:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32063:173:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32063:173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23433:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23433:198:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23433:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18194:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18194:86:0;;;;;;32684:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32684:179:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32684:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19331:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19331:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19331:118:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;19331:118:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19331:118:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19331:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19331:118:0;;;;;;;;;;;;;;;;;;31886:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31886:171:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31886:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19858:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19858:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19858:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7478:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7478:118:0;;;;;;24284:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24284:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24284:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5752:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5752:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5752:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32421:257;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32421:257:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32421:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34034:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34034:179:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34034:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18021:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18021:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18021:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33480:186;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33480:186:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33480:186:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31708:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31708:172:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31708:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6731:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6731:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20611:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20611:181:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20611:181:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5969:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5969:77:0;;;;;;20227:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20227:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20227:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33290:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33290:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33290:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5869:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5869:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5869:92:0;;;;;;;;;;;;;;;;;;;;;;7267:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7267:116:0;;;;;;32869:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32869:225:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32869:225:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17487:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17487:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17487:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8083:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8083:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8083:92:0;;;;;;;;;;;;;;;;;;;;;;8183:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8183:77:0;;;;;;22283:231;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22283:231:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22283:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7966:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7966:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7966:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32242:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32242:173:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32242:173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25137:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25137:214:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;25137:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;25137:214:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25137:214:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;25137:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;25137:214:0;;;;;;;;;;;;;;;;;;26494:646;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26494:646:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;26494:646:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;26494:646:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26494:646:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26494:646:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;26494:646:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;26494:646:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26494:646:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26494:646:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;26494:646:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;26494:646:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26494:646:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26494:646:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;26494:646:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;26494:646:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26494:646:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26494:646:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;26494:646:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;26494:646:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26494:646:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26494:646:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;26494:646:0;;;;;;;;;;;;;;;;;;18917:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18917:291:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18917:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18917:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19573:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19573:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19573:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33672:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33672:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33672:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31543:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31543:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31543:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22843:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22843:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22843:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33853:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33853:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33853:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34219:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34219:179:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34219:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33100:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33100:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33100:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:135;1327:4;1351:20;:33;1372:11;1351:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1344:40;;1257:135;;;:::o;17288:85::-;17327:13;17360:5;17353:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17288:85;:::o;21829:154::-;21888:7;21916:16;21924:7;21916;:16::i;:::-;21908:25;;;;;;;;21951:15;:24;21967:7;21951:24;;;;;;;;;;;;;;;;;;;;;21944:31;;21829:154;;;:::o;25744:196::-;7917:20;7926:10;7917:8;:20::i;:::-;7909:29;;;;;;;;25869:35;25875:2;25879:7;25888:3;25893:10;25869:5;:35::i;:::-;25931:1;25915:12;;:17;;;;;;;;;;;25744:196;;;;:::o;21223:313::-;6968:7;;;;;;;;;;;6967:8;6959:17;;;;;;;;21301:13;21317:16;21325:7;21317;:16::i;:::-;21301:32;;21358:5;21352:11;;:2;:11;;;;21344:20;;;;;;;;21397:5;21383:19;;:10;:19;;;:58;;;;21406:35;21423:5;21430:10;21406:16;:35::i;:::-;21383:58;21375:67;;;;;;;;21482:2;21455:15;:24;21471:7;21455:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21520:7;21516:2;21500:28;;21509:5;21500:28;;;;;;;;;;;;6987:1;21223:313;;:::o;18556:154::-;7917:20;7926:10;7917:8;:20::i;:::-;7909:29;;;;;;;;18651:13;;;;;;;;;;;18650:14;18642:23;;;;;;;;18676:26;18689:7;18698:3;18676:12;:26::i;:::-;18556:154;;:::o;17734:91::-;17778:7;17805:12;;17798:19;;17734:91;:::o;32063:173::-;32122:7;32138:18;32159:24;32175:7;32159:15;:24::i;:::-;32138:45;;32228:2;32212:10;32198;:25;32197:33;52:12:-1;49:1;45:20;29:14;25:41;7:59;;32197:33:0;32190:40;;;32063:173;;;:::o;23433:198::-;6968:7;;;;;;;;;;;6967:8;6959:17;;;;;;;;23538:39;23557:10;23569:7;23538:18;:39::i;:::-;23530:48;;;;;;;;23591:32;23605:4;23611:2;23615:7;23591:13;:32::i;:::-;23433:198;;;:::o;18194:86::-;7917:20;7926:10;7917:8;:20::i;:::-;7909:29;;;;;;;;18268:4;18252:13;;:20;;;;;;;;;;;;;;;;;;18194:86::o;32684:179::-;32747:7;32763:18;32784:24;32800:7;32784:15;:24::i;:::-;32763:45;;32855:2;32837:12;32823:10;:27;32822:35;52:12:-1;49:1;45:20;29:14;25:41;7:59;;32822:35:0;32815:42;;;32684:179;;;:::o;19331:118::-;7917:20;7926:10;7917:8;:20::i;:::-;7909:29;;;;;;;;19429:12;19413:13;:28;;;;;;;;;;;;:::i;:::-;;19331:118;:::o;31886:171::-;31943:7;31959:18;31980:24;31996:7;31980:15;:24::i;:::-;31959:45;;32049:2;32033:10;32019;:25;32018:33;52:12:-1;49:1;45:20;29:14;25:41;7:59;;32018:33:0;32011:40;;;31886:171;;;:::o;19858:159::-;19921:7;19949:16;19957:7;19949;:16::i;:::-;19941:25;;;;;;;;19984:16;:25;20001:7;19984:25;;;;;;;;;;;;19977:32;;19858:159;;;:::o;7478:118::-;5703:20;5712:10;5703:8;:20::i;:::-;5695:29;;;;;;;;7147:7;;;;;;;;;;;7139:16;;;;;;;;7547:5;7537:7;;:15;;;;;;;;;;;;;;;;;;7568:20;7577:10;7568:20;;;;;;;;;;;;;;;;;;;;;;7478:118::o;24284:134::-;24371:39;24388:4;24394:2;24398:7;24371:39;;;;;;;;;;;;;:16;:39::i;:::-;24284:134;;;:::o;5752:109::-;5808:4;5832:21;5845:7;5832:8;:12;;:21;;;;:::i;:::-;5825:28;;5752:109;;;:::o;32421:257::-;32479:7;32580:18;32601:24;32617:7;32601:15;:24::i;:::-;32580:45;;32670:2;32654:10;32640;:25;32639:33;52:12:-1;49:1;45:20;29:14;25:41;7:59;;32639:33:0;32632:40;;;32421:257;;;:::o;34034:179::-;34095:7;34111:18;34132:24;34148:7;34132:15;:24::i;:::-;34111:45;;34204:3;34185:13;34171:10;:28;34170:37;52:12:-1;49:1;45:20;29:14;25:41;7:59;;34170:37:0;34163:44;;;34034:179;;;:::o;18021:104::-;18077:4;18101:16;18109:7;18101;:16::i;:::-;18094:23;;18021:104;;;:::o;33480:186::-;33548:7;33564:18;33585:24;33601:7;33585:15;:24::i;:::-;33564:45;;33657:3;33638:13;33624:10;:28;33623:37;52:12:-1;49:1;45:20;29:14;25:41;7:59;;33623:37:0;33616:44;;;33480:186;;;:::o;31708:172::-;31768:7;31784:18;31805:24;31821:7;31805:15;:24::i;:::-;31784:45;;31873:1;31858:9;31844:10;:24;31843:31;52:12:-1;49:1;45:20;29:14;25:41;7:59;;31843:31:0;31836:38;;;31708:172;;;:::o;6731:78::-;6770:4;6794:7;;;;;;;;;;;6787:14;;6731:78;:::o;20611:181::-;20666:7;20686:13;20702:11;:20;20714:7;20702:20;;;;;;;;;;;;;;;;;;;;;20686:36;;20758:1;20741:19;;:5;:19;;;;20733:28;;;;;;;;20779:5;20772:12;;;20611:181;;;:::o;5969:77::-;6013:25;6027:10;6013:13;:25::i;:::-;5969:77::o;20227:153::-;20282:7;20327:1;20310:19;;:5;:19;;;;20302:28;;;;;;;;20348:17;:24;20366:5;20348:24;;;;;;;;;;;;;;;;20341:31;;20227:153;;;:::o;33290:184::-;33358:7;33374:18;33395:24;33411:7;33395:15;:24::i;:::-;33374:45;;33466:2;33448:12;33434:10;:27;33433:35;52:12:-1;49:1;45:20;29:14;25:41;7:59;;33433:35:0;33426:42;;;33290:184;;;:::o;5869:92::-;5703:20;5712:10;5703:8;:20::i;:::-;5695:29;;;;;;;;5934:19;5945:7;5934:10;:19::i;:::-;5869:92;:::o;7267:116::-;5703:20;5712:10;5703:8;:20::i;:::-;5695:29;;;;;;;;6968:7;;;;;;;;;;;6967:8;6959:17;;;;;;;;7337:4;7327:7;;:14;;;;;;;;;;;;;;;;;;7357:18;7364:10;7357:18;;;;;;;;;;;;;;;;;;;;;;7267:116::o;32869:225::-;32934:7;32994:18;33015:24;33031:7;33015:15;:24::i;:::-;32994:45;;33086:2;33068:12;33054:10;:27;33053:35;52:12:-1;49:1;45:20;29:14;25:41;7:59;;33053:35:0;33046:42;;;32869:225;;;:::o;17487:89::-;17528:13;17561:7;17554:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17487:89;:::o;8083:92::-;7917:20;7926:10;7917:8;:20::i;:::-;7909:29;;;;;;;;8148:19;8159:7;8148:10;:19::i;:::-;8083:92;:::o;8183:77::-;8227:25;8241:10;8227:13;:25::i;:::-;8183:77::o;22283:231::-;6968:7;;;;;;;;;;;6967:8;6959:17;;;;;;;;22383:10;22377:16;;:2;:16;;;;22369:25;;;;;;;;22442:8;22405:18;:30;22424:10;22405:30;;;;;;;;;;;;;;;:34;22436:2;22405:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;22493:2;22466:40;;22481:10;22466:40;;;22497:8;22466:40;;;;;;;;;;;;;;;;;;;;;;22283:231;;:::o;7966:109::-;8022:4;8046:21;8059:7;8046:8;:12;;:21;;;;:::i;:::-;8039:28;;7966:109;;;:::o;32242:173::-;32301:7;32317:18;32338:24;32354:7;32338:15;:24::i;:::-;32317:45;;32407:2;32391:10;32377;:25;32376:33;52:12:-1;49:1;45:20;29:14;25:41;7:59;;32376:33:0;32369:40;;;32242:173;;;:::o;25137:214::-;25244:31;25257:4;25263:2;25267:7;25244:12;:31::i;:::-;25294:48;25317:4;25323:2;25327:7;25336:5;25294:22;:48::i;:::-;25286:57;;;;;;;;25137:214;;;;:::o;26494:646::-;7917:20;7926:10;7917:8;:20::i;:::-;7909:29;;;;;;;;26758:2;:9;26739:8;:15;:28;:86;;;;;26807:11;:18;26788:8;:15;:37;26739:86;:143;;;;;26865:10;:17;26846:8;:15;:36;26739:143;26731:152;;;;;;;;26894:19;26916:37;26930:9;26941:11;26916:13;:37::i;:::-;26894:59;;26969:6;26978:1;26969:10;;26964:127;26985:8;:15;26981:1;:19;26964:127;;;27022:57;27028:2;27031:1;27028:5;;;;;;;;;;;;;;;;;;27035:8;27044:1;27035:11;;;;;;;;;;;;;;;;;;27055:4;27060:1;27055:7;;;;;;;;;;;;;;;;;;27065:10;27076:1;27065:13;;;;;;;;;;;;;;;;;;27022:5;:57::i;:::-;27002:3;;;;;;;26964:127;;;;27117:8;:15;27101:12;;:31;;;;;;;;;;;7949:1;26494:646;;;;;:::o;18917:291::-;18975:13;19009:16;19017:7;19009;:16::i;:::-;19001:25;;;;;;;;19079:1;19049:10;:19;19060:7;19049:19;;;;;;;;;;;19043:33;;;;;;;;;;;;;;;;:37;19039:82;;;19102:10;:19;19113:7;19102:19;;;;;;;;;;;19095:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19039:82;19141:59;19159:14;:12;:14::i;:::-;19174:25;19191:7;19174:16;:25::i;:::-;19141:17;:59::i;:::-;19134:66;;18917:291;;;;:::o;19573:99::-;19618:13;19651;19644:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19573:99;:::o;33672:175::-;33729:7;33745:18;33766:24;33782:7;33766:15;:24::i;:::-;33745:45;;33838:3;33819:13;33805:10;:28;33804:37;52:12:-1;49:1;45:20;29:14;25:41;7:59;;33804:37:0;33797:44;;;33672:175;;;:::o;31543:159::-;31600:7;31618:18;31639:24;31655:7;31639:15;:24::i;:::-;31618:45;;31692:4;31679:10;:17;31672:24;;;31543:159;;;:::o;22843:147::-;22923:4;22947:18;:25;22966:5;22947:25;;;;;;;;;;;;;;;:35;22973:8;22947:35;;;;;;;;;;;;;;;;;;;;;;;;;22940:42;;22843:147;;;;:::o;33853:175::-;33912:7;33928:18;33949:24;33965:7;33949:15;:24::i;:::-;33928:45;;34019:3;34002:11;33988:10;:26;33987:35;52:12:-1;49:1;45:20;29:14;25:41;7:59;;33987:35:0;33980:42;;;33853:175;;;:::o;34219:179::-;34280:7;34296:18;34317:24;34333:7;34317:15;:24::i;:::-;34296:45;;34389:3;34370:13;34356:10;:28;34355:37;52:12:-1;49:1;45:20;29:14;25:41;7:59;;34355:37:0;34348:44;;;34219:179;;;:::o;33100:184::-;33168:7;33184:18;33205:24;33221:7;33205:15;:24::i;:::-;33184:45;;33276:2;33258:12;33244:10;:27;33243:35;52:12:-1;49:1;45:20;29:14;25:41;7:59;;33243:35:0;33236:42;;;33100:184;;;:::o;27336:155::-;27393:4;27410:13;27426:11;:20;27438:7;27426:20;;;;;;;;;;;;;;;;;;;;;27410:36;;27481:1;27464:19;;:5;:19;;;;27457:26;;;27336:155;;;:::o;28499:411::-;28624:1;28610:16;;:2;:16;;;;28602:25;;;;;;;;28647:16;28655:7;28647;:16::i;:::-;28646:17;28638:26;;;;;;;;28700:2;28677:11;:20;28689:7;28677:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;28737:28;28763:1;28737:17;:21;28755:2;28737:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;28713:17;:21;28731:2;28713:21;;;;;;;;;;;;;;;:52;;;;28776:26;28789:7;28798:3;28776:12;:26::i;:::-;28841:10;28813:16;:25;28830:7;28813:25;;;;;;;;;;;:38;;;;28894:7;28890:2;28869:33;;28886:1;28869:33;;;;;;;;;;;;28499:411;;;;:::o;29155:185::-;29241:16;29249:7;29241;:16::i;:::-;29233:25;;;;;;;;29291:3;29269:10;:19;29280:7;29269:19;;;;;;;;;;;:25;;;;;;;;;;;;:::i;:::-;;29319:7;29310:22;29328:3;29310:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;29310:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29155:185;;:::o;27863:249::-;27948:4;27965:13;27981:16;27989:7;27981;:16::i;:::-;27965:32;;28027:5;28016:16;;:7;:16;;;:51;;;;28060:7;28036:31;;:20;28048:7;28036:11;:20::i;:::-;:31;;;28016:51;:87;;;;28071:32;28088:5;28095:7;28071:16;:32::i;:::-;28016:87;28008:96;;;27863:249;;;;:::o;29723:414::-;29837:4;29817:24;;:16;29825:7;29817;:16::i;:::-;:24;;;29809:33;;;;;;;;29875:1;29861:16;;:2;:16;;;;29853:25;;;;;;;;29891:23;29906:7;29891:14;:23::i;:::-;29953:30;29981:1;29953:17;:23;29971:4;29953:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;29927:17;:23;29945:4;29927:23;;;;;;;;;;;;;;;:56;;;;30018:28;30044:1;30018:17;:21;30036:2;30018:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;29994:17;:21;30012:2;29994:21;;;;;;;;;;;;;;;:52;;;;30082:2;30059:11;:20;30071:7;30059:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;30121:7;30117:2;30102:27;;30111:4;30102:27;;;;;;;;;;;;29723:414;;;:::o;5217:165::-;5289:4;5333:1;5314:21;;:7;:21;;;;5306:30;;;;;;;;5354:4;:11;;:20;5366:7;5354:20;;;;;;;;;;;;;;;;;;;;;;;;;5347:27;;5217:165;;;;:::o;6184:130::-;6244:24;6260:7;6244:8;:15;;:24;;;;:::i;:::-;6298:7;6284:22;;;;;;;;;;;;6184:130;:::o;6054:122::-;6111:21;6124:7;6111:8;:12;;:21;;;;:::i;:::-;6160:7;6148:20;;;;;;;;;;;;6054:122;:::o;8268:::-;8325:21;8338:7;8325:8;:12;;:21;;;;:::i;:::-;8374:7;8362:20;;;;;;;;;;;;8268:122;:::o;8398:130::-;8458:24;8474:7;8458:8;:15;;:24;;;;:::i;:::-;8512:7;8498:22;;;;;;;;;;;;8398:130;:::o;30671:356::-;30793:4;30820:15;:2;:13;;;:15::i;:::-;30819:16;30815:60;;;30859:4;30852:11;;;;30815:60;30887:13;30919:2;30903:36;;;30940:10;30952:4;30958:7;30967:5;30903:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;30903:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30903:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30903:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30903:70:0;;;;;;;;;;;;;;;;30887:86;;15612:10;31002:16;;30992:26;;;:6;:26;;;;30984:35;;;30671:356;;;;;;;:::o;13565:539::-;13648:18;13679:12;13694:1;13679:16;;13706:23;13744:8;:15;13732:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13706:54;;13777:6;13786:1;13777:10;;13773:296;13793:8;:15;13789:1;:19;13773:296;;;13830:22;13865:8;13874:1;13865:11;;;;;;;;;;;;;;;;;;13855:22;;;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;13855:22:0;;;;13830:47;;13898:6;13907:1;13898:10;;13894:86;13914:8;13923:1;13914:11;;;;;;;;;;;;;;;;;;13910:15;;:1;:15;13894:86;;;13964:5;13978:1;13970:7;:9;13964:16;;;;;;;;;;;;;;;;;;;;13949:9;13959:1;13949:12;;;;;;;;;;;;;;:31;;;;;;;;;;;13927:3;;;;;;;13894:86;;;;14011:9;13997:8;14006:1;13997:11;;;;;;;;;;;;;;;;;:23;;;;14046:8;14055:1;14046:11;;;;;;;;;;;;;;;;;;14035:22;;;;;;13773:296;13810:3;;;;;;;13773:296;;;;14088:8;14081:15;;;;13565:539;;;;:::o;13075:482::-;13125:27;13175:1;13169:2;:7;13165:50;;;13193:10;;;;;;;;;;;;;;;;;;;;;;13165:50;13225:6;13234:2;13225:11;;13247:8;13266:69;13278:1;13273;:6;;13266:69;;;13296:5;;;;;;;13321:2;13316:7;;;;;;;;;;;13266:69;;;13345:17;13375:3;13365:14;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;13365:14:0;;;;13345:34;;13390:6;13405:1;13399:3;:7;13390:16;;13417:103;13430:1;13424:2;:7;;13417:103;;;13481:2;13476;:7;;;;;;;;13471:2;:12;13460:25;;13448:4;13453:3;;;;;;;13448:9;;;;;;;;;;;;;;:37;;;;;;;;;;;13506:2;13500:8;;;;;;;;;;;13417:103;;;13544:4;13530:19;;;;;;13075:482;;;;:::o;12916:151::-;12996:14;13030:29;13040:2;13044;13030:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;:29::i;:::-;13023:36;;12916:151;;;;:::o;9988:150::-;10046:7;10066:9;10082:1;10078;:5;10066:17;;10107:1;10102;:6;;10094:15;;;;;;;;10129:1;10122:8;;;9988:150;;;;:::o;31194:175::-;31294:1;31258:38;;:15;:24;31274:7;31258:24;;;;;;;;;;;;;;;;;;;;;:38;;;;31254:108;;;31348:1;31313:15;:24;31329:7;31313:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;31254:108;31194:175;:::o;9752:150::-;9810:7;9843:1;9838;:6;;9830:15;;;;;;;;9856:9;9872:1;9868;:5;9856:17;;9893:1;9886:8;;;9752:150;;;;:::o;4934:189::-;5033:1;5014:21;;:7;:21;;;;5006:30;;;;;;;;5055:18;5059:4;5065:7;5055:3;:18::i;:::-;5047:27;;;;;;;;5110:5;5087:4;:11;;:20;5099:7;5087:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4934:189;;:::o;4669:186::-;4765:1;4746:21;;:7;:21;;;;4738:30;;;;;;;;4788:18;4792:4;4798:7;4788:3;:18::i;:::-;4787:19;4779:28;;;;;;;;4843:4;4820;:11;;:20;4832:7;4820:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4669:186;;:::o;10876:627::-;10936:4;10953:12;11460:7;11448:20;11440:28;;11494:1;11487:4;:8;11480:15;;;10876:627;;;:::o;11533:1000::-;11665:33;11711:16;11736:2;11711:28;;11750:16;11775:2;11750:28;;11789:16;11814:2;11789:28;;11828:16;11853:2;11828:28;;11867:16;11892:2;11867:28;;11906:19;11990:3;:10;11977:3;:10;11964:3;:10;11951:3;:10;11938:3;:10;:23;:36;:49;:62;11928:73;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;11928:73:0;;;;11906:95;;12012:6;12021:1;12012:10;;12033:6;12042:1;12033:10;;12063:1;12059:5;;12054:80;12070:3;:10;12066:1;:14;12054:80;;;12116:3;12120:1;12116:6;;;;;;;;;;;;;;;;;;;;12102;12109:3;;;;;;12102:11;;;;;;;;;;;;;;:20;;;;;;;;;;;12082:3;;;;;;;12054:80;;;12153:1;12149:5;;12144:80;12160:3;:10;12156:1;:14;12144:80;;;12206:3;12210:1;12206:6;;;;;;;;;;;;;;;;;;;;12192;12199:3;;;;;;12192:11;;;;;;;;;;;;;;:20;;;;;;;;;;;12172:3;;;;;;;12144:80;;;12243:1;12239:5;;12234:80;12250:3;:10;12246:1;:14;12234:80;;;12296:3;12300:1;12296:6;;;;;;;;;;;;;;;;;;;;12282;12289:3;;;;;;12282:11;;;;;;;;;;;;;;:20;;;;;;;;;;;12262:3;;;;;;;12234:80;;;12333:1;12329:5;;12324:80;12340:3;:10;12336:1;:14;12324:80;;;12386:3;12390:1;12386:6;;;;;;;;;;;;;;;;;;;;12372;12379:3;;;;;;12372:11;;;;;;;;;;;;;;:20;;;;;;;;;;;12352:3;;;;;;;12324:80;;;12423:1;12419:5;;12414:80;12430:3;:10;12426:1;:14;12414:80;;;12476:3;12480:1;12476:6;;;;;;;;;;;;;;;;;;;;12462;12469:3;;;;;;12462:11;;;;;;;;;;;;;;:20;;;;;;;;;;;12442:3;;;;;;;12414:80;;;12518:6;12504:21;;;;;;;;;;11533:1000;;;;;;;:::o;31376:3025::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://4daec22e8ac080c17cac5478ff62a5466d5397f8535b2e9ec0dee0768ecd9c39
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.