Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 30 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw To Cold... | 12382348 | 1203 days ago | IN | 0 ETH | 0.00430567 | ||||
Deposit | 12277642 | 1219 days ago | IN | 0.002 ETH | 0.00586232 | ||||
Deposit | 12220294 | 1228 days ago | IN | 0.1 ETH | 0.0016156 | ||||
Deposit | 12209395 | 1230 days ago | IN | 0.0065 ETH | 0.00191564 | ||||
Deposit | 12170224 | 1236 days ago | IN | 0.07 ETH | 0.00223876 | ||||
Deposit | 12166626 | 1237 days ago | IN | 0.005 ETH | 0.00235416 | ||||
Deposit | 12056275 | 1254 days ago | IN | 0.01 ETH | 0.00297732 | ||||
Deposit | 12048270 | 1255 days ago | IN | 0.001 ETH | 0.00313888 | ||||
Deposit | 12043203 | 1256 days ago | IN | 0.005 ETH | 0.00401592 | ||||
Deposit | 12027715 | 1258 days ago | IN | 0.01 ETH | 0.00318504 | ||||
Deposit | 12012554 | 1260 days ago | IN | 0.01 ETH | 0.0026542 | ||||
Deposit | 11995986 | 1263 days ago | IN | 0.005 ETH | 0.00193872 | ||||
Deposit | 11995986 | 1263 days ago | IN | 0.005 ETH | 0.00193872 | ||||
Deposit | 11980862 | 1265 days ago | IN | 0.1 ETH | 0.00226184 | ||||
Deposit | 11953214 | 1269 days ago | IN | 0.041 ETH | 0.00336968 | ||||
Deposit | 11949255 | 1270 days ago | IN | 0.003 ETH | 0.00170792 | ||||
Deposit | 11946502 | 1270 days ago | IN | 0.017 ETH | 0.00175408 | ||||
Deposit | 11940992 | 1271 days ago | IN | 0.01 ETH | 0.00256188 | ||||
Deposit | 11932227 | 1273 days ago | IN | 0.01 ETH | 0.0027696 | ||||
Deposit | 11833394 | 1288 days ago | IN | 0.01 ETH | 0.00212336 | ||||
Deposit | 11778584 | 1296 days ago | IN | 0.041 ETH | 0.0027696 | ||||
Deposit | 11672187 | 1313 days ago | IN | 0.05 ETH | 0.00087704 | ||||
Deposit | 11598583 | 1324 days ago | IN | 0.012 ETH | 0.00235416 | ||||
Deposit | 11581354 | 1327 days ago | IN | 0.01 ETH | 0.0015002 | ||||
Deposit | 10963253 | 1422 days ago | IN | 0.001 ETH | 0.00283884 |
Loading...
Loading
Contract Name:
Bank
Compiler Version
v0.4.26+commit.4563c3fc
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-21 */ pragma solidity ^0.4.23; pragma solidity ^0.4.23; pragma solidity ^0.4.23; pragma solidity ^0.4.23; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function setOwner(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @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() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } pragma solidity ^0.4.23; /// @author https://BlockChainArchitect.iocontract Bank is CutiePluginBase contract PluginInterface { /// @dev simply a boolean to indicate this is the contract we expect to be function isPluginInterface() public pure returns (bool); function onRemove() public; /// @dev Begins new feature. /// @param _cutieId - ID of token to auction, sender must be owner. /// @param _parameter - arbitrary parameter /// @param _seller - Old owner, if not the message sender function run( uint40 _cutieId, uint256 _parameter, address _seller ) public payable; /// @dev Begins new feature, approved and signed by COO. /// @param _cutieId - ID of token to auction, sender must be owner. /// @param _parameter - arbitrary parameter function runSigned( uint40 _cutieId, uint256 _parameter, address _owner ) external payable; function withdraw() external; } pragma solidity ^0.4.23; pragma solidity ^0.4.23; /// @title BlockchainCuties: Collectible and breedable cuties on the Ethereum blockchain. /// @author https://BlockChainArchitect.io /// @dev This is the BlockchainCuties configuration. It can be changed redeploying another version. interface ConfigInterface { function isConfig() external pure returns (bool); function getCooldownIndexFromGeneration(uint16 _generation, uint40 _cutieId) external view returns (uint16); function getCooldownEndTimeFromIndex(uint16 _cooldownIndex, uint40 _cutieId) external view returns (uint40); function getCooldownIndexFromGeneration(uint16 _generation) external view returns (uint16); function getCooldownEndTimeFromIndex(uint16 _cooldownIndex) external view returns (uint40); function getCooldownIndexCount() external view returns (uint256); function getBabyGenFromId(uint40 _momId, uint40 _dadId) external view returns (uint16); function getBabyGen(uint16 _momGen, uint16 _dadGen) external pure returns (uint16); function getTutorialBabyGen(uint16 _dadGen) external pure returns (uint16); function getBreedingFee(uint40 _momId, uint40 _dadId) external view returns (uint256); } contract CutieCoreInterface { function isCutieCore() pure public returns (bool); ConfigInterface public config; function transferFrom(address _from, address _to, uint256 _cutieId) external; function transfer(address _to, uint256 _cutieId) external; function ownerOf(uint256 _cutieId) external view returns (address owner); function getCutie(uint40 _id) external view returns ( uint256 genes, uint40 birthTime, uint40 cooldownEndTime, uint40 momId, uint40 dadId, uint16 cooldownIndex, uint16 generation ); function getGenes(uint40 _id) public view returns ( uint256 genes ); function getCooldownEndTime(uint40 _id) public view returns ( uint40 cooldownEndTime ); function getCooldownIndex(uint40 _id) public view returns ( uint16 cooldownIndex ); function getGeneration(uint40 _id) public view returns ( uint16 generation ); function getOptional(uint40 _id) public view returns ( uint64 optional ); function changeGenes( uint40 _cutieId, uint256 _genes) public; function changeCooldownEndTime( uint40 _cutieId, uint40 _cooldownEndTime) public; function changeCooldownIndex( uint40 _cutieId, uint16 _cooldownIndex) public; function changeOptional( uint40 _cutieId, uint64 _optional) public; function changeGeneration( uint40 _cutieId, uint16 _generation) public; function createSaleAuction( uint40 _cutieId, uint128 _startPrice, uint128 _endPrice, uint40 _duration ) public; function getApproved(uint256 _tokenId) external returns (address); function totalSupply() view external returns (uint256); function createPromoCutie(uint256 _genes, address _owner) external; function checkOwnerAndApprove(address _claimant, uint40 _cutieId, address _pluginsContract) external view; function breedWith(uint40 _momId, uint40 _dadId) public payable returns (uint40); function getBreedingFee(uint40 _momId, uint40 _dadId) public view returns (uint256); function restoreCutieToAddress(uint40 _cutieId, address _recipient) external; function createGen0Auction(uint256 _genes, uint128 startPrice, uint128 endPrice, uint40 duration) external; function createGen0AuctionWithTokens(uint256 _genes, uint128 startPrice, uint128 endPrice, uint40 duration, address[] allowedTokens) external; function createPromoCutieWithGeneration(uint256 _genes, address _owner, uint16 _generation) external; function createPromoCutieBulk(uint256[] _genes, address _owner, uint16 _generation) external; } pragma solidity ^0.4.23; pragma solidity ^0.4.23; pragma solidity ^0.4.23; // ---------------------------------------------------------------------------- contract ERC20 { // ERC Token Standard #223 Interface // https://github.com/ethereum/EIPs/issues/223 string public symbol; string public name; uint8 public decimals; function transfer(address _to, uint _value, bytes _data) external returns (bool success); // approveAndCall function approveAndCall(address spender, uint tokens, bytes data) external returns (bool success); // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); // bulk operations function transferBulk(address[] to, uint[] tokens) public; function approveBulk(address[] spender, uint[] tokens) public; } pragma solidity ^0.4.23; /// @title ERC-721 Non-Fungible Token Standard /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md /// Note: the ERC-165 identifier for this interface is 0x6466353c interface ERC721 /*is ERC165*/ { /// @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. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); /// @dev This emits when ownership of any NFT changes by any mechanism. /// This event emits when NFTs are created (`from` == 0) and destroyed /// (`to` == 0). Exception: during contract creation, any number of NFTs /// may be created and assigned without emitting Transfer. At the time of /// any transfer, the approved address for that NFT (if any) is reset to none. event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. /// When a Transfer event emits, this also indicates that the approved /// address for that NFT (if any) is reset to none. event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); /// @dev This emits when an operator is enabled or disabled for an owner. /// The operator can manage all NFTs of the owner. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /// @notice Count all NFTs assigned to an owner /// @dev NFTs assigned to the zero address are considered invalid, and this /// function throws for queries about the zero address. /// @param _owner An address for whom to query the balance /// @return The number of NFTs owned by `_owner`, possibly zero function balanceOf(address _owner) external view returns (uint256); /// @notice Find the owner of an NFT /// @param _tokenId The identifier for an NFT /// @dev NFTs assigned to zero address are considered invalid, and queries /// about them do throw. /// @return The address of the owner of the NFT function ownerOf(uint256 _tokenId) external view returns (address); /// @notice Transfers the ownership of an NFT from one address to another address /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. When transfer is complete, this function /// checks if `_to` is a smart contract (code size > 0). If so, it calls /// `onERC721Received` on `_to` and throws if the return value is not /// `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer /// @param data Additional data with no specified format, sent in call to `_to` function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external; /// @notice Transfers the ownership of an NFT from one address to another address /// @dev This works identically to the other function with an extra data parameter, /// except this function just sets data to "" /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function safeTransferFrom(address _from, address _to, uint256 _tokenId) external; /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE /// THEY MAY BE PERMANENTLY LOST /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function transferFrom(address _from, address _to, uint256 _tokenId) external; /// @notice Set or reaffirm the approved address for an NFT /// @dev The zero address indicates there is no approved address. /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized /// operator of the current owner. /// @param _approved The new approved NFT controller /// @param _tokenId The NFT to approve function approve(address _approved, uint256 _tokenId) external; /// @notice Enable or disable approval for a third party ("operator") to manage /// all your asset. /// @dev Emits the ApprovalForAll event /// @param _operator Address to add to the set of authorized operators. /// @param _approved True if the operators is approved, false to revoke approval function setApprovalForAll(address _operator, bool _approved) external; /// @notice Get the approved address for a single NFT /// @dev Throws if `_tokenId` is not a valid NFT /// @param _tokenId The NFT to find the approved address for /// @return The approved address for this NFT, or the zero address if there is none function getApproved(uint256 _tokenId) external view returns (address); /// @notice Query if an address is an authorized operator for another address /// @param _owner The address that owns the NFTs /// @param _operator The address that acts on behalf of the owner /// @return True if `_operator` is an approved operator for `_owner`, false otherwise function isApprovedForAll(address _owner, address _operator) external view returns (bool); /// @notice A descriptive name for a collection of NFTs in this contract function name() external pure returns (string _name); /// @notice An abbreviated name for NFTs in this contract function symbol() external pure returns (string _symbol); /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC /// 3986. The URI may point to a JSON file that conforms to the "ERC721 /// Metadata JSON Schema". function tokenURI(uint256 _tokenId) external view returns (string); /// @notice Count NFTs tracked by this contract /// @return A count of valid NFTs tracked by this contract, where each one of /// them has an assigned and queryable owner not equal to the zero address function totalSupply() external view returns (uint256); /// @notice Enumerate valid NFTs /// @dev Throws if `_index` >= `totalSupply()`. /// @param _index A counter less than `totalSupply()` /// @return The token identifier for the `_index`th NFT, /// (sort order not specified) function tokenByIndex(uint256 _index) external view returns (uint256); /// @notice Enumerate NFTs assigned to an owner /// @dev Throws if `_index` >= `balanceOf(_owner)` or if /// `_owner` is the zero address, representing invalid NFTs. /// @param _owner An address where we are interested in NFTs owned by them /// @param _index A counter less than `balanceOf(_owner)` /// @return The token identifier for the `_index`th NFT assigned to `_owner`, /// (sort order not specified) function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); /// @notice Transfers a Cutie to another address. When transferring to a smart /// contract, ensure that it is aware of ERC-721 (or /// BlockchainCuties specifically), otherwise the Cutie may be lost forever. /// @param _to The address of the recipient, can be a user or contract. /// @param _cutieId The ID of the Cutie to transfer. function transfer(address _to, uint256 _cutieId) external; } pragma solidity ^0.4.23; pragma solidity ^0.4.23; /** * @title ERC165 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md */ interface ERC165 { /** * @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 ERC-1155 Multi Token Standard @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md Note: The ERC-165 identifier for this interface is 0xd9b67a26. */ interface IERC1155 /* is ERC165 */ { /** @dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). The `_operator` argument MUST be msg.sender. The `_from` argument MUST be the address of the holder whose balance is decreased. The `_to` argument MUST be the address of the recipient whose balance is increased. The `_id` argument MUST be the token type being transferred. The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). */ event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value); /** @dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). The `_operator` argument MUST be msg.sender. The `_from` argument MUST be the address of the holder whose balance is decreased. The `_to` argument MUST be the address of the recipient whose balance is increased. The `_ids` argument MUST be the list of tokens being transferred. The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). */ event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values); /** @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absense of an event assumes disabled). */ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /** @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. The URI MUST point a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". The URI value allows for ID substitution by clients. If the string {id} exists in any URI, clients MUST replace this with the actual token ID in hexadecimal form. */ event URI(string _value, uint256 indexed _id); /** @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). MUST revert if `_to` is the zero address. MUST revert if balance of holder for token `_id` is lower than the `_value` sent. MUST revert on any other error. MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). @param _from Source address @param _to Target address @param _id ID of the token type @param _value Transfer amount @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` */ function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes _data) external; /** @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). MUST revert if `_to` is the zero address. MUST revert if length of `_ids` is not the same as length of `_values`. MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. MUST revert on any other error. MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). @param _from Source address @param _to Target address @param _ids IDs of each token type (order and length must match _values array) @param _values Transfer amounts per token type (order and length must match _ids array) @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` */ function safeBatchTransferFrom(address _from, address _to, uint256[] _ids, uint256[] _values, bytes _data) external; /** @notice Get the balance of an account's Tokens. @param _owner The address of the token holder @param _id ID of the Token @return The _owner's balance of the Token type requested */ function balanceOf(address _owner, uint256 _id) external view returns (uint256); /** @notice Get the balance of multiple account/token pairs @param _owners The addresses of the token holders @param _ids ID of the Tokens @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ function balanceOfBatch(address[] _owners, uint256[] _ids) external view returns (uint256[] memory); /** @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. @dev MUST emit the ApprovalForAll event on success. @param _operator Address to add to the set of authorized operators @param _approved True if the operator is approved, false to revoke approval */ function setApprovalForAll(address _operator, bool _approved) external; /** @notice Queries the approval status of an operator for a given owner. @param _owner The owner of the Tokens @param _operator Address of authorized operator @return True if the operator is approved, false if not */ function isApprovedForAll(address _owner, address _operator) external view returns (bool); } contract Operators { mapping (address=>bool) ownerAddress; mapping (address=>bool) operatorAddress; constructor() public { ownerAddress[msg.sender] = true; } modifier onlyOwner() { require(ownerAddress[msg.sender], "Access denied"); _; } function isOwner(address _addr) public view returns (bool) { return ownerAddress[_addr]; } function addOwner(address _newOwner) external onlyOwner { require(_newOwner != address(0), "New owner is empty"); ownerAddress[_newOwner] = true; } function setOwner(address _newOwner) external onlyOwner { require(_newOwner != address(0), "New owner is empty"); ownerAddress[_newOwner] = true; delete(ownerAddress[msg.sender]); } function removeOwner(address _oldOwner) external onlyOwner { delete(ownerAddress[_oldOwner]); } modifier onlyOperator() { require(isOperator(msg.sender), "Access denied"); _; } function isOperator(address _addr) public view returns (bool) { return operatorAddress[_addr] || ownerAddress[_addr]; } function addOperator(address _newOperator) external onlyOwner { require(_newOperator != address(0), "New operator is empty"); operatorAddress[_newOperator] = true; } function removeOperator(address _oldOperator) external onlyOwner { delete(operatorAddress[_oldOperator]); } function withdrawERC20(ERC20 _tokenContract) external onlyOwner { uint256 balance = _tokenContract.balanceOf(address(this)); _tokenContract.transfer(msg.sender, balance); } function approveERC721(ERC721 _tokenContract) external onlyOwner { _tokenContract.setApprovalForAll(msg.sender, true); } function approveERC1155(IERC1155 _tokenContract) external onlyOwner { _tokenContract.setApprovalForAll(msg.sender, true); } function withdrawEth() external onlyOwner { if (address(this).balance > 0) { msg.sender.transfer(address(this).balance); } } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract PausableOperators is Operators { event Pause(); event Unpause(); bool public paused = false; /** * @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() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } /// @author https://BlockChainArchitect.iocontract Bank is CutiePluginBase contract CutiePluginBase is PluginInterface, PausableOperators { function isPluginInterface() public pure returns (bool) { return true; } // Reference to contract tracking NFT ownership CutieCoreInterface public coreContract; address public pluginsContract; // @dev Throws if called by any account other than the owner. modifier onlyCore() { require(msg.sender == address(coreContract)); _; } modifier onlyPlugins() { require(msg.sender == pluginsContract); _; } /// @dev Constructor creates a reference to the NFT ownership contract /// and verifies the owner cut is in the valid range. /// @param _coreAddress - address of a deployed contract implementing /// the Nonfungible Interface. function setup(address _coreAddress, address _pluginsContract) public onlyOwner { CutieCoreInterface candidateContract = CutieCoreInterface(_coreAddress); require(candidateContract.isCutieCore()); coreContract = candidateContract; pluginsContract = _pluginsContract; } /// @dev Returns true if the claimant owns the token. /// @param _claimant - Address claiming to own the token. /// @param _cutieId - ID of token whose ownership to verify. function _isOwner(address _claimant, uint40 _cutieId) internal view returns (bool) { return (coreContract.ownerOf(_cutieId) == _claimant); } /// @dev Escrows the NFT, assigning ownership to this contract. /// Throws if the escrow fails. /// @param _owner - Current owner address of token to escrow. /// @param _cutieId - ID of token whose approval to verify. function _escrow(address _owner, uint40 _cutieId) internal { // it will throw if transfer fails coreContract.transferFrom(_owner, this, _cutieId); } /// @dev Transfers an NFT owned by this contract to another address. /// Returns true if the transfer succeeds. /// @param _receiver - Address to transfer NFT to. /// @param _cutieId - ID of token to transfer. function _transfer(address _receiver, uint40 _cutieId) internal { // it will throw if transfer fails coreContract.transfer(_receiver, _cutieId); } function withdraw() external { require( isOwner(msg.sender) || msg.sender == address(coreContract) || msg.sender == pluginsContract ); _withdraw(); } function _withdraw() internal { if (address(this).balance > 0) { address(coreContract).transfer(address(this).balance); } } function onRemove() public onlyPlugins { _withdraw(); } function run(uint40, uint256, address) public payable onlyCore { revert(); } function runSigned(uint40, uint256, address) external payable onlyCore { revert(); } } pragma solidity ^0.4.23; contract CuteCoinInterface is ERC20 { function mint(address target, uint256 mintedAmount) public; function mintBulk(address[] target, uint256[] mintedAmount) external; function burn(uint256 amount) external; } /// @dev Transforms blockchain currency into offchain and vice versa /// @author https://BlockChainArchitect.io contract Bank is CutiePluginBase contract Bank is CutiePluginBase { uint public limitWei; uint public limitSeconds = 24 hours; int public coldStorageValue = 0; struct WithdrawHistory { uint time; uint value; } mapping (address=>WithdrawHistory[]) withdrawals; event Deposit(address sender, uint value); event Withdraw(address beneficiary, uint value); event ColdStorage(int delta); function setLimits(uint _limitWei, uint _limitSeconds) external onlyOwner { limitWei = _limitWei; limitSeconds = _limitSeconds; } function deposit() external payable { emit Deposit(msg.sender, msg.value); } function depositOperator(address payer) external payable onlyOperator { emit Deposit(payer, msg.value); } function run(uint40, uint256, address) public payable onlyPlugins { revert(); } function getAllowedByLimit(address addr) public view returns (uint allowed) { if (isOperator(addr)) { return 1000*limitWei; } WithdrawHistory[] storage w = withdrawals[addr]; uint startTime = now - limitSeconds; uint total = 0; for (uint i = 0; i < w.length; i++) { if (w[i].time > startTime) { total += w[i].value; } } if (total < limitWei) { return limitWei - total; } else { return 0; } } function purge(address addr) internal { WithdrawHistory[] storage w = withdrawals[addr]; uint startTime = now - limitSeconds; for (uint i = 0; i < w.length;) { if (w[i].time <= startTime) { w[i] = w[w.length - 1]; w.length--; } else { i++; } } } function addWithdrawHistory(address addr, uint value) internal { withdrawals[addr].push(WithdrawHistory(now, value)); } function runSigned(uint40, uint256 _parameter, address addr) external payable onlyPlugins { // first 160 bits - beneficiary address - not working on TRON. //address beneficiary = address(_parameter % 0x0010000000000000000000000000000000000000000); // next 96 bits - value (shift right by 160 bits) uint96 amount = uint96(_parameter/0x0010000000000000000000000000000000000000000); // take first 160 bits and use it as seller address require(address(_parameter) == addr, "Wrong caller"); purge(addr); require(getAllowedByLimit(address(_parameter)) >= amount, "Daily limit"); addWithdrawHistory(addr, amount); emit Withdraw(addr, amount); addr.transfer(amount); } function _withdraw() internal { // override - do nothing } function withdrawEth() external onlyOwner { revert(); } function withdrawToColdStorage(int value, address storageAddress) external onlyOwner { require(value > 0, "Can't withdraw negative value"); require(isOperator(storageAddress), "cold storage address is not operator"); coldStorageValue += value; storageAddress.transfer(uint(value)); emit ColdStorage(value); } function depositFromColdStorage() external payable onlyOperator { coldStorageValue -= int(msg.value); emit ColdStorage(-int(msg.value)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"limitWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"onRemove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldOwner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_coreAddress","type":"address"},{"name":"_pluginsContract","type":"address"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"approveERC721","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"payer","type":"address"}],"name":"depositOperator","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"limitSeconds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositFromColdStorage","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"coldStorageValue","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPluginInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint40"},{"name":"_parameter","type":"uint256"},{"name":"addr","type":"address"}],"name":"runSigned","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"pluginsContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint40"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"run","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldOperator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_limitWei","type":"uint256"},{"name":"_limitSeconds","type":"uint256"}],"name":"setLimits","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"approveERC1155","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"int256"},{"name":"storageAddress","type":"address"}],"name":"withdrawToColdStorage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coreContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getAllowedByLimit","outputs":[{"name":"allowed","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"withdrawERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"delta","type":"int256"}],"name":"ColdStorage","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]
Contract Creation Code
608060409081526002805460ff1990811690915562015180600555600060068190553381526020819052919091208054909116600117905561165e806100466000396000f30060806040526004361061018a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166308497077811461018f57806311952369146101b657806313af4035146101cd578063173825d9146101ee5780632d34ba791461020f5780632f54bf6e146102365780633ccfd60b1461026b5780633f4ba83a1461028057806346195c12146102955780635c975abb146102b65780636d70f7ae146102cb5780637065cb48146102ec5780637d6976251461030d57806380255866146103215780638456cb59146103365780638634dcc61461034b5780638a6577271461035357806394a89233146103685780639652713e1461037d578063976ef75b1461039e5780639870d7fe146103cf578063a055d455146103f0578063a0ef91df14610411578063ac8a584a14610426578063c4590d3f14610447578063c6b72a1f14610295578063d0e30db014610462578063ddf02b851461046a578063e80db5db1461048e578063eb4a9670146104a3578063f4f3b200146104c4575b600080fd5b34801561019b57600080fd5b506101a46104e5565b60408051918252519081900360200190f35b3480156101c257600080fd5b506101cb6104eb565b005b3480156101d957600080fd5b506101cb600160a060020a0360043516610508565b3480156101fa57600080fd5b506101cb600160a060020a03600435166105f3565b34801561021b57600080fd5b506101cb600160a060020a036004358116906024351661066b565b34801561024257600080fd5b50610257600160a060020a03600435166107a9565b604080519115158252519081900360200190f35b34801561027757600080fd5b506101cb6107c7565b34801561028c57600080fd5b506101cb61080a565b3480156102a157600080fd5b506101cb600160a060020a03600435166108a7565b3480156102c257600080fd5b50610257610980565b3480156102d757600080fd5b50610257600160a060020a0360043516610989565b3480156102f857600080fd5b506101cb600160a060020a03600435166109ce565b6101cb600160a060020a0360043516610aa9565b34801561032d57600080fd5b506101a4610b3c565b34801561034257600080fd5b506101cb610b42565b6101cb610be1565b34801561035f57600080fd5b506101a4610c73565b34801561037457600080fd5b50610257610c79565b6101cb64ffffffffff60043516602435600160a060020a0360443516610c7f565b3480156103aa57600080fd5b506103b3610e38565b60408051600160a060020a039092168252519081900360200190f35b3480156103db57600080fd5b506101cb600160a060020a0360043516610e47565b6101cb64ffffffffff60043516602435600160a060020a0360443516610f25565b34801561041d57600080fd5b506101cb610f3c565b34801561043257600080fd5b506101cb600160a060020a0360043516610f93565b34801561045357600080fd5b506101cb60043560243561100b565b6101cb61106d565b34801561047657600080fd5b506101cb600435600160a060020a03602435166110a9565b34801561049a57600080fd5b506103b3611252565b3480156104af57600080fd5b506101a4600160a060020a0360043516611266565b3480156104d057600080fd5b506101cb600160a060020a0360043516611331565b60045481565b600354600160a060020a0316331461050257600080fd5b6105065b565b3360009081526020819052604090205460ff16151561055f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a03811615156105bf576040805160e560020a62461bcd02815260206004820152601260248201527f4e6577206f776e657220697320656d7074790000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0316600090815260208190526040808220805460ff19908116600117909155338352912080549091169055565b3360009081526020819052604090205460ff16151561064a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a03166000908152602081905260409020805460ff19169055565b3360009081526020819052604081205460ff1615156106c2576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b82905080600160a060020a0316634d6a813a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561071c57600080fd5b505af1158015610730573d6000803e3d6000fd5b505050506040513d602081101561074657600080fd5b5051151561075357600080fd5b6002805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03938416021790556003805473ffffffffffffffffffffffffffffffffffffffff19169290911691909117905550565b600160a060020a031660009081526020819052604090205460ff1690565b6107d0336107a9565b806107ea57506002546101009004600160a060020a031633145b806107ff5750600354600160a060020a031633145b151561050257600080fd5b3360009081526020819052604090205460ff161515610861576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60025460ff16151561087257600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3360009081526020819052604090205460ff1615156108fe576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b604080517fa22cb465000000000000000000000000000000000000000000000000000000008152336004820152600160248201529051600160a060020a0383169163a22cb46591604480830192600092919082900301818387803b15801561096557600080fd5b505af1158015610979573d6000803e3d6000fd5b5050505050565b60025460ff1681565b600160a060020a03811660009081526001602052604081205460ff16806109c85750600160a060020a03821660009081526020819052604090205460ff165b92915050565b3360009081526020819052604090205460ff161515610a25576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a0381161515610a85576040805160e560020a62461bcd02815260206004820152601260248201527f4e6577206f776e657220697320656d7074790000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03166000908152602081905260409020805460ff19166001179055565b610ab233610989565b1515610af6576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60408051600160a060020a038316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a150565b60055481565b3360009081526020819052604090205460ff161515610b99576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60025460ff1615610ba957600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b610bea33610989565b1515610c2e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600680543490819003909155604080516000929092038252517fdb20c60a6579d57993b77709f23c4392044180df95d2e3a8d95c2f12ff1060279181900360200190a1565b60065481565b60015b90565b600354600090600160a060020a03163314610c9957600080fd5b50740100000000000000000000000000000000000000008204600160a060020a0382811690841614610d15576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672063616c6c65720000000000000000000000000000000000000000604482015290519081900360640190fd5b610d1e826114b1565b806bffffffffffffffffffffffff16610d3684611266565b1015610d8c576040805160e560020a62461bcd02815260206004820152600b60248201527f4461696c79206c696d6974000000000000000000000000000000000000000000604482015290519081900360640190fd5b610da482826bffffffffffffffffffffffff1661156e565b60408051600160a060020a03841681526bffffffffffffffffffffffff8316602082015281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a1604051600160a060020a038316906bffffffffffffffffffffffff831680156108fc02916000818181858888f19350505050158015610979573d6000803e3d6000fd5b600354600160a060020a031681565b3360009081526020819052604090205460ff161515610e9e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a0381161515610efe576040805160e560020a62461bcd02815260206004820152601560248201527f4e6577206f70657261746f7220697320656d7074790000000000000000000000604482015290519081900360640190fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600354600160a060020a0316331461018a57600080fd5b3360009081526020819052604090205460ff16151561018a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b3360009081526020819052604090205460ff161515610fea576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b3360009081526020819052604090205460ff161515611062576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600491909155600555565b6040805133815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a1565b3360009081526020819052604090205460ff161515611100576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60008213611158576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e2774207769746864726177206e656761746976652076616c7565000000604482015290519081900360640190fd5b61116181610989565b15156111dc576040805160e560020a62461bcd028152602060048201526024808201527f636f6c642073746f726167652061646472657373206973206e6f74206f70657260448201527f61746f7200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6006805483019055604051600160a060020a0382169083156108fc029084906000818181858888f1935050505015801561121a573d6000803e3d6000fd5b506040805183815290517fdb20c60a6579d57993b77709f23c4392044180df95d2e3a8d95c2f12ff1060279181900360200190a15050565b6002546101009004600160a060020a031681565b600080600080600061127786610989565b1561128a576004546103e8029450611328565b505050600160a060020a0383166000908152600760205260408120600554909250420390805b835481101561130d578284828154811015156112c857fe5b90600052602060002090600202016000015411156113055783818154811015156112ee57fe5b906000526020600020906002020160010154820191505b6001016112b0565b6004548210156113235781600454039450611328565b600094505b50505050919050565b3360009081526020819052604081205460ff161515611388576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156113e957600080fd5b505af11580156113fd573d6000803e3d6000fd5b505050506040513d602081101561141357600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506040513d60208110156114ab57600080fd5b50505050565b600160a060020a038116600090815260076020526040812060055490914291909103905b82548110156114ab578183828154811015156114ed57fe5b6000918252602090912060029091020154116115655782548390600019810190811061151557fe5b9060005260206000209060020201838281548110151561153157fe5b600091825260209091208254600290920201908155600191820154910155825461155f8460001983016115bd565b50611569565b6001015b6114d5565b600160a060020a03909116600090815260076020908152604080832081518083019092524282528183019485528054600181810183559185529290932090516002909202019081559151910155565b8154818355818111156115e9576002028160020283600052602060002091820191016115e991906115ee565b505050565b610c7c91905b8082111561160e57600080825560018201556002016115f4565b509056004163636573732064656e69656400000000000000000000000000000000000000a165627a7a723058200de2fe3e72e8ae52f6f2ae9a88e82d6544ba5e6b1c34b59b38b8aec68d7313200029
Deployed Bytecode
0x60806040526004361061018a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166308497077811461018f57806311952369146101b657806313af4035146101cd578063173825d9146101ee5780632d34ba791461020f5780632f54bf6e146102365780633ccfd60b1461026b5780633f4ba83a1461028057806346195c12146102955780635c975abb146102b65780636d70f7ae146102cb5780637065cb48146102ec5780637d6976251461030d57806380255866146103215780638456cb59146103365780638634dcc61461034b5780638a6577271461035357806394a89233146103685780639652713e1461037d578063976ef75b1461039e5780639870d7fe146103cf578063a055d455146103f0578063a0ef91df14610411578063ac8a584a14610426578063c4590d3f14610447578063c6b72a1f14610295578063d0e30db014610462578063ddf02b851461046a578063e80db5db1461048e578063eb4a9670146104a3578063f4f3b200146104c4575b600080fd5b34801561019b57600080fd5b506101a46104e5565b60408051918252519081900360200190f35b3480156101c257600080fd5b506101cb6104eb565b005b3480156101d957600080fd5b506101cb600160a060020a0360043516610508565b3480156101fa57600080fd5b506101cb600160a060020a03600435166105f3565b34801561021b57600080fd5b506101cb600160a060020a036004358116906024351661066b565b34801561024257600080fd5b50610257600160a060020a03600435166107a9565b604080519115158252519081900360200190f35b34801561027757600080fd5b506101cb6107c7565b34801561028c57600080fd5b506101cb61080a565b3480156102a157600080fd5b506101cb600160a060020a03600435166108a7565b3480156102c257600080fd5b50610257610980565b3480156102d757600080fd5b50610257600160a060020a0360043516610989565b3480156102f857600080fd5b506101cb600160a060020a03600435166109ce565b6101cb600160a060020a0360043516610aa9565b34801561032d57600080fd5b506101a4610b3c565b34801561034257600080fd5b506101cb610b42565b6101cb610be1565b34801561035f57600080fd5b506101a4610c73565b34801561037457600080fd5b50610257610c79565b6101cb64ffffffffff60043516602435600160a060020a0360443516610c7f565b3480156103aa57600080fd5b506103b3610e38565b60408051600160a060020a039092168252519081900360200190f35b3480156103db57600080fd5b506101cb600160a060020a0360043516610e47565b6101cb64ffffffffff60043516602435600160a060020a0360443516610f25565b34801561041d57600080fd5b506101cb610f3c565b34801561043257600080fd5b506101cb600160a060020a0360043516610f93565b34801561045357600080fd5b506101cb60043560243561100b565b6101cb61106d565b34801561047657600080fd5b506101cb600435600160a060020a03602435166110a9565b34801561049a57600080fd5b506103b3611252565b3480156104af57600080fd5b506101a4600160a060020a0360043516611266565b3480156104d057600080fd5b506101cb600160a060020a0360043516611331565b60045481565b600354600160a060020a0316331461050257600080fd5b6105065b565b3360009081526020819052604090205460ff16151561055f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a03811615156105bf576040805160e560020a62461bcd02815260206004820152601260248201527f4e6577206f776e657220697320656d7074790000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0316600090815260208190526040808220805460ff19908116600117909155338352912080549091169055565b3360009081526020819052604090205460ff16151561064a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a03166000908152602081905260409020805460ff19169055565b3360009081526020819052604081205460ff1615156106c2576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b82905080600160a060020a0316634d6a813a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561071c57600080fd5b505af1158015610730573d6000803e3d6000fd5b505050506040513d602081101561074657600080fd5b5051151561075357600080fd5b6002805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03938416021790556003805473ffffffffffffffffffffffffffffffffffffffff19169290911691909117905550565b600160a060020a031660009081526020819052604090205460ff1690565b6107d0336107a9565b806107ea57506002546101009004600160a060020a031633145b806107ff5750600354600160a060020a031633145b151561050257600080fd5b3360009081526020819052604090205460ff161515610861576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60025460ff16151561087257600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3360009081526020819052604090205460ff1615156108fe576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b604080517fa22cb465000000000000000000000000000000000000000000000000000000008152336004820152600160248201529051600160a060020a0383169163a22cb46591604480830192600092919082900301818387803b15801561096557600080fd5b505af1158015610979573d6000803e3d6000fd5b5050505050565b60025460ff1681565b600160a060020a03811660009081526001602052604081205460ff16806109c85750600160a060020a03821660009081526020819052604090205460ff165b92915050565b3360009081526020819052604090205460ff161515610a25576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a0381161515610a85576040805160e560020a62461bcd02815260206004820152601260248201527f4e6577206f776e657220697320656d7074790000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03166000908152602081905260409020805460ff19166001179055565b610ab233610989565b1515610af6576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60408051600160a060020a038316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a150565b60055481565b3360009081526020819052604090205460ff161515610b99576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60025460ff1615610ba957600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b610bea33610989565b1515610c2e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600680543490819003909155604080516000929092038252517fdb20c60a6579d57993b77709f23c4392044180df95d2e3a8d95c2f12ff1060279181900360200190a1565b60065481565b60015b90565b600354600090600160a060020a03163314610c9957600080fd5b50740100000000000000000000000000000000000000008204600160a060020a0382811690841614610d15576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672063616c6c65720000000000000000000000000000000000000000604482015290519081900360640190fd5b610d1e826114b1565b806bffffffffffffffffffffffff16610d3684611266565b1015610d8c576040805160e560020a62461bcd02815260206004820152600b60248201527f4461696c79206c696d6974000000000000000000000000000000000000000000604482015290519081900360640190fd5b610da482826bffffffffffffffffffffffff1661156e565b60408051600160a060020a03841681526bffffffffffffffffffffffff8316602082015281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a1604051600160a060020a038316906bffffffffffffffffffffffff831680156108fc02916000818181858888f19350505050158015610979573d6000803e3d6000fd5b600354600160a060020a031681565b3360009081526020819052604090205460ff161515610e9e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a0381161515610efe576040805160e560020a62461bcd02815260206004820152601560248201527f4e6577206f70657261746f7220697320656d7074790000000000000000000000604482015290519081900360640190fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600354600160a060020a0316331461018a57600080fd5b3360009081526020819052604090205460ff16151561018a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b3360009081526020819052604090205460ff161515610fea576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b3360009081526020819052604090205460ff161515611062576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b600491909155600555565b6040805133815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a1565b3360009081526020819052604090205460ff161515611100576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b60008213611158576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e2774207769746864726177206e656761746976652076616c7565000000604482015290519081900360640190fd5b61116181610989565b15156111dc576040805160e560020a62461bcd028152602060048201526024808201527f636f6c642073746f726167652061646472657373206973206e6f74206f70657260448201527f61746f7200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6006805483019055604051600160a060020a0382169083156108fc029084906000818181858888f1935050505015801561121a573d6000803e3d6000fd5b506040805183815290517fdb20c60a6579d57993b77709f23c4392044180df95d2e3a8d95c2f12ff1060279181900360200190a15050565b6002546101009004600160a060020a031681565b600080600080600061127786610989565b1561128a576004546103e8029450611328565b505050600160a060020a0383166000908152600760205260408120600554909250420390805b835481101561130d578284828154811015156112c857fe5b90600052602060002090600202016000015411156113055783818154811015156112ee57fe5b906000526020600020906002020160010154820191505b6001016112b0565b6004548210156113235781600454039450611328565b600094505b50505050919050565b3360009081526020819052604081205460ff161515611388576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611613833981519152604482015290519081900360640190fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156113e957600080fd5b505af11580156113fd573d6000803e3d6000fd5b505050506040513d602081101561141357600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506040513d60208110156114ab57600080fd5b50505050565b600160a060020a038116600090815260076020526040812060055490914291909103905b82548110156114ab578183828154811015156114ed57fe5b6000918252602090912060029091020154116115655782548390600019810190811061151557fe5b9060005260206000209060020201838281548110151561153157fe5b600091825260209091208254600290920201908155600191820154910155825461155f8460001983016115bd565b50611569565b6001015b6114d5565b600160a060020a03909116600090815260076020908152604080832081518083019092524282528183019485528054600181810183559185529290932090516002909202019081559151910155565b8154818355818111156115e9576002028160020283600052602060002091820191016115e991906115ee565b505050565b610c7c91905b8082111561160e57600080825560018201556002016115f4565b509056004163636573732064656e69656400000000000000000000000000000000000000a165627a7a723058200de2fe3e72e8ae52f6f2ae9a88e82d6544ba5e6b1c34b59b38b8aec68d7313200029
Deployed Bytecode Sourcemap
32260:3655:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32301:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32301:20:0;;;;;;;;;;;;;;;;;;;;31554:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31554:74:0;;;;;;26132:215;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26132:215:0;-1:-1:-1;;;;;26132:215:0;;;;;26355:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26355:109:0;-1:-1:-1;;;;;26355:109:0;;;;;29647:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;29647:311:0;-1:-1:-1;;;;;29647:311:0;;;;;;;;;;25840:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25840:104:0;-1:-1:-1;;;;;25840:104:0;;;;;;;;;;;;;;;;;;;;;;;31140:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31140:225:0;;;;28632:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28632:105:0;;;;27259:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27259:139:0;-1:-1:-1;;;;;27259:139:0;;;;;27949:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27949:26:0;;;;26583:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26583:133:0;-1:-1:-1;;;;;26583:133:0;;;;;25952:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25952:172:0;-1:-1:-1;;;;;25952:172:0;;;;;32959:124;;-1:-1:-1;;;;;32959:124:0;;;;;32328:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32328:35:0;;;;28434:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28434:103:0;;;;35746:166;;;;32370:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32370:31:0;;;;28893:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28893:91:0;;;;34423:777;;;;;;;;-1:-1:-1;;;;;34423:777:0;;;;;29090:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29090:30:0;;;;;;;;-1:-1:-1;;;;;29090:30:0;;;;;;;;;;;;;;26724:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26724:190:0;-1:-1:-1;;;;;26724:190:0;;;;;33091:98;;;;;;;;-1:-1:-1;;;;;33091:98:0;;;;;35293:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35293:74:0;;;;26922:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26922:121:0;-1:-1:-1;;;;;26922:121:0;;;;;32691:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32691:157:0;;;;;;;32856:95;;;;35375:363;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;35375:363:0;;;-1:-1:-1;;;;;35375:363:0;;;;;29045:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29045:38:0;;;;33197:633;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33197:633:0;-1:-1:-1;;;;;33197:633:0;;;;;27051:200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27051:200:0;-1:-1:-1;;;;;27051:200:0;;;;;32301:20;;;;:::o;31554:74::-;29355:15;;-1:-1:-1;;;;;29355:15:0;29341:10;:29;29333:38;;;;;;31609:11;;31554:74::o;26132:215::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26207:23:0;;;;26199:54;;;;;-1:-1:-1;;;;;26199:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26266:23:0;:12;:23;;;;;;;;;;;:30;;-1:-1:-1;;26266:30:0;;;26292:4;26266:30;;;;26327:10;26314:24;;;;26307:32;;;;;;;26132:215::o;26355:109::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26432:23:0;:12;:23;;;;;;;;;;26425:31;;-1:-1:-1;;26425:31:0;;;26355:109::o;29647:311::-;25783:10;29738:36;25770:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;29796:12;29738:71;;29828:17;-1:-1:-1;;;;;29828:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29828:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29828:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29828:31:0;29820:40;;;;;;;;29871:12;:32;;-1:-1:-1;;29871:32:0;;-1:-1:-1;;;;;29871:32:0;;;;;;;29916:15;:34;;-1:-1:-1;;29916:34:0;;;;;;;;;;;-1:-1:-1;29647:311:0:o;25840:104::-;-1:-1:-1;;;;;25917:19:0;25893:4;25917:19;;;;;;;;;;;;;;25840:104::o;31140:225::-;31207:19;31215:10;31207:7;:19::i;:::-;:71;;;-1:-1:-1;31265:12:0;;;;;-1:-1:-1;;;;;31265:12:0;31243:10;:35;31207:71;:117;;;-1:-1:-1;31309:15:0;;-1:-1:-1;;;;;31309:15:0;31295:10;:29;31207:117;31185:150;;;;;;;28632:105;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;28315:6;;;;28307:15;;;;;;;;28690:6;:14;;-1:-1:-1;;28690:14:0;;;28720:9;;;;28699:5;;28720:9;28632:105::o;27259:139::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;27340;;;;;;27373:10;27340:50;;;;27385:4;27340:50;;;;;;-1:-1:-1;;;;;27340:32:0;;;;;:50;;;;;-1:-1:-1;;27340:50:0;;;;;;;-1:-1:-1;27340:32:0;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;27340:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27340:50:0;;;;27259:139;:::o;27949:26::-;;;;;;:::o;26583:133::-;-1:-1:-1;;;;;26663:22:0;;26639:4;26663:22;;;:15;:22;;;;;;;;;:45;;-1:-1:-1;;;;;;26689:19:0;;:12;:19;;;;;;;;;;;;;26663:45;26656:52;26583:133;-1:-1:-1;;26583:133:0:o;25952:172::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26027:23:0;;;;26019:54;;;;;-1:-1:-1;;;;;26019:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26086:23:0;:12;:23;;;;;;;;;;:30;;-1:-1:-1;;26086:30:0;26112:4;26086:30;;;25952:172::o;32959:124::-;26515:22;26526:10;26515;:22::i;:::-;26507:48;;;;;;;-1:-1:-1;;;;;26507:48:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;26507:48:0;;;;;;;;;;;;;;;33050:25;;;-1:-1:-1;;;;;33050:25:0;;;;33065:9;33050:25;;;;;;;;;;;;;;;;;32959:124;:::o;32328:35::-;;;;:::o;28434:103::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;28137:6;;;;28136:7;28128:16;;;;;;28493:6;:13;;-1:-1:-1;;28493:13:0;28502:4;28493:13;;;28522:7;;;;28493:6;;28522:7;28434:103::o;35746:166::-;26515:22;26526:10;26515;:22::i;:::-;26507:48;;;;;;;-1:-1:-1;;;;;26507:48:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;26507:48:0;;;;;;;;;;;;;;;35826:16;:34;;35850:9;35826:34;;;;;;;35876:28;;;35826:16;35888:15;;;;35876:28;;;;;;;;;;;;35746:166::o;32370:31::-;;;;:::o;28893:91::-;28972:4;28893:91;;:::o;34423:777::-;29355:15;;34762:13;;-1:-1:-1;;;;;29355:15:0;29341:10;:29;29333:38;;;;;;-1:-1:-1;34796:45:0;34785:56;;-1:-1:-1;;;;;34924:27:0;;;;;;;34916:52;;;;;-1:-1:-1;;;;;34916:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34979:11;34985:4;34979:5;:11::i;:::-;35051:6;35009:48;;:38;35035:10;35009:17;:38::i;:::-;:48;;35001:72;;;;;-1:-1:-1;;;;;35001:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35086:32;35105:4;35111:6;35086:32;;:18;:32::i;:::-;35136:22;;;-1:-1:-1;;;;;35136:22:0;;;;;;;;;;;;;;;;;;;;;;;;35171:21;;-1:-1:-1;;;;;35171:13:0;;;:21;;;;;;;;;;;;;:13;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;29090:30:0;;;-1:-1:-1;;;;;29090:30:0;;:::o;26724:190::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26805:26:0;;;;26797:60;;;;;-1:-1:-1;;;;;26797:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26870:29:0;;;;;26902:4;26870:29;;;;;;;;:36;;-1:-1:-1;;26870:36:0;;;;;;26724:190::o;33091:98::-;29355:15;;-1:-1:-1;;;;;29355:15:0;29341:10;:29;29333:38;;;;;35293:74;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;26922:121;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27005:29:0;;;;;:15;:29;;;;;26998:37;;-1:-1:-1;;26998:37:0;;;26922:121::o;32691:157::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;32781:8;:20;;;;32812:12;:28;32691:157::o;32856:95::-;32913:30;;;32921:10;32913:30;;32933:9;32913:30;;;;;;;;;;;;;;;;;32856:95::o;35375:363::-;25783:10;25770:12;:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;35492:1;35484:9;;35476:51;;;;;-1:-1:-1;;;;;35476:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35546:26;35557:14;35546:10;:26::i;:::-;35538:75;;;;;;;-1:-1:-1;;;;;35538:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35624:16;:25;;;;;;35660:36;;-1:-1:-1;;;;;35660:23:0;;;:36;;;;;35644:5;;35624:16;35660:36;35624:16;35660:36;35644:5;35660:23;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;35712:18:0;;;;;;;;;;;;;;;;;35375:363;;:::o;29045:38::-;;;;;;-1:-1:-1;;;;;29045:38:0;;:::o;33197:633::-;33259:12;33377:27;33437:14;33483:10;33513:6;33293:16;33304:4;33293:10;:16::i;:::-;33289:78;;;33347:8;;33342:4;:13;33335:20;;;;33289:78;-1:-1:-1;;;;;;;;33407:17:0;;;;;;:11;:17;;;;;33460:12;;33407:17;;-1:-1:-1;33454:3:0;:18;;33407:17;33508:165;33529:8;;33525:12;;33508:165;;;33584:9;33572:1;33574;33572:4;;;;;;;;;;;;;;;;;;;;:9;;;:21;33568:94;;;33636:1;33638;33636:4;;;;;;;;;;;;;;;;;;;;:10;;;33627:19;;;;33568:94;33539:3;;33508:165;;;33695:8;;33687:5;:16;33683:140;;;33747:5;33736:8;;:16;33729:23;;;;33683:140;33810:1;33803:8;;33683:140;33197:633;;;;;;;:::o;27051:200::-;25783:10;27131:15;25770:24;;;;;;;;;;;;;25762:50;;;;;;;-1:-1:-1;;;;;25762:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25762:50:0;;;;;;;;;;;;;;;27149:39;;;;;;27182:4;27149:39;;;;;;-1:-1:-1;;;;;27149:24:0;;;;;:39;;;;;;;;;;;;;;-1:-1:-1;27149:24:0;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;27149:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27149:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27149:39:0;27199:44;;;;;;27223:10;27199:44;;;;;;;;;;;;27149:39;;-1:-1:-1;;;;;;27199:23:0;;;;;:44;;;;;27149:39;;27199:44;;;;;;;;-1:-1:-1;27199:23:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;27199:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27199:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;27051:200:0:o;33838:431::-;-1:-1:-1;;;;;33922:17:0;;33892:27;33922:17;;;:11;:17;;;;;33975:12;;33922:17;;33969:3;:18;;;;;33998:264;34019:8;;34015:12;;33998:264;;;34071:9;34058:1;34060;34058:4;;;;;;;;;;;;;;;;;;;;;;;:9;:22;34054:197;;34123:8;;34121:1;;-1:-1:-1;;34123:12:0;;;34121:15;;;;;;;;;;;;;;;;34114:1;34116;34114:4;;;;;;;;;;;;;;;;;;:22;;:4;;;;;:22;;;;;;;;;;;34155:10;;;:1;-1:-1:-1;;34155:10:0;;;:::i;:::-;;34054:197;;;34232:3;;34054:197;33998:264;;34277:138;-1:-1:-1;;;;;34356:17:0;;;;;;;:11;:17;;;;;;;;34379:27;;;;;;;;34395:3;34379:27;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;34356:51:0;;;;;;;;;;;;;;;;;;;;;;34277:138::o;32260:3655::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://0de2fe3e72e8ae52f6f2ae9a88e82d6544ba5e6b1c34b59b38b8aec68d731320
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.