ETH Price: $3,308.53 (-3.79%)

Contract

0xDE996793D2bec1905E8B69C7AaC5fb783FA22304
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Bid127404322021-07-01 7:28:521244 days ago1625124532IN
0xDE996793...83FA22304
0.1 ETH0.0016613514.001
Bid127365642021-06-30 16:58:421245 days ago1625072322IN
0xDE996793...83FA22304
0.0501 ETH0.0038600828
Bid127364852021-06-30 16:40:451245 days ago1625071245IN
0xDE996793...83FA22304
0.1001 ETH0.0065349533
Bid127348082021-06-30 10:35:011245 days ago1625049301IN
0xDE996793...83FA22304
0.0501 ETH0.0011867110.001
Bid127347992021-06-30 10:32:581245 days ago1625049178IN
0xDE996793...83FA22304
0.0501 ETH0.001207610
Bid127347982021-06-30 10:32:321245 days ago1625049152IN
0xDE996793...83FA22304
0.0501 ETH0.0011587110.001
Bid127347962021-06-30 10:32:151245 days ago1625049135IN
0xDE996793...83FA22304
0.0501 ETH0.0011867110.001
Bid127347872021-06-30 10:30:381245 days ago1625049038IN
0xDE996793...83FA22304
0.1001 ETH0.0016565410
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.00490516
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.00490516.00000145
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.00490516.00000145
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.00490516.00000145
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.00490516.00000145
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.0052115717
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.0052115717
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.0052115717
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.0047210715.4
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.0058246919
Creat Art127346482021-06-30 10:00:531245 days ago1625047253IN
0xDE996793...83FA22304
0 ETH0.0053341917.4
Creat Art127346472021-06-30 10:00:511245 days ago1625047251IN
0xDE996793...83FA22304
0 ETH0.00490516
Creat Art127346472021-06-30 10:00:511245 days ago1625047251IN
0xDE996793...83FA22304
0 ETH0.0045984415
Creat Art127346472021-06-30 10:00:511245 days ago1625047251IN
0xDE996793...83FA22304
0 ETH0.0037094112.1
Creat Art127346472021-06-30 10:00:511245 days ago1625047251IN
0xDE996793...83FA22304
0 ETH0.0035254711.5
Creat Art127346472021-06-30 10:00:511245 days ago1625047251IN
0xDE996793...83FA22304
0 ETH0.0033721911
Creat Art127346472021-06-30 10:00:511245 days ago1625047251IN
0xDE996793...83FA22304
0 ETH0.0030656310
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
127404322021-07-01 7:28:521244 days ago1625124532
0xDE996793...83FA22304
0.05 ETH
127404322021-07-01 7:28:521244 days ago1625124532
0xDE996793...83FA22304
0.05 ETH
127365642021-06-30 16:58:421245 days ago1625072322
0xDE996793...83FA22304
0.05 ETH
127365642021-06-30 16:58:421245 days ago1625072322
0xDE996793...83FA22304
0.0001 ETH
127364852021-06-30 16:40:451245 days ago1625071245
0xDE996793...83FA22304
0.065 ETH
127364852021-06-30 16:40:451245 days ago1625071245
0xDE996793...83FA22304
0.001 ETH
127364852021-06-30 16:40:451245 days ago1625071245
0xDE996793...83FA22304
0.009 ETH
127364852021-06-30 16:40:451245 days ago1625071245
0xDE996793...83FA22304
0.025 ETH
127364852021-06-30 16:40:451245 days ago1625071245
0xDE996793...83FA22304
0.0001 ETH
127348082021-06-30 10:35:011245 days ago1625049301
0xDE996793...83FA22304
0.05 ETH
127348082021-06-30 10:35:011245 days ago1625049301
0xDE996793...83FA22304
0.0001 ETH
127347992021-06-30 10:32:581245 days ago1625049178
0xDE996793...83FA22304
0.05 ETH
127347992021-06-30 10:32:581245 days ago1625049178
0xDE996793...83FA22304
0.0001 ETH
127347982021-06-30 10:32:321245 days ago1625049152
0xDE996793...83FA22304
0.05 ETH
127347982021-06-30 10:32:321245 days ago1625049152
0xDE996793...83FA22304
0.0001 ETH
127347962021-06-30 10:32:151245 days ago1625049135
0xDE996793...83FA22304
0.05 ETH
127347962021-06-30 10:32:151245 days ago1625049135
0xDE996793...83FA22304
0.0001 ETH
127347872021-06-30 10:30:381245 days ago1625049038
0xDE996793...83FA22304
0.065 ETH
127347872021-06-30 10:30:381245 days ago1625049038
0xDE996793...83FA22304
0.001 ETH
127347872021-06-30 10:30:381245 days ago1625049038
0xDE996793...83FA22304
0.009 ETH
127347872021-06-30 10:30:381245 days ago1625049038
0xDE996793...83FA22304
0.025 ETH
127347872021-06-30 10:30:381245 days ago1625049038
0xDE996793...83FA22304
0.0001 ETH
127346422021-06-30 10:00:191245 days ago1625047219
0xDE996793...83FA22304
0.05 ETH
127346422021-06-30 10:00:191245 days ago1625047219
0xDE996793...83FA22304
0.05 ETH
127346392021-06-30 9:59:491245 days ago1625047189
0xDE996793...83FA22304
0.05 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x68E09411...C849F5BfD
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Artist

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU LGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-23
*/

// SPDX-License-Identifier: BUSL-1.1

pragma solidity ^0.5.16;

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

pragma solidity ^0.5.16;

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

pragma solidity ^0.5.16;

contract IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data)
    public returns (bytes4);
}

pragma solidity ^0.5.16;

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0);
        uint256 c = a / b;
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;
        return c;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

pragma solidity ^0.5.16;

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

pragma solidity ^0.5.16;

