ETH Price: $3,424.57 (-2.84%)
Gas: 3 Gwei

Contract

0xa10483Cb6e30763725BF8Bb4343E29222bb9Ce07
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Mint200774122024-06-12 18:02:475 days ago1718215367IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.0044666418.84565629
Mint199181742024-05-21 12:06:3527 days ago1716293195IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.0056804223.96683876
Mint199181732024-05-21 12:06:2327 days ago1716293183IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.005887324.83971008
Mint198988882024-05-18 19:22:5930 days ago1716060179IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.000735063.13847558
Mint198910422024-05-17 17:00:2331 days ago1715965223IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.002122578.95557223
Mint198910372024-05-17 16:59:2331 days ago1715965163IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.002135549.0102886
Mint198660042024-05-14 4:56:1135 days ago1715662571IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.000862393.68213306
Mint198643512024-05-13 23:23:3535 days ago1715642615IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.00105724.5138805
Mint198241902024-05-08 8:35:5941 days ago1715157359IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.00124475.25163499
Mint198212542024-05-07 22:45:3541 days ago1715121935IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.000880813.76074694
Mint198209932024-05-07 21:52:5941 days ago1715118779IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.00109784.63187043
Mint198208082024-05-07 21:15:1141 days ago1715116511IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001083594.57191091
Mint198208022024-05-07 21:13:5941 days ago1715116439IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001150174.85280084
Mint198143142024-05-06 23:26:5942 days ago1715038019IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.000938254.00599364
Mint198112922024-05-06 13:18:3542 days ago1715001515IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001559156.65701323
Mint198074852024-05-06 0:31:2343 days ago1714955483IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001143064.88047222
Mint198067192024-05-05 21:57:4743 days ago1714946267IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001008784.30713639
Mint197997792024-05-04 22:39:5944 days ago1714862399IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001059694.52451218
Mint197985832024-05-04 18:38:5944 days ago1714847939IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001271065.42700394
Mint197920592024-05-03 20:45:3545 days ago1714769135IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001612766.80455913
Mint197839362024-05-02 17:29:3546 days ago1714670975IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.0025708510.84695138
Mint197818572024-05-02 10:31:3547 days ago1714645895IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001578886.66162255
Mint197733822024-05-01 6:06:4748 days ago1714543607IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001494126.30399217
Mint197729692024-05-01 4:43:3548 days ago1714538615IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001502566.41539115
Mint197709492024-04-30 21:56:5948 days ago1714514219IN
0xa10483Cb...22bb9Ce07
0.1 ETH0.001808297.62953521
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
200774122024-06-12 18:02:475 days ago1718215367
0xa10483Cb...22bb9Ce07
0.1 ETH
199181742024-05-21 12:06:3527 days ago1716293195
0xa10483Cb...22bb9Ce07
0.1 ETH
199181732024-05-21 12:06:2327 days ago1716293183
0xa10483Cb...22bb9Ce07
0.1 ETH
198988882024-05-18 19:22:5930 days ago1716060179
0xa10483Cb...22bb9Ce07
0.1 ETH
198910422024-05-17 17:00:2331 days ago1715965223
0xa10483Cb...22bb9Ce07
0.1 ETH
198910372024-05-17 16:59:2331 days ago1715965163
0xa10483Cb...22bb9Ce07
0.1 ETH
198660042024-05-14 4:56:1135 days ago1715662571
0xa10483Cb...22bb9Ce07
0.1 ETH
198643512024-05-13 23:23:3535 days ago1715642615
0xa10483Cb...22bb9Ce07
0.1 ETH
198241902024-05-08 8:35:5941 days ago1715157359
0xa10483Cb...22bb9Ce07
0.1 ETH
198212542024-05-07 22:45:3541 days ago1715121935
0xa10483Cb...22bb9Ce07
0.1 ETH
198209932024-05-07 21:52:5941 days ago1715118779
0xa10483Cb...22bb9Ce07
0.1 ETH
198208082024-05-07 21:15:1141 days ago1715116511
0xa10483Cb...22bb9Ce07
0.1 ETH
198208022024-05-07 21:13:5941 days ago1715116439
0xa10483Cb...22bb9Ce07
0.1 ETH
198143142024-05-06 23:26:5942 days ago1715038019
0xa10483Cb...22bb9Ce07
0.1 ETH
198112922024-05-06 13:18:3542 days ago1715001515
0xa10483Cb...22bb9Ce07
0.1 ETH
198074852024-05-06 0:31:2343 days ago1714955483
0xa10483Cb...22bb9Ce07
0.1 ETH
198067192024-05-05 21:57:4743 days ago1714946267
0xa10483Cb...22bb9Ce07
0.1 ETH
197997792024-05-04 22:39:5944 days ago1714862399
0xa10483Cb...22bb9Ce07
0.1 ETH
197985832024-05-04 18:38:5944 days ago1714847939
0xa10483Cb...22bb9Ce07
0.1 ETH
197920592024-05-03 20:45:3545 days ago1714769135
0xa10483Cb...22bb9Ce07
0.1 ETH
197839362024-05-02 17:29:3546 days ago1714670975
0xa10483Cb...22bb9Ce07
0.1 ETH
197818572024-05-02 10:31:3547 days ago1714645895
0xa10483Cb...22bb9Ce07
0.1 ETH
197733822024-05-01 6:06:4748 days ago1714543607
0xa10483Cb...22bb9Ce07
0.1 ETH
197729692024-05-01 4:43:3548 days ago1714538615
0xa10483Cb...22bb9Ce07
0.1 ETH
197709492024-04-30 21:56:5948 days ago1714514219
0xa10483Cb...22bb9Ce07
0.1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ArtistProxy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : ArtistProxy.sol
//SPDX-License-Identifier: MIT

pragma solidity >=0.6.2;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

interface IBrainDrops {
   function mint(address recipient, uint _projectId) external payable returns (uint256);

   function updateProjectArtistName(uint256 _projectId, string memory _projectArtistName) external;

   function updateProjectDescription(uint256 _projectId, string memory _projectDescription) external;

   function updateProjectWebsite(uint256 _projectId, string memory _projectWebsite) external;

   function updateProjectLicense(uint256 _projectId, string memory _projectLicense) external;

   function updateProjectBaseURI(uint256 _projectId, string memory _projectBaseURI) external;

   function updateProjectPricePerTokenInWei(uint256 _projectId, uint256 _pricePerTokenInWei) external;

   function toggleProjectIsPaused(uint256 _projectId) external;

   function setProvenanceHash(uint256 _projectId, string memory provenanceHash) external;

   function balanceOf(address owner) external view returns (uint256 balance);

   function ownerOf(uint256 tokenId) external view returns (address owner);

   function isWhitelisted(address sender) external view returns (bool whitelisted);

   function transferFrom(address from, address to, uint256 tokenId) external;
}

interface IDelegationRegistry {
   function checkDelegateForContract(address delegate, address vault, address contract_) external returns(bool);
}

contract ArtistProxy is Ownable, ReentrancyGuard {
    constructor(address _braindropsAddress) {
      braindrops = IBrainDrops(_braindropsAddress);
    }

    IBrainDrops public braindrops;
    IDelegationRegistry public delegationRegistry;

    mapping(uint256 => mapping(address => bool)) public projectIdToProxyDropAddressMinted;

    mapping(uint256 => mapping(uint256 => bool)) public projectIdToGenesisDropTokenMinted;
    mapping(uint256 => mapping(uint256 => bool)) public projectIdToProjectSpecificHoldersTokenMinted;

    mapping(uint256 => address) public projectIdToArtistAddress;
    mapping(uint256 => bool) public projectIdToProjectActivated;
    mapping(uint256 => bool) public projectIdToHolderActivated;
    mapping(uint256 => bool) public projectIdToGenesisDropActivated;
    mapping(uint256 => bool) public projectIdToProjectIsAddressMintLimited;

    mapping(uint256 => uint256) public projectIdToOlderProjectId;

    modifier onlyArtist(uint256 _projectId) {
        require(msg.sender == projectIdToArtistAddress[_projectId], "Only artist");
        _;
    }

    modifier onlyArtistOrOwner(uint256 _projectId) {
        require(msg.sender == projectIdToArtistAddress[_projectId] || msg.sender == owner(), "Only artist or owner");
        _;
    }

    modifier onlyAllowListed() {
        require(braindrops.isWhitelisted(msg.sender), "Only allowListed");
        _;
    }

    modifier onlyHolders(uint256 _projectId) {
        require(braindrops.balanceOf(msg.sender) > 0, "Holders only");
        _;
    }

    function setDelegationRegistry(address _registryAddress) public onlyOwner {
      delegationRegistry = IDelegationRegistry(_registryAddress);
    }

    function setArtist(uint projectId, address artistAddress) public onlyAllowListed {
        projectIdToArtistAddress[projectId] = artistAddress;
    }

    function updateProjectArtistName(uint256 _projectId, string memory _projectArtistName) onlyArtist(_projectId) public {
        braindrops.updateProjectArtistName(_projectId, _projectArtistName);
    }

    function updateProjectDescription(uint256 _projectId, string memory _projectDescription) onlyArtist(_projectId) public {
        braindrops.updateProjectDescription(_projectId, _projectDescription);
    }

    function updateProjectWebsite(uint256 _projectId, string memory _projectWebsite) onlyArtist(_projectId) public {
        braindrops.updateProjectWebsite(_projectId, _projectWebsite);
    }

    function updateProjectLicense(uint256 _projectId, string memory _projectLicense) onlyArtist(_projectId) public {
        braindrops.updateProjectLicense(_projectId, _projectLicense);
    }

    function updateProjectBaseURI(uint256 _projectId, string memory _projectBaseURI) onlyArtist(_projectId) public {
        braindrops.updateProjectBaseURI(_projectId, _projectBaseURI);
    }

    function updateProjectPricePerTokenInWei(uint256 _projectId, uint256 _pricePerTokenInWei) onlyArtist(_projectId) public {
        braindrops.updateProjectPricePerTokenInWei(_projectId, _pricePerTokenInWei);
    }

    function toggleProjectIsPaused(uint256 _projectId) public onlyArtist(_projectId) {
        braindrops.toggleProjectIsPaused(_projectId);
    }

    function setProvenanceHash(uint256 _projectId, string memory provenanceHash) public onlyArtist(_projectId) {
        braindrops.setProvenanceHash(_projectId, provenanceHash);
    }

    function toggleProjectIsAddressMintLimited(uint256 _projectId) public onlyArtist(_projectId) {
        projectIdToProjectIsAddressMintLimited[_projectId] = !projectIdToProjectIsAddressMintLimited[_projectId];
    }

    function toggleProjectIsActive(uint256 _projectId) public onlyArtist(_projectId) {
        projectIdToProjectActivated[_projectId] = !projectIdToProjectActivated[_projectId];
    }

    function toggleProjectIsHolderActive(uint256 _projectId) public onlyArtist(_projectId) {
        projectIdToHolderActivated[_projectId] = !projectIdToHolderActivated[_projectId];
    }

    function toggleProjectIsGenesisDropActive(uint256 _projectId) public onlyArtist(_projectId) {
        projectIdToGenesisDropActivated[_projectId] = !projectIdToGenesisDropActivated[_projectId];
    }

    function setProjectIdToOlderProjectId(uint256 _projectId, uint256 _olderProjectId) public onlyArtist(_projectId) {
        projectIdToOlderProjectId[_projectId] = _olderProjectId;
    }

  function mintForArtistsOnly(address recipient, uint _projectId)
        public
        payable
        onlyArtist(_projectId)
        returns (uint256)
      {
          return braindrops.mint{value: msg.value}(recipient, _projectId);
      }

   function reserve(address recipient, uint _projectId, uint amount)
        public
        payable
        onlyArtistOrOwner(_projectId)
      {

          uint b;
          for (b = 0; b < amount; b++) {
            braindrops.mint{value: (msg.value / amount)}(recipient, _projectId);
          }
      }

  function mintForProjectSpecificHoldersOnly(address recipient, uint _projectId, uint _projectTokenId)
        public
        payable
        nonReentrant
        returns (uint256)
      {
          uint olderProjectId = projectIdToOlderProjectId[_projectId];
          require(olderProjectId > 0, "Project must be active for project-holder specific mints");

          uint _projectIdFromTokenId = (_projectTokenId - (_projectTokenId % 1000000)) / 1000000;
          require(_projectIdFromTokenId == olderProjectId, "must pass in a token id from the correct project");
          require(braindrops.ownerOf(_projectTokenId) == msg.sender, "sender must own token id passed in");

          require(projectIdToGenesisDropTokenMinted[_projectId][_projectTokenId] == false, "token already used to mint");

          projectIdToGenesisDropTokenMinted[_projectId][_projectTokenId] = true;

          return braindrops.mint{value: msg.value}(recipient, _projectId);
      }

  function mintForGenesisDropHoldersOnly(address recipient, uint _projectId, uint _project1TokenId, uint _project2TokenId, uint _project3TokenId, address _vault)
        public
        payable
        nonReentrant
        returns (uint256)
      {
          address requester = msg.sender;

          if (_vault != address(0)) {
            bool isDelegateValid = delegationRegistry.checkDelegateForContract(msg.sender, _vault, address(braindrops));
            require(isDelegateValid, "invalid delegate-vault pairing");
            requester = _vault;
          }

          require(projectIdToGenesisDropActivated[_projectId], "Project must be active for genesis set holders");

          uint _project1Id = (_project1TokenId - (_project1TokenId % 1000000)) / 1000000;
          require(_project1Id == 1, "must pass in a token id from project 1");
          require(projectIdToGenesisDropTokenMinted[_projectId][_project1TokenId] == false, "project 1 token already used to mint");

          uint _project2Id = (_project2TokenId - (_project2TokenId % 1000000)) / 1000000;
          require(_project2Id == 2, "must pass in a token id from project 2");
          require(projectIdToGenesisDropTokenMinted[_projectId][_project2TokenId] == false, "project 2 token already used to mint");

          uint _project3Id = (_project3TokenId - (_project3TokenId % 1000000)) / 1000000;
          require(_project3Id == 3, "must pass in a token id from project 3");
          require(projectIdToGenesisDropTokenMinted[_projectId][_project3TokenId] == false, "project 3 token already used to mint");

          require(braindrops.ownerOf(_project1TokenId) == requester, "must own the selected token from project 1");
          require(braindrops.ownerOf(_project2TokenId) == requester, "must own the selected token from project 2");
          require(braindrops.ownerOf(_project3TokenId) == requester, "must own the selected token from project 3");

          projectIdToGenesisDropTokenMinted[_projectId][_project1TokenId] = true;
          projectIdToGenesisDropTokenMinted[_projectId][_project2TokenId] = true;
          projectIdToGenesisDropTokenMinted[_projectId][_project3TokenId] = true;

          return braindrops.mint{value: msg.value}(recipient, _projectId);
      }

  function mintForHoldersOnly(address recipient, uint _projectId)
        public
        payable
        nonReentrant
        onlyHolders(_projectId)
        returns (uint256)
      {
          require(projectIdToHolderActivated[_projectId], "Project must be active for holders");

          return braindrops.mint{value: msg.value}(recipient, _projectId);
      }

  function mint(address recipient, uint _projectId)
        public
        payable
        nonReentrant
        returns (uint256)
      {
          require(tx.origin == msg.sender, "cannot be called from another contract");
          require(projectIdToProjectActivated[_projectId], "Project must be active");

          if (projectIdToProjectIsAddressMintLimited[_projectId]) {
            require(projectIdToProxyDropAddressMinted[_projectId][msg.sender] == false, "One mint per address");
            projectIdToProxyDropAddressMinted[_projectId][msg.sender] = true;
          }

          return braindrops.mint{value: msg.value}(recipient, _projectId);
      }

  function withdraw() public onlyOwner {
    uint balance = address(this).balance;
    payable(msg.sender).transfer(balance);
  }

}