contract ERC165 is IERC165 {
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () internal {
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    function supportsInterface(bytes4 interfaceId) external view returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    function _registerInterface(bytes4 interfaceId) internal {
        require(interfaceId != 0xffffffff);
        _supportedInterfaces[interfaceId] = true;
    }
}

pragma solidity ^0.5.16;

contract ERC721 is ERC165, IERC721 {
    using SafeMath for uint256;
    using Address for address;

    bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
    mapping (uint256 => address) private _tokenOwner;
    mapping (uint256 => address) private _tokenApprovals;
    mapping (address => uint256) private _ownedTokensCount;
    mapping (address => mapping (address => bool)) private _operatorApprovals;
    bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;

    constructor () public {
        _registerInterface(_INTERFACE_ID_ERC721);
    }

    function balanceOf(address owner) public view returns (uint256) {
        require(owner != address(0));
        return _ownedTokensCount[owner];
    }

    function ownerOf(uint256 tokenId) public view returns (address) {
        address owner = _tokenOwner[tokenId];
        require(owner != address(0));
        return owner;
    }

    function approve(address to, uint256 tokenId) public {
        address owner = ownerOf(tokenId);
        require(to != owner);
        require(msg.sender == owner || isApprovedForAll(owner, msg.sender));

        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    function getApproved(uint256 tokenId) public view returns (address) {
        require(_exists(tokenId));
        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address to, bool approved) public {
        require(to != msg.sender);
        _operatorApprovals[msg.sender][to] = approved;
        emit ApprovalForAll(msg.sender, to, approved);
    }

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

    function transferFrom(address from, address to, uint256 tokenId) public {
        require(_isApprovedOrOwner(msg.sender, tokenId));
        _transferFrom(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public {
        transferFrom(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data));
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        address owner = _tokenOwner[tokenId];
        return owner != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {
        address owner = ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function _mint(address to, uint256 tokenId) internal {
        require(to != address(0));
        require(!_exists(tokenId));

        _tokenOwner[tokenId] = to;
        _ownedTokensCount[to] = _ownedTokensCount[to].add(1);

        emit Transfer(address(0), to, tokenId);
    }

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

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

    function _clearApproval(uint256 tokenId) private {
        if (_tokenApprovals[tokenId] != address(0)) {
            _tokenApprovals[tokenId] = address(0);
        }
    }

}

pragma solidity ^0.5.16;

contract IERC721Enumerable is IERC721 {
    function totalSupply() public view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) public view returns (uint256);
}

pragma solidity ^0.5.16;

contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable {

    mapping(address => uint256[]) private _ownedTokens;
    mapping(uint256 => uint256) private _ownedTokensIndex;
    uint256[] private _allTokens;
    mapping(uint256 => uint256) private _allTokensIndex;
    bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;

    constructor () public {
        _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);
    }

    function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {
        require(index < balanceOf(owner));
        return _ownedTokens[owner][index];
    }

    function totalSupply() public view returns (uint256) {
        return _allTokens.length;
    }

    function tokenByIndex(uint256 index) public view returns (uint256) {
        require(index < totalSupply());
        return _allTokens[index];
    }

    function _transferFrom(address from, address to, uint256 tokenId) internal {
        super._transferFrom(from, to, tokenId);
        _removeTokenFromOwnerEnumeration(from, tokenId);
        _addTokenToOwnerEnumeration(to, tokenId);
    }

    function _mint(address to, uint256 tokenId) internal {
        super._mint(to, tokenId);
        _addTokenToOwnerEnumeration(to, tokenId);
        _addTokenToAllTokensEnumeration(tokenId);
    }

    function _tokensOfOwner(address owner) internal view returns (uint256[] storage) {
        return _ownedTokens[owner];
    }

    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        _ownedTokensIndex[tokenId] = _ownedTokens[to].length;
        _ownedTokens[to].push(tokenId);
    }

    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }

        _ownedTokens[from].length--;
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {

        uint256 lastTokenIndex = _allTokens.length.sub(1);
        uint256 tokenIndex = _allTokensIndex[tokenId];
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId;
        _allTokensIndex[lastTokenId] = tokenIndex;

        _allTokens.length--;
        _allTokensIndex[tokenId] = 0;
    }
}

pragma solidity ^0.5.16;

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


pragma solidity ^0.5.16;

contract ERC721Metadata is ERC165, ERC721, IERC721Metadata {

    string private _name;
    string private _symbol;

    bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;

    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _registerInterface(_INTERFACE_ID_ERC721_METADATA);
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

}

pragma solidity ^0.5.16;

contract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata {
    constructor (string memory name, string memory symbol) public ERC721Metadata(name, symbol) {
    }
}
pragma solidity ^0.5.16;

contract IRadicalNFT is IERC165 {
    function round(uint256 _tokenid) external view returns (uint256 _round);
    function price(uint256 _round) public returns (uint256 _price);
    function getBidStartTime(uint256 tokenid)external view returns(uint64);
    function bid(address inviterAddress, uint256 tokenid) external payable;
}
contract RadicalNFT is ERC165,IRadicalNFT {

    bytes4 private constant _INTERFACE_ID_RADICALNFT = 0x9203c74e;
 //       bytes4(keccak256('round(uint256)')) ^
 //       bytes4(keccak256('price(uint256)')) ^
 //       bytes4(keccak256('getBidStartTime(uint256)')) ^
 //       bytes4(keccak256('bid(address,uint256)'));

    constructor () public {
        _registerInterface(_INTERFACE_ID_RADICALNFT);
    }
}

contract Ownable {
  address public owner;

    constructor() public {
    owner = msg.sender;
  }


  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  function transferOwnership(address newOwner) onlyOwner public {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}

contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor ()public {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}
contract ArtistBase is Ownable,ERC721Full,RadicalNFT,ReentrancyGuard {
    
    using SafeMath for uint256;
    
    bool public paused = false;
    address public cfoAddress;
    address public cooAddress;
    
    address public bonusPoolAddress;
    address public devPoolAddress;  
    uint256[] private priceList;



    /// @dev The main art struct. 
    struct Art {
        uint256 id;
        uint64 bidStartTime;
        uint64 round;
        //bid issue privileges
        bool bid;
        string ipfs;
    }


    uint256 public lastBidTime=0;
    Art[]  arts;

    //current id 
    uint256 curid;
    
    uint256 public bidInterval;
    uint256 public defaultBidTokenId;
    
    modifier onlyCLevel() {
        require(
            msg.sender == cooAddress 
        );
        _;
    }
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /// @dev Modifier to allow actions only when the contract IS paused
    modifier whenPaused {
        require(paused);
        _;
    }


    function pause() external onlyCLevel whenNotPaused {
        paused = true;
    }

    function unpause() public onlyCLevel whenPaused {
        paused = false;
    }

    function creatArt(
        bool bidflag,
        string calldata ipfsaddr,
        uint64 startTime

    )
        external
        whenNotPaused
        returns (uint256)
    {
         require(msg.sender == owner, "ERR_NOT_OWNER");


        if(lastBidTime==0){
            bidflag=false;
        }else if((now-lastBidTime)<bidInterval){
            bidflag=false;
        }else{
            if(bidflag){
                lastBidTime=now;
            }
        }

        Art memory _art = Art({
            id: curid,
            bidStartTime: startTime,
            round: 0,
            bid: bidflag,
            ipfs: ipfsaddr

        });
        curid = arts.push(_art) ;

        require(curid == uint256(uint32(curid)));

        _mint(owner, curid-1);

        return curid;
    }
    
    function tokenURI(uint256 tokenId) external view returns (string memory) {
        require(_exists(tokenId));
        return arts[tokenId].ipfs;
    }

    function checkArtBidable(uint256 tokenId) external view returns (bool) {
        require(_exists(tokenId));
        return arts[tokenId].bid;
    }

    function openBidTokenAuthority() 
        external
        onlyCLevel
        {
            lastBidTime=now - bidInterval;
        }

    function closeBidTokenAuthority() 
        external
        onlyCLevel
        {
            lastBidTime=0;
        }

    function setBidInterval(uint256 interval) 
        external
        onlyCLevel
        {
            bidInterval=interval;
        }
        

    function changeArtData(uint256 tokenid,string calldata ipfs) 
        external
        onlyCLevel
        {
            require(tokenid<curid, "ERR_ARTID_TOOBIG");
            arts[tokenid].ipfs=ipfs;
        }
    function editArtData(uint256 tokenid,string calldata ipfs) 
        external
        onlyOwner
        {
            require(tokenid<curid, "ERR_ARTID_TOOBIG");
            require(arts[tokenid].bidStartTime>now,"ERR_ALREADY_START");
            arts[tokenid].ipfs=ipfs;
        }

    function checkBidable() view
        external
        returns (bool){
        
            if(lastBidTime==0){
                return false;
            }else if((now-lastBidTime)<bidInterval){
                return false;
            }else{
                return true;
            }
        
        }
    function getLatestTokenID() view
        external
        returns (uint256){
            return curid;
        }
        
    function setBidStartTime(uint256 tokenid,uint64 startTime) 
        external
        onlyOwner
        {
            require(tokenid<curid, "ERR_TOKEN_ID_ERROR");
            require(arts[tokenid].bidStartTime>now,"ERR_ALREADY_START");
            arts[tokenid].bidStartTime=startTime;
        }
    function getBidStartTime(uint256 tokenid) view
        external
        returns(uint64)
        {
            require(tokenid<curid, "ERR_TOKEN_ID_ERROR");
            return arts[tokenid].bidStartTime;
        }
    function setDefaultBidId(uint256 tokenid) 
        external
        onlyOwner
        {
            require(tokenid<curid, "ERR_TOKEN_ID_ERROR");

            defaultBidTokenId=tokenid;
        }
        
    function round(uint256 tokenid) view 
        external
        returns (uint256){
            return arts[tokenid].round;
        }

    event LOG_AUCTION(
        uint256  artid,
        uint256  lastPrice,
        uint256  curPrice,
        uint256  bid,
        address  lastOwner,
        address  buyer,
        address  inviterAddress
    );
    //bid token address
    IERC20 public bidtoken;
    function () external
    whenNotPaused
     payable {
        _bid(devPoolAddress,defaultBidTokenId);
         
    }
   
      function bid(address inviterAddress, uint256 artid) payable
    whenNotPaused
     public {
        _bid(inviterAddress,artid); 
     }
     
     function price(uint256 _round) public
     returns (uint256)
     {
         if(_round>priceList.length){
             uint256 lastValue=priceList[priceList.length-1];
             for(uint256 i=priceList.length;i<_round;i++){
                 lastValue=lastValue.mul(11).div(10);
                 priceList.push(lastValue);
             }
             return lastValue;
         }
         return priceList[_round-1];
     }     
     
     function initRoundPrice() internal
     returns (uint256)
     {
         uint256 lastValue=0;
         for(uint256 i=1;i<12;i++){
            if(i<11){
                lastValue=i.mul(0.05 ether);
            }else{
                lastValue=lastValue.mul(11).div(10);
            }
            priceList.push(lastValue);
         }
     }
    
    function _bid(address inviterAddress, uint256 artid) nonReentrant internal
     {
         require(artid<curid, "ERR_ARTID_TOOBIG");  
         address lastOwner=ownerOf(artid);
         require(lastOwner!=msg.sender, "ERR_CAN_NOT_PURCHASE_OWN_ART");       
         require(arts[artid].bidStartTime<now,"ERR_BID_NOT_START_YET");
         uint256 r=arts[artid].round;
         
         if(r==0){
             uint256 payprice=0.05 ether;
             require(msg.value>=payprice, "ERR_NOT_ENOUGH_MONEY");
              msg.sender.send(msg.value.sub(payprice));
              address(uint160(owner)).send(payprice);
              uint256 x=0;
              if(arts[artid].bid){
                  x=50 ether;
                  if(bidtoken.balanceOf(cfoAddress)>=x){
                      bidtoken.transferFrom(cfoAddress,msg.sender,x);                  
                  }else{
                      x=0;
                  }
             }
             arts[artid].round++;
            _transferFrom(lastOwner, msg.sender, artid);

            emit LOG_AUCTION(artid, payprice,payprice,x,lastOwner,msg.sender,inviterAddress );
            return;
         }
        uint256 curprice=price(r);
        uint256 payprice=price(r+1);
        require(msg.value>=payprice, "ERR_NOT_ENOUGH_MONEY");
        
         //refund extra money
         msg.sender.send(msg.value-payprice);
         
         uint256 smoney=payprice-curprice;
         
         //we don't check any send process,only 2300 gas provided
         address(uint160(owner)).send(smoney.mul(5).div(10));

         address(uint160(bonusPoolAddress)).send(smoney.mul(18).div(100));
        
         address(uint160(inviterAddress)).send(smoney.mul(2).div(100));
        
         address(uint160(lastOwner)).send(smoney.mul(30).div(100).add(curprice));

         uint256 x=0;
         if(arts[artid].bid){
             //r is last round
            x=r<10?50 ether:((r+1).mul(5 ether));
            if(bidtoken.balanceOf(cfoAddress)>=x){
                bidtoken.transferFrom(cfoAddress,msg.sender,x);
            }else{
                x=0;
            }
         }

         arts[artid].round++;
    
          _transferFrom(lastOwner, msg.sender, artid);

        emit LOG_AUCTION(artid, curprice,payprice,x,lastOwner,msg.sender,inviterAddress );

    }

}

interface IERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
}
contract Artist is ArtistBase{

    constructor(string memory _name,string memory _symbol,address artistaddr,
    address auditor,address _bid,address _bonusPool,address _devPool) ERC721Full(_name, _symbol) public {
        bonusPoolAddress=_bonusPool;
        devPoolAddress=_devPool;
        bidtoken=IERC20(_bid);
        curid=0;
        owner=artistaddr;
        cfoAddress=msg.sender;
        cooAddress=auditor;
        bidInterval=30 days;
        defaultBidTokenId=0;
        initRoundPrice();
    }
    function setCOO(address _newCOO) external onlyCLevel {
        require(_newCOO != address(0));

        cooAddress = _newCOO;
    }
    function rescueETH(address _address) external onlyCLevel {
        address(uint160(_address)).transfer(address(this).balance);
  }
 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"artistaddr","type":"address"},{"internalType":"address","name":"auditor","type":"address"},{"internalType":"address","name":"_bid","type":"address"},{"internalType":"address","name":"_bonusPool","type":"address"},{"internalType":"address","name":"_devPool","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"artid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"curPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"},{"indexed":false,"internalType":"address","name":"lastOwner","type":"address"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"inviterAddress","type":"address"}],"name":"LOG_AUCTION","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"inviterAddress","type":"address"},{"internalType":"uint256","name":"artid","type":"uint256"}],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"bidInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bidtoken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonusPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cfoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"},{"internalType":"string","name":"ipfs","type":"string"}],"name":"changeArtData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"checkArtBidable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkBidable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeBidTokenAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"bidflag","type":"bool"},{"internalType":"string","name":"ipfsaddr","type":"string"},{"internalType":"uint64","name":"startTime","type":"uint64"}],"name":"creatArt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"defaultBidTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"},{"internalType":"string","name":"ipfs","type":"string"}],"name":"editArtData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"}],"name":"getBidStartTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getLatestTokenID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastBidTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"openBidTokenAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"rescueETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"}],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"setBidInterval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"},{"internalType":"uint64","name":"startTime","type":"uint64"}],"name":"setBidStartTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"}],"name":"setDefaultBidId","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x60806040526004361061027d5760003560e01c8063642ab4b11161014f578063a8d48680116100c1578063cf59e7051161007a578063cf59e70514611190578063d9a4cda7146111bb578063da95f1d41461121e578063e985e9c51461124d578063f0588e7c146112d6578063f2fde38b146112ed5761027d565b8063a8d4868014610ef6578063b046229d14610f31578063b047fb5014610f5c578063b0b7d30c14610fb3578063b88d4fde14610fca578063c87b56dd146110dc5761027d565b806384efd6751161011357806384efd67514610ca05780638a9bfa0314610cf75780638da5cb5b14610d8757806395d89b4114610dde578063a22cb46514610e6e578063a622fc7314610ecb5761027d565b8063642ab4b114610b4f5780636604a6a314610b7a57806370a0823114610bd157806381c0f3da14610c365780638456cb5914610c895761027d565b806326a49e37116101f357806346834cca116101ac57806346834cca146109135780634f6ccce7146109cd57806359d667a514610a1c5780635a4d8e5414610a6a5780635c975abb14610aa55780636352211e14610ad45761027d565b806326a49e37146107235780632ba73c15146107725780632f745c59146107c357806334d5f37b146108325780633f4ba83a1461088157806342842e0e146108985761027d565b8063095ea7b311610245578063095ea7b3146104ec5780630d64ca031461054757806318160ddd14610596578063189db8c6146105c157806323b872dd1461061857806325c5edf4146106935761027d565b806301ffc9a7146102c757806304824e70146103395780630519ce791461038a57806306fdde03146103e1578063081812fc14610471575b600d60009054906101000a900460ff161561029757600080fd5b6102c5601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660165461133e565b005b3480156102d357600080fd5b5061031f600480360360208110156102ea57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506121a6565b604051808215151515815260200191505060405180910390f35b34801561034557600080fd5b506103886004803603602081101561035c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061220e565b005b34801561039657600080fd5b5061039f6122b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103ed57600080fd5b506103f66122d8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561043657808201518184015260208101905061041b565b50505050905090810190601f1680156104635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047d57600080fd5b506104aa6004803603602081101561049457600080fd5b810190808035906020019092919050505061237a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104f857600080fd5b506105456004803603604081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123c9565b005b34801561055357600080fd5b506105946004803603604081101561056a57600080fd5b8101908080359060200190929190803567ffffffffffffffff16906020019092919050505061250a565b005b3480156105a257600080fd5b506105ab6126d4565b6040518082815260200191505060405180910390f35b3480156105cd57600080fd5b506105d66126e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062457600080fd5b506106916004803603606081101561063b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612707565b005b34801561069f57600080fd5b50610721600480360360408110156106b657600080fd5b8101908080359060200190929190803590602001906401000000008111156106dd57600080fd5b8201836020820111156106ef57600080fd5b8035906020019184600183028401116401000000008311171561071157600080fd5b909192939192939050505061272a565b005b34801561072f57600080fd5b5061075c6004803603602081101561074657600080fd5b81019080803590602001909291905050506128de565b6040518082815260200191505060405180910390f35b34801561077e57600080fd5b506107c16004803603602081101561079557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129b3565b005b3480156107cf57600080fd5b5061081c600480360360408110156107e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a8b565b6040518082815260200191505060405180910390f35b34801561083e57600080fd5b5061086b6004803603602081101561085557600080fd5b8101908080359060200190929190505050612afe565b6040518082815260200191505060405180910390f35b34801561088d57600080fd5b50610896612b44565b005b3480156108a457600080fd5b50610911600480360360608110156108bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bd4565b005b34801561091f57600080fd5b506109b76004803603606081101561093657600080fd5b810190808035151590602001909291908035906020019064010000000081111561095f57600080fd5b82018360208201111561097157600080fd5b8035906020019184600183028401116401000000008311171561099357600080fd5b9091929391929390803567ffffffffffffffff169060200190929190505050612bf4565b6040518082815260200191505060405180910390f35b3480156109d957600080fd5b50610a06600480360360208110156109f057600080fd5b8101908080359060200190929190505050612eca565b6040518082815260200191505060405180910390f35b610a6860048036036040811015610a3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612efe565b005b348015610a7657600080fd5b50610aa360048036036020811015610a8d57600080fd5b8101908080359060200190929190505050612f26565b005b348015610ab157600080fd5b50610aba612f8a565b604051808215151515815260200191505060405180910390f35b348015610ae057600080fd5b50610b0d60048036036020811015610af757600080fd5b8101908080359060200190929190505050612f9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b5b57600080fd5b50610b64613019565b6040518082815260200191505060405180910390f35b348015610b8657600080fd5b50610b8f61301f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bdd57600080fd5b50610c2060048036036020811015610bf457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613045565b6040518082815260200191505060405180910390f35b348015610c4257600080fd5b50610c6f60048036036020811015610c5957600080fd5b81019080803590602001909291905050506130c7565b604051808215151515815260200191505060405180910390f35b348015610c9557600080fd5b50610c9e61310e565b005b348015610cac57600080fd5b50610cb561319f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d0357600080fd5b50610d8560048036036040811015610d1a57600080fd5b810190808035906020019092919080359060200190640100000000811115610d4157600080fd5b820183602082011115610d5357600080fd5b80359060200191846001830284011164010000000083111715610d7557600080fd5b90919293919293905050506131c5565b005b348015610d9357600080fd5b50610d9c6132c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dea57600080fd5b50610df36132ee565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e33578082015181840152602081019050610e18565b50505050905090810190601f168015610e605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e7a57600080fd5b50610ec960048036036040811015610e9157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613390565b005b348015610ed757600080fd5b50610ee06134ca565b6040518082815260200191505060405180910390f35b348015610f0257600080fd5b50610f2f60048036036020811015610f1957600080fd5b81019080803590602001909291905050506134d0565b005b348015610f3d57600080fd5b50610f466135aa565b6040518082815260200191505060405180910390f35b348015610f6857600080fd5b50610f716135b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fbf57600080fd5b50610fc86135da565b005b348015610fd657600080fd5b506110da60048036036080811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561105457600080fd5b82018360208201111561106657600080fd5b8035906020019184600183028401116401000000008311171561108857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613641565b005b3480156110e857600080fd5b50611115600480360360208110156110ff57600080fd5b8101908080359060200190929190505050613667565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561115557808201518184015260208101905061113a565b50505050905090810190601f1680156111825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561119c57600080fd5b506111a5613739565b6040518082815260200191505060405180910390f35b3480156111c757600080fd5b506111f4600480360360208110156111de57600080fd5b810190808035906020019092919050505061373f565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b34801561122a57600080fd5b506112336137f2565b604051808215151515815260200191505060405180910390f35b34801561125957600080fd5b506112bc6004803603604081101561127057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613826565b604051808215151515815260200191505060405180910390f35b3480156112e257600080fd5b506112eb6138ba565b005b3480156112f957600080fd5b5061133c6004803603602081101561131057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061391e565b005b6002600c5414156113b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600c819055506014548110611436576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4552525f41525449445f544f4f4249470000000000000000000000000000000081525060200191505060405180910390fd5b600061144182612f9d565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552525f43414e5f4e4f545f50555243484153455f4f574e5f4152540000000081525060200191505060405180910390fd5b42601383815481106114f357fe5b906000526020600020906003020160010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1610611596576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4552525f4249445f4e4f545f53544152545f594554000000000000000000000081525060200191505060405180910390fd5b6000601383815481106115a557fe5b906000526020600020906003020160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000811415611aed57600066b1a2bc2ec50000905080341015611662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552525f4e4f545f454e4f5547485f4d4f4e455900000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc61168f83346139ef90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050505060008090506013858154811061171357fe5b906000526020600020906003020160010160109054906101000a900460ff161561198b576802b5e3af16b1880000905080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561180557600080fd5b505afa158015611819573d6000803e3d6000fd5b505050506040513d602081101561182f57600080fd5b81019080805190602001909291905050501061198557601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b505050506040513d602081101561196e57600080fd5b81019080805190602001909291905050505061198a565b600090505b5b6013858154811061199857fe5b9060005260206000209060030201600101600881819054906101000a900467ffffffffffffffff168092919060010191906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550506119f9843387613a0f565b7fdbc7bf8977d24ca9350fbf7da682a8d3bf6c09e8ec388302d894cd222bf664428583848488338c604051808881526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a15050505061219a565b6000611af8826128de565b90506000611b08600184016128de565b905080341015611b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552525f4e4f545f454e4f5547485f4d4f4e455900000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8234039081150290604051600060405180830381858888f1935050505050600082820390506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c21600a611c13600586613a3390919063ffffffff16565b613a6d90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c9f6064611c91601286613a3390919063ffffffff16565b613a6d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050508673ffffffffffffffffffffffffffffffffffffffff166108fc611cfb6064611ced600286613a3390919063ffffffff16565b613a6d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050508473ffffffffffffffffffffffffffffffffffffffff166108fc611d6985611d5b6064611d4d601e88613a3390919063ffffffff16565b613a6d90919063ffffffff16565b613a9390919063ffffffff16565b9081150290604051600060405180830381858888f1935050505050600080905060138781548110611d9657fe5b906000526020600020906003020160010160109054906101000a900460ff161561203a57600a8510611de557611de0674563918244f4000060018701613a3390919063ffffffff16565b611df0565b6802b5e3af16b18800005b905080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611eb457600080fd5b505afa158015611ec8573d6000803e3d6000fd5b505050506040513d6020811015611ede57600080fd5b81019080805190602001909291905050501061203457601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ff357600080fd5b505af1158015612007573d6000803e3d6000fd5b505050506040513d602081101561201d57600080fd5b810190808051906020019092919050505050612039565b600090505b5b6013878154811061204757fe5b9060005260206000209060030201600101600881819054906101000a900467ffffffffffffffff168092919060010191906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550506120a8863389613a0f565b7fdbc7bf8977d24ca9350fbf7da682a8d3bf6c09e8ec388302d894cd222bf66442878585848a338e604051808881526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a15050505050505b6001600c819055505050565b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461226857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156122ae573d6000803e3d6000fd5b5050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123705780601f1061234557610100808354040283529160200191612370565b820191906000526020600020905b81548152906001019060200180831161235357829003601f168201915b5050505050905090565b600061238582613ab2565b61238e57600080fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006123d482612f9d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061244f575061244e8133613826565b5b61245857600080fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461256357600080fd5b60145482106125da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4552525f544f4b454e5f49445f4552524f52000000000000000000000000000081525060200191505060405180910390fd5b42601383815481106125e857fe5b906000526020600020906003020160010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff161161268b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4552525f414c52454144595f535441525400000000000000000000000000000081525060200191505060405180910390fd5b806013838154811061269957fe5b906000526020600020906003020160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000600880549050905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6127113382613b24565b61271a57600080fd5b612725838383613a0f565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461278357600080fd5b60145483106127fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4552525f41525449445f544f4f4249470000000000000000000000000000000081525060200191505060405180910390fd5b426013848154811061280857fe5b906000526020600020906003020160010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16116128ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4552525f414c52454144595f535441525400000000000000000000000000000081525060200191505060405180910390fd5b8181601385815481106128ba57fe5b906000526020600020906003020160020191906128d892919061453b565b50505050565b600060118054905082111561299057600060116001601180549050038154811061290457fe5b90600052602060002001549050600060118054905090505b838110156129865761294b600a61293d600b85613a3390919063ffffffff16565b613a6d90919063ffffffff16565b91506011829080600181540180825580915050906001820390600052602060002001600090919290919091505550808060010191505061291c565b50809150506129ae565b601160018303815481106129a057fe5b906000526020600020015490505b919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a0d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a4757600080fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612a9683613045565b8210612aa157600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612aeb57fe5b9060005260206000200154905092915050565b600060138281548110612b0d57fe5b906000526020600020906003020160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b9e57600080fd5b600d60009054906101000a900460ff16612bb757600080fd5b6000600d60006101000a81548160ff021916908315150217905550565b612bef83838360405180602001604052806000815250613641565b505050565b6000600d60009054906101000a900460ff1615612c1057600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4552525f4e4f545f4f574e45520000000000000000000000000000000000000081525060200191505060405180910390fd5b60006012541415612ce65760009450612d0d565b60155460125442031015612cfd5760009450612d0c565b8415612d0b57426012819055505b5b5b612d156145bb565b6040518060a0016040528060145481526020018467ffffffffffffffff168152602001600067ffffffffffffffff168152602001871515815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152509050601381908060018154018082558091505090600182039060005260206000209060030201600090919290919091506000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548160ff0219169083151502179055506080820151816002019080519060200190612e6d929190614600565b50505060148190555060145463ffffffff1660145414612e8c57600080fd5b612ebc6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160145403613bb9565b601454915050949350505050565b6000612ed46126d4565b8210612edf57600080fd5b60088281548110612eec57fe5b90600052602060002001549050919050565b600d60009054906101000a900460ff1615612f1857600080fd5b612f22828261133e565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f8057600080fd5b8060158190555050565b600d60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561301057600080fd5b80915050919050565b60125481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561308057600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006130d282613ab2565b6130db57600080fd5b601382815481106130e857fe5b906000526020600020906003020160010160109054906101000a900460ff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461316857600080fd5b600d60009054906101000a900460ff161561318257600080fd5b6001600d60006101000a81548160ff021916908315150217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461321f57600080fd5b6014548310613296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4552525f41525449445f544f4f4249470000000000000000000000000000000081525060200191505060405180910390fd5b8181601385815481106132a557fe5b906000526020600020906003020160020191906132c392919061453b565b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133865780601f1061335b57610100808354040283529160200191613386565b820191906000526020600020905b81548152906001019060200180831161336957829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133c957600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60165481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461352957600080fd5b60145481106135a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4552525f544f4b454e5f49445f4552524f52000000000000000000000000000081525060200191505060405180910390fd5b8060168190555050565b6000601454905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461363457600080fd5b6015544203601281905550565b61364c848484612707565b61365884848484613bda565b61366157600080fd5b50505050565b606061367282613ab2565b61367b57600080fd5b6013828154811061368857fe5b90600052602060002090600302016002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561372d5780601f106137025761010080835404028352916020019161372d565b820191906000526020600020905b81548152906001019060200180831161371057829003601f168201915b50505050509050919050565b60155481565b600060145482106137b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4552525f544f4b454e5f49445f4552524f52000000000000000000000000000081525060200191505060405180910390fd5b601382815481106137c557fe5b906000526020600020906003020160010160009054906101000a900467ffffffffffffffff169050919050565b60008060125414156138075760009050613823565b6015546012544203101561381e5760009050613823565b600190505b90565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461391457600080fd5b6000601281905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461397757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146139ec57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000828211156139fe57600080fd5b600082840390508091505092915050565b613a1a838383613dc3565b613a248382614024565b613a2e82826141c2565b505050565b600080831415613a465760009050613a67565b6000828402905082848281613a5757fe5b0414613a6257600080fd5b809150505b92915050565b6000808211613a7b57600080fd5b6000828481613a8657fe5b0490508091505092915050565b600080828401905083811015613aa857600080fd5b8091505092915050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080613b3083612f9d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613b9f57508373ffffffffffffffffffffffffffffffffffffffff16613b878461237a565b73ffffffffffffffffffffffffffffffffffffffff16145b80613bb05750613baf8185613826565b5b91505092915050565b613bc38282614289565b613bcd82826141c2565b613bd68161441e565b5050565b6000613bfb8473ffffffffffffffffffffffffffffffffffffffff1661446a565b613c085760019050613dbb565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613ce3578082015181840152602081019050613cc8565b50505050905090810190601f168015613d105780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015613d3257600080fd5b505af1158015613d46573d6000803e3d6000fd5b505050506040513d6020811015613d5c57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16613de382612f9d565b73ffffffffffffffffffffffffffffffffffffffff1614613e0357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e3d57600080fd5b613e468161447d565b613e996001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ef90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2f6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9390919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061407c6001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506139ef90919063ffffffff16565b9050600060076000848152602001908152602001600020549050818114614169576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106140e957fe5b9060005260206000200154905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061414157fe5b9060005260206000200181905550816007600083815260200190815260200160002081905550505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036141bb9190614680565b5050505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506007600083815260200190815260200160002081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156142c357600080fd5b6142cc81613ab2565b156142d657600080fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061437b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9390919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146145385760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061457c57803560ff19168380011785556145aa565b828001600101855582156145aa579182015b828111156145a957823582559160200191906001019061458e565b5b5090506145b791906146ac565b5090565b6040518060a0016040528060008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061464157805160ff191683800117855561466f565b8280016001018555821561466f579182015b8281111561466e578251825591602001919060010190614653565b5b50905061467c91906146ac565b5090565b8154818355818111156146a7578183600052602060002091820191016146a691906146ac565b5b505050565b6146ce91905b808211156146ca5760008160009055506001016146b2565b5090565b9056fea265627a7a7231582012f40e8f6873a77aa4d62bc4fd44305ab46de5bc66b1f9135665e3fd1d2fba3a64736f6c63430005100032