File 2 of 4 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 4 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract 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() {
        _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;
    }
}

File 4 of 4 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_braindropsAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"braindrops","outputs":[{"internalType":"contract IBrainDrops","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delegationRegistry","outputs":[{"internalType":"contract IDelegationRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"mintForArtistsOnly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"_project1TokenId","type":"uint256"},{"internalType":"uint256","name":"_project2TokenId","type":"uint256"},{"internalType":"uint256","name":"_project3TokenId","type":"uint256"},{"internalType":"address","name":"_vault","type":"address"}],"name":"mintForGenesisDropHoldersOnly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"mintForHoldersOnly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"_projectTokenId","type":"uint256"}],"name":"mintForProjectSpecificHoldersOnly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToArtistAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToGenesisDropActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToGenesisDropTokenMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToHolderActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToOlderProjectId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToProjectActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToProjectIsAddressMintLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectIdToProjectSpecificHoldersTokenMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"projectIdToProxyDropAddressMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reserve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"address","name":"artistAddress","type":"address"}],"name":"setArtist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_registryAddress","type":"address"}],"name":"setDelegationRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"_olderProjectId","type":"uint256"}],"name":"setProjectIdToOlderProjectId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"provenanceHash","type":"string"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"toggleProjectIsActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"toggleProjectIsAddressMintLimited","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"toggleProjectIsGenesisDropActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"toggleProjectIsHolderActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"toggleProjectIsPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"_projectArtistName","type":"string"}],"name":"updateProjectArtistName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"_projectBaseURI","type":"string"}],"name":"updateProjectBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"_projectDescription","type":"string"}],"name":"updateProjectDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"_projectLicense","type":"string"}],"name":"updateProjectLicense","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"_pricePerTokenInWei","type":"uint256"}],"name":"updateProjectPricePerTokenInWei","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"_projectWebsite","type":"string"}],"name":"updateProjectWebsite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162004afd38038062004afd8339818101604052810190620000379190620001dc565b620000576200004b620000a660201b60201c565b620000ae60201b60201c565b6001808190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200020e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001a48262000177565b9050919050565b620001b68162000197565b8114620001c257600080fd5b50565b600081519050620001d681620001ab565b92915050565b600060208284031215620001f557620001f462000172565b5b60006200020584828501620001c5565b91505092915050565b6148df806200021e6000396000f3fe60806040526004361061020f5760003560e01c8063715018a611610118578063a6fadad9116100a0578063c8d7c0411161006f578063c8d7c0411461078f578063cbdcc724146107cc578063d03c390c14610809578063d76a386a14610832578063f2fde38b1461085b5761020f565b8063a6fadad9146106d0578063a8284c30146106f9578063aee9dfd814610729578063b7b04fae146107665761020f565b806397dc86cf116100e757806397dc86cf146105fc5780639e29dd3614610625578063a11ec70a14610641578063a3b2cca61461066a578063a47d29cb146106935761020f565b8063715018a61461056657806373aa9e941461057d57806382a41c12146105a65780638da5cb5b146105d15761020f565b8063283178011161019b5780633e276fd51161016a5780633e276fd51461048b5780633e30918c146104bb5780633e48e848146104e457806340c10f191461050d5780635d97d5151461053d5761020f565b806328317801146103d15780632ecf45041461040e578063378599631461044b5780633ccfd60b146104745761020f565b80631cadd032116101e25780631cadd032146102d35780631fbdd72d14610310578063200e81881461033b57806320895a791461036b57806325b75d68146103a85761020f565b806301ea4794146102145780630e0530c61461023d5780630ea066e8146102665780630ff9e2f314610296575b600080fd5b34801561022057600080fd5b5061023b6004803603810190610236919061340c565b610884565b005b34801561024957600080fd5b50610264600480360381019061025f9190613468565b6109ba565b005b610280600480360381019061027b91906134f3565b610aac565b60405161028d9190613555565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190613468565b610e32565b6040516102ca919061358b565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190613468565b610e52565b604051610307919061358b565b60405180910390f35b34801561031c57600080fd5b50610325610e72565b6040516103329190613605565b60405180910390f35b61035560048036038101906103509190613620565b610e98565b6040516103629190613555565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906136ad565b6117c3565b60405161039f919061358b565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca919061340c565b6117f2565b005b3480156103dd57600080fd5b506103f860048036038101906103f39190613468565b611928565b604051610405919061358b565b60405180910390f35b34801561041a57600080fd5b50610435600480360381019061043091906136ed565b611948565b604051610442919061358b565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d919061340c565b611977565b005b34801561048057600080fd5b50610489611aad565b005b6104a560048036038101906104a0919061372d565b611b78565b6040516104b29190613555565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906136ed565b611cc6565b005b3480156104f057600080fd5b5061050b6004803603810190610506919061340c565b611d85565b005b6105276004803603810190610522919061372d565b611ebb565b6040516105349190613555565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190613468565b6121bc565b005b34801561057257600080fd5b5061057b6122ae565b005b34801561058957600080fd5b506105a4600480360381019061059f919061376d565b612336565b005b3480156105b257600080fd5b506105bb6123f6565b6040516105c891906137bb565b60405180910390f35b3480156105dd57600080fd5b506105e661241c565b6040516105f391906137e5565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e91906136ed565b612445565b005b61063f600480360381019061063a91906134f3565b61257b565b005b34801561064d57600080fd5b5061066860048036038101906106639190613468565b61272c565b005b34801561067657600080fd5b50610691600480360381019061068c919061340c565b61285f565b005b34801561069f57600080fd5b506106ba60048036038101906106b59190613468565b612995565b6040516106c791906137e5565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613468565b6129c8565b005b610713600480360381019061070e919061372d565b612aba565b6040516107209190613555565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b91906136ed565b612cf9565b60405161075d919061358b565b60405180910390f35b34801561077257600080fd5b5061078d6004803603810190610788919061340c565b612d28565b005b34801561079b57600080fd5b506107b660048036038101906107b19190613468565b612e5e565b6040516107c39190613555565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190613468565b612e76565b604051610800919061358b565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190613468565b612e96565b005b34801561083e57600080fd5b50610859600480360381019061085491906136ad565b612f88565b005b34801561086757600080fd5b50610882600480360381019061087d919061376d565b6130b9565b005b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301ea479484846040518363ffffffff1660e01b81526004016109839291906138eb565b600060405180830381600087803b15801561099d57600080fd5b505af11580156109b1573d6000803e3d6000fd5b50505050505050565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a539061385d565b60405180910390fd5b600b600083815260200190815260200160002060009054906101000a900460ff1615600b600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260015403610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90613967565b60405180910390fd5b60026001819055506000600c600085815260200190815260200160002054905060008111610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d906139f9565b60405180910390fd5b6000620f42408085610b689190613a48565b85610b739190613aa8565b610b7d9190613adc565b9050818114610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb890613b7f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b8152600401610c339190613555565b602060405180830381865afa158015610c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c749190613bb4565b73ffffffffffffffffffffffffffffffffffffffff1614610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613c53565b60405180910390fd5b6000151560056000878152602001908152602001600020600086815260200190815260200160002060009054906101000a900460ff16151514610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990613cbf565b60405180910390fd5b600160056000878152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193488886040518463ffffffff1660e01b8152600401610ddd929190613cdf565b60206040518083038185885af1158015610dfb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e209190613d1d565b92505050600180819055509392505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260015403610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690613967565b60405180910390fd5b60026001819055506000339050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461102d576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c9a2d03386600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401610fa393929190613d4a565b6020604051808303816000875af1158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190613dad565b905080611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f90613e26565b60405180910390fd5b839150505b600a600088815260200190815260200160002060009054906101000a900460ff1661108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490613eb8565b60405180910390fd5b6000620f4240808861109f9190613a48565b886110aa9190613aa8565b6110b49190613adc565b9050600181146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f090613f4a565b60405180910390fd5b60001515600560008a8152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151514611171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116890613fdc565b60405180910390fd5b6000620f424080886111839190613a48565b8861118e9190613aa8565b6111989190613adc565b9050600281146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061406e565b60405180910390fd5b60001515600560008b8152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151514611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90614100565b60405180910390fd5b6000620f424080886112679190613a48565b886112729190613aa8565b61127c9190613adc565b9050600381146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890614192565b60405180910390fd5b60001515600560008c8152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151514611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090614224565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8b6040518263ffffffff1660e01b81526004016113ab9190613555565b602060405180830381865afa1580156113c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ec9190613bb4565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906142b6565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8a6040518263ffffffff1660e01b81526004016114b49190613555565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190613bb4565b73ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154290614348565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e896040518263ffffffff1660e01b81526004016115bd9190613555565b602060405180830381865afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe9190613bb4565b73ffffffffffffffffffffffffffffffffffffffff1614611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b906143da565b60405180910390fd5b6001600560008c815260200190815260200160002060008b815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008c815260200190815260200160002060008a815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008c8152602001908152602001600020600089815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19348d8d6040518463ffffffff1660e01b8152600401611769929190613cdf565b60206040518083038185885af1158015611787573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ac9190613d1d565b945050505050600180819055509695505050505050565b60046020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166325b75d6884846040518363ffffffff1660e01b81526004016118f19291906138eb565b600060405180830381600087803b15801561190b57600080fd5b505af115801561191f573d6000803e3d6000fd5b50505050505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a109061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633785996384846040518363ffffffff1660e01b8152600401611a769291906138eb565b600060405180830381600087803b158015611a9057600080fd5b505af1158015611aa4573d6000803e3d6000fd5b50505050505050565b611ab56131b0565b73ffffffffffffffffffffffffffffffffffffffff16611ad361241c565b73ffffffffffffffffffffffffffffffffffffffff1614611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2090614446565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b74573d6000803e3d6000fd5b5050565b6000816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193486866040518463ffffffff1660e01b8152600401611c7a929190613cdf565b60206040518083038185885af1158015611c98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cbd9190613d1d565b91505092915050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f9061385d565b60405180910390fd5b81600c600085815260200190815260200160002081905550505050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e48e84884846040518363ffffffff1660e01b8152600401611e849291906138eb565b600060405180830381600087803b158015611e9e57600080fd5b505af1158015611eb2573d6000803e3d6000fd5b50505050505050565b6000600260015403611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613967565b60405180910390fd5b60026001819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f906144d8565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900460ff16611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90614544565b60405180910390fd5b600b600083815260200190815260200160002060009054906101000a900460ff161561210c57600015156004600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146120a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612099906145b0565b60405180910390fd5b60016004600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193485856040518463ffffffff1660e01b815260040161216a929190613cdf565b60206040518083038185885af1158015612188573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121ad9190613d1d565b90506001808190555092915050565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461225e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122559061385d565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900460ff16156009600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122b66131b0565b73ffffffffffffffffffffffffffffffffffffffff166122d461241c565b73ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190614446565b60405180910390fd5b61233460006131b8565b565b61233e6131b0565b73ffffffffffffffffffffffffffffffffffffffff1661235c61241c565b73ffffffffffffffffffffffffffffffffffffffff16146123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990614446565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397dc86cf84846040518363ffffffff1660e01b81526004016125449291906145d0565b600060405180830381600087803b15801561255e57600080fd5b505af1158015612572573d6000803e3d6000fd5b50505050505050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061261b57506125ec61241c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61265a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265190614645565b60405180910390fd5b60005b8281101561272557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984346126af9190613adc565b87876040518463ffffffff1660e01b81526004016126ce929190613cdf565b60206040518083038185885af11580156126ec573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127119190613d1d565b50808061271d90614665565b91505061265d565b5050505050565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c59061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a11ec70a836040518263ffffffff1660e01b81526004016128299190613555565b600060405180830381600087803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b505050505050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f89061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b2cca684846040518363ffffffff1660e01b815260040161295e9291906138eb565b600060405180830381600087803b15801561297857600080fd5b505af115801561298c573d6000803e3d6000fd5b50505050505050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a619061385d565b60405180910390fd5b600a600083815260200190815260200160002060009054906101000a900460ff1615600a600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260015403612b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af890613967565b60405180910390fd5b6002600181905550816000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401612b6791906137e5565b602060405180830381865afa158015612b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba89190613d1d565b11612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdf906146f9565b60405180910390fd5b6009600084815260200190815260200160002060009054906101000a900460ff16612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f9061478b565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193486866040518463ffffffff1660e01b8152600401612ca6929190613cdf565b60206040518083038185885af1158015612cc4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ce99190613d1d565b9150506001808190555092915050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc19061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7b04fae84846040518363ffffffff1660e01b8152600401612e279291906138eb565b600060405180830381600087803b158015612e4157600080fd5b505af1158015612e55573d6000803e3d6000fd5b50505050505050565b600c6020528060005260406000206000915090505481565b60086020528060005260406000206000915054906101000a900460ff1681565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2f9061385d565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900460ff16156008600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf336040518263ffffffff1660e01b8152600401612fe391906137e5565b602060405180830381865afa158015613000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130249190613dad565b613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a906147f7565b60405180910390fd5b806007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6130c16131b0565b73ffffffffffffffffffffffffffffffffffffffff166130df61241c565b73ffffffffffffffffffffffffffffffffffffffff1614613135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312c90614446565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319b90614889565b60405180910390fd5b6131ad816131b8565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6132a381613290565b81146132ae57600080fd5b50565b6000813590506132c08161329a565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613319826132d0565b810181811067ffffffffffffffff82111715613338576133376132e1565b5b80604052505050565b600061334b61327c565b90506133578282613310565b919050565b600067ffffffffffffffff821115613377576133766132e1565b5b613380826132d0565b9050602081019050919050565b82818337600083830152505050565b60006133af6133aa8461335c565b613341565b9050828152602081018484840111156133cb576133ca6132cb565b5b6133d684828561338d565b509392505050565b600082601f8301126133f3576133f26132c6565b5b813561340384826020860161339c565b91505092915050565b6000806040838503121561342357613422613286565b5b6000613431858286016132b1565b925050602083013567ffffffffffffffff8111156134525761345161328b565b5b61345e858286016133de565b9150509250929050565b60006020828403121561347e5761347d613286565b5b600061348c848285016132b1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134c082613495565b9050919050565b6134d0816134b5565b81146134db57600080fd5b50565b6000813590506134ed816134c7565b92915050565b60008060006060848603121561350c5761350b613286565b5b600061351a868287016134de565b935050602061352b868287016132b1565b925050604061353c868287016132b1565b9150509250925092565b61354f81613290565b82525050565b600060208201905061356a6000830184613546565b92915050565b60008115159050919050565b61358581613570565b82525050565b60006020820190506135a0600083018461357c565b92915050565b6000819050919050565b60006135cb6135c66135c184613495565b6135a6565b613495565b9050919050565b60006135dd826135b0565b9050919050565b60006135ef826135d2565b9050919050565b6135ff816135e4565b82525050565b600060208201905061361a60008301846135f6565b92915050565b60008060008060008060c0878903121561363d5761363c613286565b5b600061364b89828a016134de565b965050602061365c89828a016132b1565b955050604061366d89828a016132b1565b945050606061367e89828a016132b1565b935050608061368f89828a016132b1565b92505060a06136a089828a016134de565b9150509295509295509295565b600080604083850312156136c4576136c3613286565b5b60006136d2858286016132b1565b92505060206136e3858286016134de565b9150509250929050565b6000806040838503121561370457613703613286565b5b6000613712858286016132b1565b9250506020613723858286016132b1565b9150509250929050565b6000806040838503121561374457613743613286565b5b6000613752858286016134de565b9250506020613763858286016132b1565b9150509250929050565b60006020828403121561378357613782613286565b5b6000613791848285016134de565b91505092915050565b60006137a5826135d2565b9050919050565b6137b58161379a565b82525050565b60006020820190506137d060008301846137ac565b92915050565b6137df816134b5565b82525050565b60006020820190506137fa60008301846137d6565b92915050565b600082825260208201905092915050565b7f4f6e6c7920617274697374000000000000000000000000000000000000000000600082015250565b6000613847600b83613800565b915061385282613811565b602082019050919050565b600060208201905081810360008301526138768161383a565b9050919050565b600081519050919050565b60005b838110156138a657808201518184015260208101905061388b565b60008484015250505050565b60006138bd8261387d565b6138c78185613800565b93506138d7818560208601613888565b6138e0816132d0565b840191505092915050565b60006040820190506139006000830185613546565b818103602083015261391281846138b2565b90509392505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613951601f83613800565b915061395c8261391b565b602082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b7f50726f6a656374206d7573742062652061637469766520666f722070726f6a6560008201527f63742d686f6c646572207370656369666963206d696e74730000000000000000602082015250565b60006139e3603883613800565b91506139ee82613987565b604082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5382613290565b9150613a5e83613290565b925082613a6e57613a6d613a19565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ab382613290565b9150613abe83613290565b9250828203905081811115613ad657613ad5613a79565b5b92915050565b6000613ae782613290565b9150613af283613290565b925082613b0257613b01613a19565b5b828204905092915050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2074686560008201527f20636f72726563742070726f6a65637400000000000000000000000000000000602082015250565b6000613b69603083613800565b9150613b7482613b0d565b604082019050919050565b60006020820190508181036000830152613b9881613b5c565b9050919050565b600081519050613bae816134c7565b92915050565b600060208284031215613bca57613bc9613286565b5b6000613bd884828501613b9f565b91505092915050565b7f73656e646572206d757374206f776e20746f6b656e206964207061737365642060008201527f696e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c3d602283613800565b9150613c4882613be1565b604082019050919050565b60006020820190508181036000830152613c6c81613c30565b9050919050565b7f746f6b656e20616c7265616479207573656420746f206d696e74000000000000600082015250565b6000613ca9601a83613800565b9150613cb482613c73565b602082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b6000604082019050613cf460008301856137d6565b613d016020830184613546565b9392505050565b600081519050613d178161329a565b92915050565b600060208284031215613d3357613d32613286565b5b6000613d4184828501613d08565b91505092915050565b6000606082019050613d5f60008301866137d6565b613d6c60208301856137d6565b613d7960408301846137d6565b949350505050565b613d8a81613570565b8114613d9557600080fd5b50565b600081519050613da781613d81565b92915050565b600060208284031215613dc357613dc2613286565b5b6000613dd184828501613d98565b91505092915050565b7f696e76616c69642064656c65676174652d7661756c742070616972696e670000600082015250565b6000613e10601e83613800565b9150613e1b82613dda565b602082019050919050565b60006020820190508181036000830152613e3f81613e03565b9050919050565b7f50726f6a656374206d7573742062652061637469766520666f722067656e657360008201527f69732073657420686f6c64657273000000000000000000000000000000000000602082015250565b6000613ea2602e83613800565b9150613ead82613e46565b604082019050919050565b60006020820190508181036000830152613ed181613e95565b9050919050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2070726f60008201527f6a65637420310000000000000000000000000000000000000000000000000000602082015250565b6000613f34602683613800565b9150613f3f82613ed8565b604082019050919050565b60006020820190508181036000830152613f6381613f27565b9050919050565b7f70726f6a656374203120746f6b656e20616c7265616479207573656420746f2060008201527f6d696e7400000000000000000000000000000000000000000000000000000000602082015250565b6000613fc6602483613800565b9150613fd182613f6a565b604082019050919050565b60006020820190508181036000830152613ff581613fb9565b9050919050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2070726f60008201527f6a65637420320000000000000000000000000000000000000000000000000000602082015250565b6000614058602683613800565b915061406382613ffc565b604082019050919050565b600060208201905081810360008301526140878161404b565b9050919050565b7f70726f6a656374203220746f6b656e20616c7265616479207573656420746f2060008201527f6d696e7400000000000000000000000000000000000000000000000000000000602082015250565b60006140ea602483613800565b91506140f58261408e565b604082019050919050565b60006020820190508181036000830152614119816140dd565b9050919050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2070726f60008201527f6a65637420330000000000000000000000000000000000000000000000000000602082015250565b600061417c602683613800565b915061418782614120565b604082019050919050565b600060208201905081810360008301526141ab8161416f565b9050919050565b7f70726f6a656374203320746f6b656e20616c7265616479207573656420746f2060008201527f6d696e7400000000000000000000000000000000000000000000000000000000602082015250565b600061420e602483613800565b9150614219826141b2565b604082019050919050565b6000602082019050818103600083015261423d81614201565b9050919050565b7f6d757374206f776e207468652073656c656374656420746f6b656e2066726f6d60008201527f2070726f6a656374203100000000000000000000000000000000000000000000602082015250565b60006142a0602a83613800565b91506142ab82614244565b604082019050919050565b600060208201905081810360008301526142cf81614293565b9050919050565b7f6d757374206f776e207468652073656c656374656420746f6b656e2066726f6d60008201527f2070726f6a656374203200000000000000000000000000000000000000000000602082015250565b6000614332602a83613800565b915061433d826142d6565b604082019050919050565b6000602082019050818103600083015261436181614325565b9050919050565b7f6d757374206f776e207468652073656c656374656420746f6b656e2066726f6d60008201527f2070726f6a656374203300000000000000000000000000000000000000000000602082015250565b60006143c4602a83613800565b91506143cf82614368565b604082019050919050565b600060208201905081810360008301526143f3816143b7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614430602083613800565b915061443b826143fa565b602082019050919050565b6000602082019050818103600083015261445f81614423565b9050919050565b7f63616e6e6f742062652063616c6c65642066726f6d20616e6f7468657220636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006144c2602683613800565b91506144cd82614466565b604082019050919050565b600060208201905081810360008301526144f1816144b5565b9050919050565b7f50726f6a656374206d7573742062652061637469766500000000000000000000600082015250565b600061452e601683613800565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f4f6e65206d696e74207065722061646472657373000000000000000000000000600082015250565b600061459a601483613800565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b60006040820190506145e56000830185613546565b6145f26020830184613546565b9392505050565b7f4f6e6c7920617274697374206f72206f776e6572000000000000000000000000600082015250565b600061462f601483613800565b915061463a826145f9565b602082019050919050565b6000602082019050818103600083015261465e81614622565b9050919050565b600061467082613290565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146a2576146a1613a79565b5b600182019050919050565b7f486f6c64657273206f6e6c790000000000000000000000000000000000000000600082015250565b60006146e3600c83613800565b91506146ee826146ad565b602082019050919050565b60006020820190508181036000830152614712816146d6565b9050919050565b7f50726f6a656374206d7573742062652061637469766520666f7220686f6c646560008201527f7273000000000000000000000000000000000000000000000000000000000000602082015250565b6000614775602283613800565b915061478082614719565b604082019050919050565b600060208201905081810360008301526147a481614768565b9050919050565b7f4f6e6c7920616c6c6f774c697374656400000000000000000000000000000000600082015250565b60006147e1601083613800565b91506147ec826147ab565b602082019050919050565b60006020820190508181036000830152614810816147d4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614873602683613800565b915061487e82614817565b604082019050919050565b600060208201905081810360008301526148a281614866565b905091905056fea26469706673582212200e4e3dab9d2e9534fd4a87355aa5c48c8184750280b1e7c8ccdb10ce585128a864736f6c63430008110033000000000000000000000000dfde78d2baec499fe18f2be74b6c287eed9511d7