Deployed Bytecode Sourcemap

23324:807:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15235:6;;;;;;;;;;;15234:7;15226:16;;;;;;19395:38;19400:14;;;;;;;;;;;19415:17;;19395:4;:38::i;:::-;23324:807;2806:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2806:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2806:135:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23993:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23993:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23993:132:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14497:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14497:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11002:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11002:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;11002:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4381:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4381:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4381:154:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4074:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4074:299:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4074:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18159:302;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18159:302:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18159:302:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8148:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8148:96:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19301:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19301:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4923:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4923:182:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4923:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17410:287;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17410:287:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17410:287:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17410:287:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17410:287: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;17410:287:0;;;;;;;;;;;;:::i;:::-;;19618:437;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19618:437:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19618:437:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23852:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23852:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23852:135:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7955:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7955:185:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7955:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18909:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18909:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18909:135:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15510:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15510:81:0;;;:::i;:::-;;5113:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5113:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15599:828;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15599:828:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15599:828:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;15599:828:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15599:828: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;15599:828:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8252:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8252:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8252:151:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19465:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19465:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17033:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17033:137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17033:137:0;;;;;;;;;;;;;;;;;:::i;:::-;;14464:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14464:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3885:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3885:181:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3885:181:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14895:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14895:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14567:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14567:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3724:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3724:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3724:153:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16600:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16600:150:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16600:150:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15419:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15419:83:0;;;:::i;:::-;;14605:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14605:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17188:216;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17188:216:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17188:216:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17188:216:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17188:216: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;17188:216:0;;;;;;;;;;;;:::i;:::-;;12209:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12209:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11095:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11095:89:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;11095:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4543:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4543:217:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4543:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15028:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15028:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18691:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18691:202:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18691:202:0;;;;;;;;;;;;;;;;;:::i;:::-;;18027:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18027:116:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14529:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14529:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16758:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16758:137:0;;;:::i;:::-;;5255:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:214:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5255:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5255:214:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5255: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;5255: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;;5255:214:0;;;;;;;;;;;;;;;:::i;:::-;;16439:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16439:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16439:153:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;16439:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14995:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14995:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18467:218;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18467:218:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18467:218:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17705:316;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17705:316:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4768:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4768:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4768:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16903:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16903:122:0;;;:::i;:::-;;12374:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12374:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12374:135:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20438:2382;13393:1;13996:7;;:19;;13988:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13393:1;14129:7;:18;;;;20545:5;;20539;:11;20531:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20585:17;20603:14;20611:5;20603:7;:14::i;:::-;20585:32;;20648:10;20637:21;;:9;:21;;;;20629:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20743:3;20718:4;20723:5;20718:11;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;:28;;;20710:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20783:9;20793:4;20798:5;20793:11;;;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;20783:27;;;;20839:1;20836;:4;20833:789;;;20857:16;20874:10;20857:27;;20919:8;20908:9;:19;;20900:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20969:10;:15;;:40;20985:23;20999:8;20985:9;:13;;:23;;;;:::i;:::-;20969:40;;;;;;;;;;;;;;;;;;;;;;;;21042:5;;;;;;;;;;;21026:28;;:38;21055:8;21026:38;;;;;;;;;;;;;;;;;;;;;;;;21081:9;21091:1;21081:11;;21112:4;21117:5;21112:11;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;21109:289;;;21151:8;21149:10;;21215:1;21183:8;;;;;;;;;;;:18;;;21202:10;;;;;;;;;;;21183:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21183:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21183:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21183:30:0;;;;;;;;;;;;;;;;:33;21180:202;;21242:8;;;;;;;;;;;:21;;;21264:10;;;;;;;;;;;21275;21286:1;21242:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21242:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21242:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21242:46:0;;;;;;;;;;;;;;;;;21180:202;;;21359:1;21357:3;;21180:202;21109:289;21413:4;21418:5;21413:11;;;;;;;;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21447:43;21461:9;21472:10;21484:5;21447:13;:43::i;:::-;21512:76;21524:5;21531:8;21540;21549:1;21551:9;21561:10;21572:14;21512:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21603:7;;;;;;20833:789;21632:16;21649:8;21655:1;21649:5;:8::i;:::-;21632:25;;21668:16;21685:10;21693:1;21691;:3;21685:5;:10::i;:::-;21668:27;;21725:8;21714:9;:19;;21706:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21811:10;:15;;:35;21837:8;21827:9;:18;21811:35;;;;;;;;;;;;;;;;;;;;;;;;21869:14;21893:8;21884;:17;21869:32;;22007:5;;;;;;;;;;;21991:28;;:51;22020:21;22038:2;22020:13;22031:1;22020:6;:10;;:13;;;;:::i;:::-;:17;;:21;;;;:::i;:::-;21991:51;;;;;;;;;;;;;;;;;;;;;;;;22072:16;;;;;;;;;;;22056:39;;:64;22096:23;22115:3;22096:14;22107:2;22096:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;22056:64;;;;;;;;;;;;;;;;;;;;;;;;22158:14;22142:37;;:61;22180:22;22198:3;22180:13;22191:1;22180:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;22142:61;;;;;;;;;;;;;;;;;;;;;;;;22241:9;22225:32;;:71;22258:37;22286:8;22258:23;22277:3;22258:14;22269:2;22258:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;:27;;:37;;;;:::i;:::-;22225:71;;;;;;;;;;;;;;;;;;;;;;;;22310:9;22320:1;22310:11;;22336:4;22341:5;22336:11;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;22333:289;;;22403:2;22401:1;:4;:34;;22416:18;22426:7;22419:1;22417;:3;22416:9;;:18;;;;:::i;:::-;22401:34;;;22406:8;22401:34;22399:36;;22485:1;22453:8;;;;;;;;;;;:18;;;22472:10;;;;;;;;;;;22453:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22453:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22453:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22453:30:0;;;;;;;;;;;;;;;;:33;22450:160;;22506:8;;;;;;;;;;;:21;;;22528:10;;;;;;;;;;;22539;22550:1;22506:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22506:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22506:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22506:46:0;;;;;;;;;;;;;;;;;22450:160;;;22593:1;22591:3;;22450:160;22333:289;22635:4;22640:5;22635:11;;;;;;;;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22673:43;22687:9;22698:10;22710:5;22673:13;:43::i;:::-;22734:76;22746:5;22753:8;22762;22771:1;22773:9;22783:10;22794:14;22734:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14160:1;;;;;;;13349;14308:7;:22;;;;20438:2382;;:::o;2806:135::-;2876:4;2900:20;:33;2921:11;2900:33;;;;;;;;;;;;;;;;;;;;;;;;;;;2893:40;;2806:135;;;:::o;23993:132::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;24077:8;24061:35;;:58;24097:21;24061:58;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24061:58:0;23993:132;:::o;14497:25::-;;;;;;;;;;;;;:::o;11002:85::-;11041:13;11074:5;11067:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11002:85;:::o;4381:154::-;4440:7;4468:16;4476:7;4468;:16::i;:::-;4460:25;;;;;;4503:15;:24;4519:7;4503:24;;;;;;;;;;;;;;;;;;;;;4496:31;;4381:154;;;:::o;4074:299::-;4138:13;4154:16;4162:7;4154;:16::i;:::-;4138:32;;4195:5;4189:11;;:2;:11;;;;4181:20;;;;;;4234:5;4220:19;;:10;:19;;;:58;;;;4243:35;4260:5;4267:10;4243:16;:35::i;:::-;4220:58;4212:67;;;;;;4319:2;4292:15;:24;4308:7;4292:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;4357:7;4353:2;4337:28;;4346:5;4337:28;;;;;;;;;;;;4074:299;;;:::o;18159:302::-;12348:5;;;;;;;;;;;12334:19;;:10;:19;;;12326:28;;;;;;18296:5;;18288:7;:13;18280:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18374:3;18347:4;18352:7;18347:13;;;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:30;;;18339:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18440:9;18413:4;18418:7;18413:13;;;;;;;;;;;;;;;;;;:26;;;:36;;;;;;;;;;;;;;;;;;18159:302;;:::o;8148:96::-;8192:7;8219:10;:17;;;;8212:24;;8148:96;:::o;19301:22::-;;;;;;;;;;;;;:::o;4923:182::-;5014:39;5033:10;5045:7;5014:18;:39::i;:::-;5006:48;;;;;;5065:32;5079:4;5085:2;5089:7;5065:13;:32::i;:::-;4923:182;;;:::o;17410:287::-;12348:5;;;;;;;;;;;12334:19;;:10;:19;;;12326:28;;;;;;17547:5;;17539:7;:13;17531:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17623:3;17596:4;17601:7;17596:13;;;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:30;;;17588:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17681:4;;17662;17667:7;17662:13;;;;;;;;;;;;;;;;;;:18;;:23;;;;;;;:::i;:::-;;17410:287;;;:::o;19618:437::-;19671:7;19708:9;:16;;;;19701:6;:23;19698:311;;;19741:17;19759:9;19786:1;19769:9;:16;;;;:18;19759:29;;;;;;;;;;;;;;;;19741:47;;19808:9;19818;:16;;;;19808:26;;19804:161;19837:6;19835:1;:8;19804:161;;;19878:25;19900:2;19878:17;19892:2;19878:9;:13;;:17;;;;:::i;:::-;:21;;:25;;;;:::i;:::-;19868:35;;19923:9;19938;19923:25;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;19923:25:0;;;;;;;;;;;;;;;;;;;;;;19844:3;;;;;;;19804:161;;;;19987:9;19980:16;;;;;19698:311;20027:9;20044:1;20037:6;:8;20027:19;;;;;;;;;;;;;;;;20020:26;;19618:437;;;;:::o;23852:135::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;23943:1;23924:21;;:7;:21;;;;23916:30;;;;;;23972:7;23959:10;;:20;;;;;;;;;;;;;;;;;;23852:135;:::o;7955:185::-;8035:7;8071:16;8081:5;8071:9;:16::i;:::-;8063:5;:24;8055:33;;;;;;8106:12;:19;8119:5;8106:19;;;;;;;;;;;;;;;8126:5;8106:26;;;;;;;;;;;;;;;;8099:33;;7955:185;;;;:::o;18909:135::-;18983:7;19013:4;19018:7;19013:13;;;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;19006:26;;;;18909:135;;;:::o;15510:81::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;15382:6;;;;;;;;;;;15374:15;;;;;;15578:5;15569:6;;:14;;;;;;;;;;;;;;;;;;15510:81::o;5113:134::-;5200:39;5217:4;5223:2;5227:7;5200:39;;;;;;;;;;;;:16;:39::i;:::-;5113:134;;;:::o;15599:828::-;15770:7;15235:6;;;;;;;;;;;15234:7;15226:16;;;;;;15818:5;;;;;;;;;;;15804:19;;:10;:19;;;15796:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15872:1;15859:11;;:14;15856:227;;;15897:5;15889:13;;15856:227;;;15940:11;;15927;;15923:3;:15;15922:29;15919:164;;;15975:5;15967:13;;15919:164;;;16014:7;16011:61;;;16053:3;16041:11;:15;;;;16011:61;15919:164;15856:227;16095:15;;:::i;:::-;16113:159;;;;;;;;16136:5;;16113:159;;;;16170:9;16113:159;;;;;;16201:1;16113:159;;;;;;16222:7;16113:159;;;;;;16250:8;;16113:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;16113:159:0;;;;;;;;;16095:177;;16291:4;16301;16291:15;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16291:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16283:5;:23;;;;16352:5;;16337:22;;16328:5;;:31;16320:40;;;;;;16373:21;16379:5;;;;;;;;;;;16392:1;16386:5;;:7;16373:5;:21::i;:::-;16414:5;;16407:12;;;15599:828;;;;;;:::o;8252:151::-;8310:7;8346:13;:11;:13::i;:::-;8338:5;:21;8330:30;;;;;;8378:10;8389:5;8378:17;;;;;;;;;;;;;;;;8371:24;;8252:151;;;:::o;19465:139::-;15235:6;;;;;;;;;;;15234:7;15226:16;;;;;;19568:26;19573:14;19588:5;19568:4;:26::i;:::-;19465:139;;:::o;17033:137::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;17150:8;17138:11;:20;;;;17033:137;:::o;14464:26::-;;;;;;;;;;;;;:::o;3885:181::-;3940:7;3960:13;3976:11;:20;3988:7;3976:20;;;;;;;;;;;;;;;;;;;;;3960:36;;4032:1;4015:19;;:5;:19;;;;4007:28;;;;;;4053:5;4046:12;;;3885:181;;;:::o;14895:28::-;;;;:::o;14567:31::-;;;;;;;;;;;;;:::o;3724:153::-;3779:7;3824:1;3807:19;;:5;:19;;;;3799:28;;;;;;3845:17;:24;3863:5;3845:24;;;;;;;;;;;;;;;;3838:31;;3724:153;;;:::o;16600:150::-;16665:4;16690:16;16698:7;16690;:16::i;:::-;16682:25;;;;;;16725:4;16730:7;16725:13;;;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;16718:24;;16600:150;;;:::o;15419:83::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;15235:6;;;;;;;;;;;15234:7;15226:16;;;;;;15490:4;15481:6;;:13;;;;;;;;;;;;;;;;;;15419:83::o;14605:29::-;;;;;;;;;;;;;:::o;17188:216::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;17328:5;;17320:7;:13;17312:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17388:4;;17369;17374:7;17369:13;;;;;;;;;;;;;;;;;;:18;;:23;;;;;;;:::i;:::-;;17188:216;;;:::o;12209:20::-;;;;;;;;;;;;;:::o;11095:89::-;11136:13;11169:7;11162:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11095:89;:::o;4543:217::-;4629:10;4623:16;;:2;:16;;;;4615:25;;;;;;4688:8;4651:18;:30;4670:10;4651:30;;;;;;;;;;;;;;;:34;4682:2;4651:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4739:2;4712:40;;4727:10;4712:40;;;4743:8;4712:40;;;;;;;;;;;;;;;;;;;;;;4543:217;;:::o;15028:32::-;;;;:::o;18691:202::-;12348:5;;;;;;;;;;;12334:19;;:10;:19;;;12326:28;;;;;;18811:5;;18803:7;:13;18795:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18874:7;18856:17;:25;;;;18691:202;:::o;18027:116::-;18096:7;18126:5;;18119:12;;18027:116;:::o;14529:25::-;;;;;;;;;;;;;:::o;16758:137::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;16872:11;;16866:3;:17;16854:11;:29;;;;16758:137::o;5255:214::-;5362:31;5375:4;5381:2;5385:7;5362:12;:31::i;:::-;5412:48;5435:4;5441:2;5445:7;5454:5;5412:22;:48::i;:::-;5404:57;;;;;;5255:214;;;;:::o;16439:153::-;16497:13;16531:16;16539:7;16531;:16::i;:::-;16523:25;;;;;;16566:4;16571:7;16566:13;;;;;;;;;;;;;;;;;;:18;;16559:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16439:153;;;:::o;14995:26::-;;;;:::o;18467:218::-;18549:6;18597:5;;18589:7;:13;18581:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18647:4;18652:7;18647:13;;;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;18640:33;;18467:218;;;:::o;17705:316::-;17770:4;17816:1;17803:11;;:14;17800:200;;;17844:5;17837:12;;;;17800:200;17891:11;;17878;;17874:3;:15;17873:29;17870:130;;;17929:5;17922:12;;;;17870:130;17980:4;17973:11;;17705:316;;:::o;4768:147::-;4848:4;4872:18;:25;4891:5;4872:25;;;;;;;;;;;;;;;:35;4898:8;4872:35;;;;;;;;;;;;;;;;;;;;;;;;;4865:42;;4768:147;;;;:::o;16903:122::-;15142:10;;;;;;;;;;;15128:24;;:10;:24;;;15106:58;;;;;;17012:1;17000:11;:13;;;;16903:122::o;12374:135::-;12348:5;;;;;;;;;;;12334:19;;:10;:19;;;12326:28;;;;;;12467:1;12447:22;;:8;:22;;;12443:61;;12488:8;12480:5;;:16;;;;;;;;;;;;;;;;;;12443:61;12374:135;:::o;1853:148::-;1911:7;1944:1;1939;:6;;1931:15;;;;;;1957:9;1973:1;1969;:5;1957:17;;1992:1;1985:8;;;1853:148;;;;:::o;8411:241::-;8497:38;8517:4;8523:2;8527:7;8497:19;:38::i;:::-;8546:47;8579:4;8585:7;8546:32;:47::i;:::-;8604:40;8632:2;8636:7;8604:27;:40::i;:::-;8411:241;;;:::o;1481:209::-;1539:7;1568:1;1563;:6;1559:47;;;1593:1;1586:8;;;;1559:47;1616:9;1632:1;1628;:5;1616:17;;1661:1;1656;1652;:5;;;;;;:10;1644:19;;;;;;1681:1;1674:8;;;1481:209;;;;;:::o;1698:147::-;1756:7;1788:1;1784;:5;1776:14;;;;;;1801:9;1817:1;1813;:5;;;;;;1801:17;;1836:1;1829:8;;;1698:147;;;;:::o;2009:148::-;2067:7;2087:9;2103:1;2099;:5;2087:17;;2128:1;2123;:6;;2115:15;;;;;;2148:1;2141:8;;;2009:148;;;;:::o;5477:155::-;5534:4;5551:13;5567:11;:20;5579:7;5567:20;;;;;;;;;;;;;;;;;;;;;5551:36;;5622:1;5605:19;;:5;:19;;;;5598:26;;;5477:155;;;:::o;5640:249::-;5725:4;5742:13;5758:16;5766:7;5758;:16::i;:::-;5742:32;;5804:5;5793:16;;:7;:16;;;:51;;;;5837:7;5813:31;;:20;5825:7;5813:11;:20::i;:::-;:31;;;5793:51;:87;;;;5848:32;5865:5;5872:7;5848:16;:32::i;:::-;5793:87;5785:96;;;5640:249;;;;:::o;8660:198::-;8724:24;8736:2;8740:7;8724:11;:24::i;:::-;8759:40;8787:2;8791:7;8759:27;:40::i;:::-;8810;8842:7;8810:31;:40::i;:::-;8660:198;;:::o;6611:356::-;6733:4;6760:15;:2;:13;;;:15::i;:::-;6755:60;;6799:4;6792:11;;;;6755:60;6827:13;6859:2;6843:36;;;6880:10;6892:4;6898:7;6907:5;6843: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;6843:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6843:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6843:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6843:70:0;;;;;;;;;;;;;;;;6827:86;;3297:10;6942:16;;6932:26;;;:6;:26;;;;6924:35;;;6611:356;;;;;;;:::o;6191:412::-;6305:4;6285:24;;:16;6293:7;6285;:16::i;:::-;:24;;;6277:33;;;;;;6343:1;6329:16;;:2;:16;;;;6321:25;;;;;;6359:23;6374:7;6359:14;:23::i;:::-;6421:30;6449:1;6421:17;:23;6439:4;6421:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;6395:17;:23;6413:4;6395:23;;;;;;;;;;;;;;;:56;;;;6486:28;6512:1;6486:17;:21;6504:2;6486:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;6462:17;:21;6480:2;6462:21;;;;;;;;;;;;;;;:52;;;;6548:2;6525:11;:20;6537:7;6525:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;6587:7;6583:2;6568:27;;6577:4;6568:27;;;;;;;;;;;;6191:412;;;:::o;9366:501::-;9458:22;9483:32;9513:1;9483:12;:18;9496:4;9483:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;9458:57;;9526:18;9547:17;:26;9565:7;9547:26;;;;;;;;;;;;9526:47;;9604:14;9590:10;:28;9586:234;;9635:19;9657:12;:18;9670:4;9657:18;;;;;;;;;;;;;;;9676:14;9657:34;;;;;;;;;;;;;;;;9635:56;;9739:11;9706:12;:18;9719:4;9706:18;;;;;;;;;;;;;;;9725:10;9706:30;;;;;;;;;;;;;;;:44;;;;9798:10;9765:17;:30;9783:11;9765:30;;;;;;;;;;;:43;;;;9586:234;;9832:12;:18;9845:4;9832:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;9366:501;;;;:::o;9000:186::-;9114:12;:16;9127:2;9114:16;;;;;;;;;;;;;;;:23;;;;9085:17;:26;9103:7;9085:26;;;;;;;;;;;:52;;;;9148:12;:16;9161:2;9148:16;;;;;;;;;;;;;;;9170:7;9148:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;9148:30:0;;;;;;;;;;;;;;;;;;;;;;9000:186;;:::o;5897:286::-;5983:1;5969:16;;:2;:16;;;;5961:25;;;;;;6006:16;6014:7;6006;:16::i;:::-;6005:17;5997:26;;;;;;6059:2;6036:11;:20;6048:7;6036:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;6096:28;6122:1;6096:17;:21;6114:2;6096:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;6072:17;:21;6090:2;6072:21;;;;;;;;;;;;;;;:52;;;;6167:7;6163:2;6142:33;;6159:1;6142:33;;;;;;;;;;;;5897:286;;:::o;9194:164::-;9298:10;:17;;;;9271:15;:24;9287:7;9271:24;;;;;;;;;;;:44;;;;9326:10;9342:7;9326:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;9326:24:0;;;;;;;;;;;;;;;;;;;;;;9194:164;:::o;2347:174::-;2407:4;2424:12;2478:7;2466:20;2458:28;;2512:1;2505:4;:8;2498:15;;;2347:174;;;:::o;6975:175::-;7075:1;7039:38;;:15;:24;7055:7;7039:24;;;;;;;;;;;;;;;;;;;;;:38;;;7035:108;;7129:1;7094:15;:24;7110:7;7094:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7035:108;6975:175;:::o;23324:807::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://12f40e8f6873a77aa4d62bc4fd44305ab46de5bc66b1f9135665e3fd1d2fba3a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.