Deployed Bytecode

0x60806040526004361061020f5760003560e01c8063715018a611610118578063a6fadad9116100a0578063c8d7c0411161006f578063c8d7c0411461078f578063cbdcc724146107cc578063d03c390c14610809578063d76a386a14610832578063f2fde38b1461085b5761020f565b8063a6fadad9146106d0578063a8284c30146106f9578063aee9dfd814610729578063b7b04fae146107665761020f565b806397dc86cf116100e757806397dc86cf146105fc5780639e29dd3614610625578063a11ec70a14610641578063a3b2cca61461066a578063a47d29cb146106935761020f565b8063715018a61461056657806373aa9e941461057d57806382a41c12146105a65780638da5cb5b146105d15761020f565b8063283178011161019b5780633e276fd51161016a5780633e276fd51461048b5780633e30918c146104bb5780633e48e848146104e457806340c10f191461050d5780635d97d5151461053d5761020f565b806328317801146103d15780632ecf45041461040e578063378599631461044b5780633ccfd60b146104745761020f565b80631cadd032116101e25780631cadd032146102d35780631fbdd72d14610310578063200e81881461033b57806320895a791461036b57806325b75d68146103a85761020f565b806301ea4794146102145780630e0530c61461023d5780630ea066e8146102665780630ff9e2f314610296575b600080fd5b34801561022057600080fd5b5061023b6004803603810190610236919061340c565b610884565b005b34801561024957600080fd5b50610264600480360381019061025f9190613468565b6109ba565b005b610280600480360381019061027b91906134f3565b610aac565b60405161028d9190613555565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190613468565b610e32565b6040516102ca919061358b565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190613468565b610e52565b604051610307919061358b565b60405180910390f35b34801561031c57600080fd5b50610325610e72565b6040516103329190613605565b60405180910390f35b61035560048036038101906103509190613620565b610e98565b6040516103629190613555565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906136ad565b6117c3565b60405161039f919061358b565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca919061340c565b6117f2565b005b3480156103dd57600080fd5b506103f860048036038101906103f39190613468565b611928565b604051610405919061358b565b60405180910390f35b34801561041a57600080fd5b50610435600480360381019061043091906136ed565b611948565b604051610442919061358b565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d919061340c565b611977565b005b34801561048057600080fd5b50610489611aad565b005b6104a560048036038101906104a0919061372d565b611b78565b6040516104b29190613555565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906136ed565b611cc6565b005b3480156104f057600080fd5b5061050b6004803603810190610506919061340c565b611d85565b005b6105276004803603810190610522919061372d565b611ebb565b6040516105349190613555565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190613468565b6121bc565b005b34801561057257600080fd5b5061057b6122ae565b005b34801561058957600080fd5b506105a4600480360381019061059f919061376d565b612336565b005b3480156105b257600080fd5b506105bb6123f6565b6040516105c891906137bb565b60405180910390f35b3480156105dd57600080fd5b506105e661241c565b6040516105f391906137e5565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e91906136ed565b612445565b005b61063f600480360381019061063a91906134f3565b61257b565b005b34801561064d57600080fd5b5061066860048036038101906106639190613468565b61272c565b005b34801561067657600080fd5b50610691600480360381019061068c919061340c565b61285f565b005b34801561069f57600080fd5b506106ba60048036038101906106b59190613468565b612995565b6040516106c791906137e5565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613468565b6129c8565b005b610713600480360381019061070e919061372d565b612aba565b6040516107209190613555565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b91906136ed565b612cf9565b60405161075d919061358b565b60405180910390f35b34801561077257600080fd5b5061078d6004803603810190610788919061340c565b612d28565b005b34801561079b57600080fd5b506107b660048036038101906107b19190613468565b612e5e565b6040516107c39190613555565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190613468565b612e76565b604051610800919061358b565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190613468565b612e96565b005b34801561083e57600080fd5b50610859600480360381019061085491906136ad565b612f88565b005b34801561086757600080fd5b50610882600480360381019061087d919061376d565b6130b9565b005b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301ea479484846040518363ffffffff1660e01b81526004016109839291906138eb565b600060405180830381600087803b15801561099d57600080fd5b505af11580156109b1573d6000803e3d6000fd5b50505050505050565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a539061385d565b60405180910390fd5b600b600083815260200190815260200160002060009054906101000a900460ff1615600b600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260015403610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90613967565b60405180910390fd5b60026001819055506000600c600085815260200190815260200160002054905060008111610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d906139f9565b60405180910390fd5b6000620f42408085610b689190613a48565b85610b739190613aa8565b610b7d9190613adc565b9050818114610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb890613b7f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b8152600401610c339190613555565b602060405180830381865afa158015610c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c749190613bb4565b73ffffffffffffffffffffffffffffffffffffffff1614610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613c53565b60405180910390fd5b6000151560056000878152602001908152602001600020600086815260200190815260200160002060009054906101000a900460ff16151514610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990613cbf565b60405180910390fd5b600160056000878152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193488886040518463ffffffff1660e01b8152600401610ddd929190613cdf565b60206040518083038185885af1158015610dfb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e209190613d1d565b92505050600180819055509392505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260015403610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690613967565b60405180910390fd5b60026001819055506000339050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461102d576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c9a2d03386600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401610fa393929190613d4a565b6020604051808303816000875af1158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190613dad565b905080611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f90613e26565b60405180910390fd5b839150505b600a600088815260200190815260200160002060009054906101000a900460ff1661108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490613eb8565b60405180910390fd5b6000620f4240808861109f9190613a48565b886110aa9190613aa8565b6110b49190613adc565b9050600181146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f090613f4a565b60405180910390fd5b60001515600560008a8152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151514611171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116890613fdc565b60405180910390fd5b6000620f424080886111839190613a48565b8861118e9190613aa8565b6111989190613adc565b9050600281146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061406e565b60405180910390fd5b60001515600560008b8152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151514611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90614100565b60405180910390fd5b6000620f424080886112679190613a48565b886112729190613aa8565b61127c9190613adc565b9050600381146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890614192565b60405180910390fd5b60001515600560008c8152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151514611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090614224565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8b6040518263ffffffff1660e01b81526004016113ab9190613555565b602060405180830381865afa1580156113c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ec9190613bb4565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906142b6565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8a6040518263ffffffff1660e01b81526004016114b49190613555565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190613bb4565b73ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154290614348565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e896040518263ffffffff1660e01b81526004016115bd9190613555565b602060405180830381865afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe9190613bb4565b73ffffffffffffffffffffffffffffffffffffffff1614611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b906143da565b60405180910390fd5b6001600560008c815260200190815260200160002060008b815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008c815260200190815260200160002060008a815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008c8152602001908152602001600020600089815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19348d8d6040518463ffffffff1660e01b8152600401611769929190613cdf565b60206040518083038185885af1158015611787573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ac9190613d1d565b945050505050600180819055509695505050505050565b60046020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166325b75d6884846040518363ffffffff1660e01b81526004016118f19291906138eb565b600060405180830381600087803b15801561190b57600080fd5b505af115801561191f573d6000803e3d6000fd5b50505050505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a109061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633785996384846040518363ffffffff1660e01b8152600401611a769291906138eb565b600060405180830381600087803b158015611a9057600080fd5b505af1158015611aa4573d6000803e3d6000fd5b50505050505050565b611ab56131b0565b73ffffffffffffffffffffffffffffffffffffffff16611ad361241c565b73ffffffffffffffffffffffffffffffffffffffff1614611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2090614446565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b74573d6000803e3d6000fd5b5050565b6000816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193486866040518463ffffffff1660e01b8152600401611c7a929190613cdf565b60206040518083038185885af1158015611c98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cbd9190613d1d565b91505092915050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f9061385d565b60405180910390fd5b81600c600085815260200190815260200160002081905550505050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e48e84884846040518363ffffffff1660e01b8152600401611e849291906138eb565b600060405180830381600087803b158015611e9e57600080fd5b505af1158015611eb2573d6000803e3d6000fd5b50505050505050565b6000600260015403611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613967565b60405180910390fd5b60026001819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f906144d8565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900460ff16611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90614544565b60405180910390fd5b600b600083815260200190815260200160002060009054906101000a900460ff161561210c57600015156004600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146120a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612099906145b0565b60405180910390fd5b60016004600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193485856040518463ffffffff1660e01b815260040161216a929190613cdf565b60206040518083038185885af1158015612188573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121ad9190613d1d565b90506001808190555092915050565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461225e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122559061385d565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900460ff16156009600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122b66131b0565b73ffffffffffffffffffffffffffffffffffffffff166122d461241c565b73ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190614446565b60405180910390fd5b61233460006131b8565b565b61233e6131b0565b73ffffffffffffffffffffffffffffffffffffffff1661235c61241c565b73ffffffffffffffffffffffffffffffffffffffff16146123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990614446565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de9061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397dc86cf84846040518363ffffffff1660e01b81526004016125449291906145d0565b600060405180830381600087803b15801561255e57600080fd5b505af1158015612572573d6000803e3d6000fd5b50505050505050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061261b57506125ec61241c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61265a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265190614645565b60405180910390fd5b60005b8281101561272557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984346126af9190613adc565b87876040518463ffffffff1660e01b81526004016126ce929190613cdf565b60206040518083038185885af11580156126ec573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127119190613d1d565b50808061271d90614665565b91505061265d565b5050505050565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c59061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a11ec70a836040518263ffffffff1660e01b81526004016128299190613555565b600060405180830381600087803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b505050505050565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f89061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b2cca684846040518363ffffffff1660e01b815260040161295e9291906138eb565b600060405180830381600087803b15801561297857600080fd5b505af115801561298c573d6000803e3d6000fd5b50505050505050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a619061385d565b60405180910390fd5b600a600083815260200190815260200160002060009054906101000a900460ff1615600a600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260015403612b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af890613967565b60405180910390fd5b6002600181905550816000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401612b6791906137e5565b602060405180830381865afa158015612b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba89190613d1d565b11612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdf906146f9565b60405180910390fd5b6009600084815260200190815260200160002060009054906101000a900460ff16612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f9061478b565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193486866040518463ffffffff1660e01b8152600401612ca6929190613cdf565b60206040518083038185885af1158015612cc4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ce99190613d1d565b9150506001808190555092915050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b816007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc19061385d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7b04fae84846040518363ffffffff1660e01b8152600401612e279291906138eb565b600060405180830381600087803b158015612e4157600080fd5b505af1158015612e55573d6000803e3d6000fd5b50505050505050565b600c6020528060005260406000206000915090505481565b60086020528060005260406000206000915054906101000a900460ff1681565b806007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2f9061385d565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900460ff16156008600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf336040518263ffffffff1660e01b8152600401612fe391906137e5565b602060405180830381865afa158015613000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130249190613dad565b613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a906147f7565b60405180910390fd5b806007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6130c16131b0565b73ffffffffffffffffffffffffffffffffffffffff166130df61241c565b73ffffffffffffffffffffffffffffffffffffffff1614613135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312c90614446565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036131a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319b90614889565b60405180910390fd5b6131ad816131b8565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6132a381613290565b81146132ae57600080fd5b50565b6000813590506132c08161329a565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613319826132d0565b810181811067ffffffffffffffff82111715613338576133376132e1565b5b80604052505050565b600061334b61327c565b90506133578282613310565b919050565b600067ffffffffffffffff821115613377576133766132e1565b5b613380826132d0565b9050602081019050919050565b82818337600083830152505050565b60006133af6133aa8461335c565b613341565b9050828152602081018484840111156133cb576133ca6132cb565b5b6133d684828561338d565b509392505050565b600082601f8301126133f3576133f26132c6565b5b813561340384826020860161339c565b91505092915050565b6000806040838503121561342357613422613286565b5b6000613431858286016132b1565b925050602083013567ffffffffffffffff8111156134525761345161328b565b5b61345e858286016133de565b9150509250929050565b60006020828403121561347e5761347d613286565b5b600061348c848285016132b1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134c082613495565b9050919050565b6134d0816134b5565b81146134db57600080fd5b50565b6000813590506134ed816134c7565b92915050565b60008060006060848603121561350c5761350b613286565b5b600061351a868287016134de565b935050602061352b868287016132b1565b925050604061353c868287016132b1565b9150509250925092565b61354f81613290565b82525050565b600060208201905061356a6000830184613546565b92915050565b60008115159050919050565b61358581613570565b82525050565b60006020820190506135a0600083018461357c565b92915050565b6000819050919050565b60006135cb6135c66135c184613495565b6135a6565b613495565b9050919050565b60006135dd826135b0565b9050919050565b60006135ef826135d2565b9050919050565b6135ff816135e4565b82525050565b600060208201905061361a60008301846135f6565b92915050565b60008060008060008060c0878903121561363d5761363c613286565b5b600061364b89828a016134de565b965050602061365c89828a016132b1565b955050604061366d89828a016132b1565b945050606061367e89828a016132b1565b935050608061368f89828a016132b1565b92505060a06136a089828a016134de565b9150509295509295509295565b600080604083850312156136c4576136c3613286565b5b60006136d2858286016132b1565b92505060206136e3858286016134de565b9150509250929050565b6000806040838503121561370457613703613286565b5b6000613712858286016132b1565b9250506020613723858286016132b1565b9150509250929050565b6000806040838503121561374457613743613286565b5b6000613752858286016134de565b9250506020613763858286016132b1565b9150509250929050565b60006020828403121561378357613782613286565b5b6000613791848285016134de565b91505092915050565b60006137a5826135d2565b9050919050565b6137b58161379a565b82525050565b60006020820190506137d060008301846137ac565b92915050565b6137df816134b5565b82525050565b60006020820190506137fa60008301846137d6565b92915050565b600082825260208201905092915050565b7f4f6e6c7920617274697374000000000000000000000000000000000000000000600082015250565b6000613847600b83613800565b915061385282613811565b602082019050919050565b600060208201905081810360008301526138768161383a565b9050919050565b600081519050919050565b60005b838110156138a657808201518184015260208101905061388b565b60008484015250505050565b60006138bd8261387d565b6138c78185613800565b93506138d7818560208601613888565b6138e0816132d0565b840191505092915050565b60006040820190506139006000830185613546565b818103602083015261391281846138b2565b90509392505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613951601f83613800565b915061395c8261391b565b602082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b7f50726f6a656374206d7573742062652061637469766520666f722070726f6a6560008201527f63742d686f6c646572207370656369666963206d696e74730000000000000000602082015250565b60006139e3603883613800565b91506139ee82613987565b604082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5382613290565b9150613a5e83613290565b925082613a6e57613a6d613a19565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ab382613290565b9150613abe83613290565b9250828203905081811115613ad657613ad5613a79565b5b92915050565b6000613ae782613290565b9150613af283613290565b925082613b0257613b01613a19565b5b828204905092915050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2074686560008201527f20636f72726563742070726f6a65637400000000000000000000000000000000602082015250565b6000613b69603083613800565b9150613b7482613b0d565b604082019050919050565b60006020820190508181036000830152613b9881613b5c565b9050919050565b600081519050613bae816134c7565b92915050565b600060208284031215613bca57613bc9613286565b5b6000613bd884828501613b9f565b91505092915050565b7f73656e646572206d757374206f776e20746f6b656e206964207061737365642060008201527f696e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c3d602283613800565b9150613c4882613be1565b604082019050919050565b60006020820190508181036000830152613c6c81613c30565b9050919050565b7f746f6b656e20616c7265616479207573656420746f206d696e74000000000000600082015250565b6000613ca9601a83613800565b9150613cb482613c73565b602082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b6000604082019050613cf460008301856137d6565b613d016020830184613546565b9392505050565b600081519050613d178161329a565b92915050565b600060208284031215613d3357613d32613286565b5b6000613d4184828501613d08565b91505092915050565b6000606082019050613d5f60008301866137d6565b613d6c60208301856137d6565b613d7960408301846137d6565b949350505050565b613d8a81613570565b8114613d9557600080fd5b50565b600081519050613da781613d81565b92915050565b600060208284031215613dc357613dc2613286565b5b6000613dd184828501613d98565b91505092915050565b7f696e76616c69642064656c65676174652d7661756c742070616972696e670000600082015250565b6000613e10601e83613800565b9150613e1b82613dda565b602082019050919050565b60006020820190508181036000830152613e3f81613e03565b9050919050565b7f50726f6a656374206d7573742062652061637469766520666f722067656e657360008201527f69732073657420686f6c64657273000000000000000000000000000000000000602082015250565b6000613ea2602e83613800565b9150613ead82613e46565b604082019050919050565b60006020820190508181036000830152613ed181613e95565b9050919050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2070726f60008201527f6a65637420310000000000000000000000000000000000000000000000000000602082015250565b6000613f34602683613800565b9150613f3f82613ed8565b604082019050919050565b60006020820190508181036000830152613f6381613f27565b9050919050565b7f70726f6a656374203120746f6b656e20616c7265616479207573656420746f2060008201527f6d696e7400000000000000000000000000000000000000000000000000000000602082015250565b6000613fc6602483613800565b9150613fd182613f6a565b604082019050919050565b60006020820190508181036000830152613ff581613fb9565b9050919050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2070726f60008201527f6a65637420320000000000000000000000000000000000000000000000000000602082015250565b6000614058602683613800565b915061406382613ffc565b604082019050919050565b600060208201905081810360008301526140878161404b565b9050919050565b7f70726f6a656374203220746f6b656e20616c7265616479207573656420746f2060008201527f6d696e7400000000000000000000000000000000000000000000000000000000602082015250565b60006140ea602483613800565b91506140f58261408e565b604082019050919050565b60006020820190508181036000830152614119816140dd565b9050919050565b7f6d757374207061737320696e206120746f6b656e2069642066726f6d2070726f60008201527f6a65637420330000000000000000000000000000000000000000000000000000602082015250565b600061417c602683613800565b915061418782614120565b604082019050919050565b600060208201905081810360008301526141ab8161416f565b9050919050565b7f70726f6a656374203320746f6b656e20616c7265616479207573656420746f2060008201527f6d696e7400000000000000000000000000000000000000000000000000000000602082015250565b600061420e602483613800565b9150614219826141b2565b604082019050919050565b6000602082019050818103600083015261423d81614201565b9050919050565b7f6d757374206f776e207468652073656c656374656420746f6b656e2066726f6d60008201527f2070726f6a656374203100000000000000000000000000000000000000000000602082015250565b60006142a0602a83613800565b91506142ab82614244565b604082019050919050565b600060208201905081810360008301526142cf81614293565b9050919050565b7f6d757374206f776e207468652073656c656374656420746f6b656e2066726f6d60008201527f2070726f6a656374203200000000000000000000000000000000000000000000602082015250565b6000614332602a83613800565b915061433d826142d6565b604082019050919050565b6000602082019050818103600083015261436181614325565b9050919050565b7f6d757374206f776e207468652073656c656374656420746f6b656e2066726f6d60008201527f2070726f6a656374203300000000000000000000000000000000000000000000602082015250565b60006143c4602a83613800565b91506143cf82614368565b604082019050919050565b600060208201905081810360008301526143f3816143b7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614430602083613800565b915061443b826143fa565b602082019050919050565b6000602082019050818103600083015261445f81614423565b9050919050565b7f63616e6e6f742062652063616c6c65642066726f6d20616e6f7468657220636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006144c2602683613800565b91506144cd82614466565b604082019050919050565b600060208201905081810360008301526144f1816144b5565b9050919050565b7f50726f6a656374206d7573742062652061637469766500000000000000000000600082015250565b600061452e601683613800565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f4f6e65206d696e74207065722061646472657373000000000000000000000000600082015250565b600061459a601483613800565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b60006040820190506145e56000830185613546565b6145f26020830184613546565b9392505050565b7f4f6e6c7920617274697374206f72206f776e6572000000000000000000000000600082015250565b600061462f601483613800565b915061463a826145f9565b602082019050919050565b6000602082019050818103600083015261465e81614622565b9050919050565b600061467082613290565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146a2576146a1613a79565b5b600182019050919050565b7f486f6c64657273206f6e6c790000000000000000000000000000000000000000600082015250565b60006146e3600c83613800565b91506146ee826146ad565b602082019050919050565b60006020820190508181036000830152614712816146d6565b9050919050565b7f50726f6a656374206d7573742062652061637469766520666f7220686f6c646560008201527f7273000000000000000000000000000000000000000000000000000000000000602082015250565b6000614775602283613800565b915061478082614719565b604082019050919050565b600060208201905081810360008301526147a481614768565b9050919050565b7f4f6e6c7920616c6c6f774c697374656400000000000000000000000000000000600082015250565b60006147e1601083613800565b91506147ec826147ab565b602082019050919050565b60006020820190508181036000830152614810816147d4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614873602683613800565b915061487e82614817565b604082019050919050565b600060208201905081810360008301526148a281614866565b905091905056fea26469706673582212200e4e3dab9d2e9534fd4a87355aa5c48c8184750280b1e7c8ccdb10ce585128a864736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000dfde78d2baec499fe18f2be74b6c287eed9511d7

-----Decoded View---------------
Arg [0] : _braindropsAddress (address): 0xdFDE78d2baEc499fe18f2bE74B6c287eED9511d7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dfde78d2baec499fe18f2be74b6c287eed9511d7


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.