ETH Price: $2,383.80 (-2.39%)

Token

EtherScrolls (ES)
 

Overview

Max Total Supply

259 ES

Holders

37

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 ES
0xc960c705300004fdf99a6c0060b5c9601ecc3e8e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EtherScrolls

Compiler Version
v0.4.20-nightly.2018.1.6+commit.2548228b

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-21
*/

pragma solidity ^0.4.19;

contract Card { 

    // the erc721 standard of an Ether Scrolls card
    event Transfer(address indexed from, address indexed to, uint indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint indexed tokenId);
    event CardCreated(address indexed owner, uint cardNumber, uint craftedFromLeft, uint craftedFromRight);
    event Gift(uint cardId, address sender, address reciever);

    address public masterAddress1;
    address public masterAddress2;
    address public withdrawAddress;

    struct CardStructure {
        uint16[16] runes;
        uint16[16] powers;
        uint64 createdAt;
        uint64 canCraftAt;
        uint32 craftedFromLeft;
        uint32 craftedFromRight;
        uint difficulty;
        uint16 generation;
    }

    CardStructure[] allCards;

    // erc721 used to id owner
    mapping (uint => address) public indexToOwner; 

    // part of erc721. used for balanceOf
    mapping (address => uint) ownershipCount;

    // part of erc721 used for approval
    mapping (uint => address) public indexToApproved;

    function _transfer(address _from, address _to, uint _tokenId) internal {
     
        ownershipCount[_to]++;
        indexToOwner[_tokenId] = _to;
        // dont record any transfers from the contract itself
        if (_from != address(this)) {
            ownershipCount[_from]--;
        }
        Transfer(_from, _to, _tokenId);
    }
 
    modifier masterRestricted() {
        require(msg.sender == masterAddress1 || msg.sender == masterAddress2);
        _;
    }

   function getCard(uint _id) public view returns ( uint difficulty, uint canCraftAt, 
   uint createdAt, uint craftedFromLeft, uint craftedFromRight, uint generation, uint16[16] runes, uint16[16] powers,
   address owner) {
      CardStructure storage card = allCards[_id];
      difficulty = uint(card.difficulty);
      canCraftAt = uint(card.canCraftAt);
      createdAt = uint(card.createdAt);
      craftedFromLeft = uint(card.craftedFromLeft);
      craftedFromRight = uint(card.craftedFromRight);
      generation = uint(card.generation);
      runes = card.runes;
      powers = uint16[16](card.powers);
      owner = address(indexToOwner[_id]);
    }

    function _createCard(uint16[16] _runes, uint16[16] _powers, uint _craftedFromLeft, uint _craftedFromRight, uint _generation, 
    address _owner) internal returns (uint) {

        CardStructure memory card = CardStructure({
            runes: uint16[16](_runes),
            powers: uint16[16](_powers),
            createdAt: uint64(now),
            canCraftAt: 0,
            craftedFromLeft: uint32(_craftedFromLeft),
            craftedFromRight: uint32(_craftedFromRight),
            difficulty: 0,
            generation: uint16(_generation)
        });
        
        uint cardNumber = allCards.push(card) - 1;

        CardCreated(_owner, cardNumber, uint(card.craftedFromLeft), uint(card.craftedFromRight));
        _transfer(this, _owner, cardNumber);
        return cardNumber;
    }

    string public name = "EtherScrolls";
    string public symbol = "ES";

    function implementsERC721() public pure returns (bool) {
        return true;
    }

    function _owns(address _claimant, uint _tokenId) internal view returns (bool) {
        return indexToOwner[_tokenId] == _claimant;
    }

    function hasBeenApproved(address _claimant, uint _tokenId) public view returns (bool) {
        return indexToApproved[_tokenId] == _claimant;
    }

    function _approve(uint _tokenId, address _approved) internal {
        indexToApproved[_tokenId] = _approved;
    }

    function balanceOf(address _owner) public view returns (uint count) {
        return ownershipCount[_owner];
    }

    function transfer(address _to, uint _tokenId) public {
        require(_owns(msg.sender, _tokenId));
        require(_to != address(0));
        _transfer(msg.sender, _to, _tokenId);
    }

    function approve(address _to, uint _tokenId) public {
        require(_owns(msg.sender, _tokenId));
        _approve(_tokenId, _to);
        Approval(msg.sender, _to, _tokenId);
    }

    function transferFrom(address _from, address _to, uint _tokenId) public {
        require(_owns(_from, _tokenId));    
        require(hasBeenApproved(msg.sender, _tokenId));
        _transfer(_from, _to, _tokenId);
    }

    function totalSupply() public view returns (uint) {
        return allCards.length - 1;
    }

    function ownerOf(uint _tokenId) public view returns (address) {
        address owner = indexToOwner[_tokenId];
        require(owner != address(0));
        return owner;
    }
}

contract CraftingInterface {
    function craft(uint16[16] leftParentRunes, uint16[16] leftParentPowers, uint16[16] rightParentRunes, uint16[16] rightParentPowers) public view returns (uint16[16], uint16[16]);
}

contract DutchAuctionInterface {
    function DutchAuction(address etherScrollsAddressess, address _master1, address _master2) public;
    function payMasters() external;
    function isForAuction(uint card) public view returns (bool);
    function getCurrentPrice(uint cardNumber) public view returns (uint);
    function isValidAuction(uint card) public view returns (bool);
    function getAuction(uint cardNumber) public view returns(uint startingPrice, uint endingPrice, uint duration, address seller,uint startedAt );
    function getSellerOfToken(uint cardNumber) public view returns (address);
}

contract DutchAuctionToBuyInterface is DutchAuctionInterface {
    function DutchAuctionToBuy(address etherScrollsAddress, address master1, address master2) public;// DutchAuctionInterface(etherScrollsAddress, master1, master2);
    function startAuction(uint cardNumber, uint startPrice, uint endPrice, uint duration, address seller) public;
    function priceOfOfficalCardSold() public view returns (uint);
    function bidFromEtherScrolls(uint cardNumber, address buyer) public payable;
    function cancelBuyAuction(uint cardNumber, address requestor) public;
}

contract DutchAuctionToCraftInterface is DutchAuctionInterface {
    function DutchAuctionToCraft(address etherScrollsAddress, address master1, address master2) public;// DutchAuctionInterface(etherScrollsAddress, master1, master2);
    function startAuction(uint cardNumber, uint startPrice, uint endPrice, uint duration, address seller) public;
    function priceOfOfficalCardSold() public view returns (uint);
    function placeBidFromEtherScrolls(uint _tokenId) public payable;
    function cancelCraftAuction(uint cardNumber, address requestor) public;
}

contract CardMarket is Card { 

    mapping (uint => uint) public numberOfBasesSold;
    mapping (uint => uint) public numberOfAbilitiesSold;
    uint16 lastAbilityToBeAddedToCirculation;
    uint16 lastBaseToBeAddedToCirculation;
    uint16[] arrayOfPossibleBases;
    uint16[] arrayOfPossibleAbilities;
    CraftingInterface public crafting;
    uint maxRunes;
    uint numberOfSpecialCardsCreated;
     
    DutchAuctionToBuyInterface public dutchAuctionToBuy;
    DutchAuctionToCraftInterface public dutchAuctionToCraft;

    function CardMarket(address master1, address master2, address inputWithdrawAddress) public {
        
        masterAddress1 = master1;
        masterAddress2 = master2;
        withdrawAddress = inputWithdrawAddress;

        uint16[16] memory firstCard;

        _createCard(firstCard, firstCard, 0, 0, 0, master1);

        maxRunes = 300;

        arrayOfPossibleBases = [uint16(0),uint16(1),uint16(2),uint16(3),uint16(4),uint16(5),
        uint16(6),uint16(7),uint16(8),uint16(9),uint16(10),uint16(11),uint16(12),uint16(13),
        uint16(14),uint16(15),uint16(16),uint16(17),uint16(18),uint16(19)];

        lastBaseToBeAddedToCirculation = 19;

        arrayOfPossibleAbilities = [uint16(0),uint16(1),uint16(2),uint16(3),uint16(4),uint16(5),
        uint16(6),uint16(7),uint16(8),uint16(9),uint16(10),uint16(11),uint16(12),uint16(13),
        uint16(14),uint16(15),uint16(16),uint16(17),uint16(18),uint16(19)];

        lastAbilityToBeAddedToCirculation = 19;
    }

    function getBases() public view returns (uint16[]) {
        return arrayOfPossibleBases;
    }

     function getAbilities() public view returns (uint16[]) {
        return arrayOfPossibleAbilities;
    }

    // only a max of 250 Initial cards can ever be created
    function createInitialCards(uint32 count, uint16 base, uint16 ability) public masterRestricted {

        uint16[16] memory bases = [uint16(0), uint16(1), uint16(2), uint16(3), uint16(4), uint16(5),uint16(6), uint16(0),
        uint16(1), uint16(2), uint16(3),uint16(4), uint16(5),uint16(6), base, ability];
        uint16[16] memory powers = [uint16(35), uint16(20), uint16(10), uint16(5), uint16(5), uint16(5), uint16(1), uint16(35),
        uint16(21), uint16(14), uint16(10),uint16(9), uint16(8), uint16(3), uint16(9), uint16(7)];
      
        for (uint i = 0; i < count; i++) {
           
            if (base == 0) {
                bases[14] = uint16((uint(block.blockhash(block.number - i - 1)) % 20));
                bases[15] = uint16((uint(block.blockhash(block.number - i - 2)) % 20));
            }
            powers[14] = uint16((uint(block.blockhash(block.number - i - 3)) % 9) + 1);
            powers[15] = uint16((uint(block.blockhash(block.number - i - 4)) % 9) + 1);

            if (numberOfSpecialCardsCreated < 250) {
                _createCard(bases, powers, 0, 0, 0, msg.sender);
                numberOfSpecialCardsCreated++;
            }
        }
    }

    function withdraw() public {
        require(msg.sender == masterAddress1 || msg.sender == masterAddress2 || msg.sender == withdrawAddress);
        dutchAuctionToBuy.payMasters();
        dutchAuctionToCraft.payMasters();
        uint halfOfFunds = this.balance / 2;
        masterAddress1.transfer(halfOfFunds);
        masterAddress2.transfer(halfOfFunds);
    }   

    function setBuyAuctionAddress(address _address) public masterRestricted {
        dutchAuctionToBuy = DutchAuctionToBuyInterface(_address);
    }

    function setCraftAuctionAddress(address _address) public masterRestricted {
        dutchAuctionToCraft = DutchAuctionToCraftInterface(_address);
    }

    function setMasterAddress1(address _newMaster) public {
        require(msg.sender == masterAddress1);
        masterAddress1 = _newMaster;
    }

    function setMasterAddress2(address _newMaster) public {
        require(msg.sender == masterAddress2);
        masterAddress2 = _newMaster;
    }

    function cancelAuctionToBuy(uint cardId) public {
        dutchAuctionToBuy.cancelBuyAuction(cardId, msg.sender);
    }

    function cancelCraftingAuction(uint cardId) public {
        dutchAuctionToCraft.cancelCraftAuction(cardId, msg.sender);
    }

    function createDutchAuctionToBuy(uint _cardNumber, uint startPrice, 
    uint endPrice, uint _lentghOfTime) public {
        require(_lentghOfTime >= 10 minutes);
        require(dutchAuctionToBuy.isForAuction(_cardNumber) == false);
        require(dutchAuctionToCraft.isForAuction(_cardNumber) == false);
        require(_owns(msg.sender, _cardNumber));
        _approve(_cardNumber, dutchAuctionToBuy);
        dutchAuctionToBuy.startAuction(_cardNumber, startPrice, endPrice, _lentghOfTime, msg.sender);
    }

    function startCraftingAuction(uint _cardNumber, uint startPrice, uint endPrice,
    uint _lentghOfTime) public {
        require(_lentghOfTime >= 1 minutes);
        require(_owns(msg.sender, _cardNumber));
        CardStructure storage card = allCards[_cardNumber];
        require(card.canCraftAt <= now);
        require(dutchAuctionToBuy.isForAuction(_cardNumber) == false);
        require(dutchAuctionToCraft.isForAuction(_cardNumber) == false);
        _approve(_cardNumber, dutchAuctionToCraft);
        dutchAuctionToCraft.startAuction(_cardNumber, startPrice, endPrice, _lentghOfTime, msg.sender);
    }

      // craft two cards. you will get a new card. 
    function craftTwoCards(uint _craftedFromLeft, uint _craftedFromRight) public {
        require(_owns(msg.sender, _craftedFromLeft));
        require(_owns(msg.sender, _craftedFromRight));
        // make sure that the card that will produce a new card is not up for auction
        require((isOnAuctionToBuy(_craftedFromLeft) == false) && (isOnCraftingAuction(_craftedFromLeft) == false));
        require(_craftedFromLeft != _craftedFromRight);
        CardStructure storage leftCard = allCards[_craftedFromLeft];
        CardStructure storage rightCard = allCards[_craftedFromRight];
        require(leftCard.canCraftAt <= now);
        require(rightCard.canCraftAt <= now);
        spawnCard(_craftedFromLeft, _craftedFromRight);
    }

    function isOnCraftingAuction(uint cardNumber) public view returns (bool) {
        return (dutchAuctionToCraft.isForAuction(cardNumber) && dutchAuctionToCraft.isValidAuction(cardNumber));
    }

    function isOnAuctionToBuy(uint cardNumber) public view returns (bool) {
        return (dutchAuctionToBuy.isForAuction(cardNumber) && dutchAuctionToBuy.isValidAuction(cardNumber));
    }

    function getCardBuyAuction(uint cardNumber) public view returns( uint startingPrice, uint endPrice, uint duration, address seller,
    uint startedAt ) {
        return dutchAuctionToBuy.getAuction(cardNumber);
    }

    function getCraftingAuction(uint cardNumber) public view returns(uint startingPrice, uint endPrice, uint duration, address seller, 
    uint startedAt ) {
        return dutchAuctionToCraft.getAuction(cardNumber);
    }
    
    function getActualPriceOfCardOnBuyAuction (uint cardNumber) public view returns (uint) {
        return dutchAuctionToBuy.getCurrentPrice(cardNumber);
    }

    function getActualPriceOfCardOnCraftAuction (uint cardNumber) public view returns (uint) {
        return dutchAuctionToCraft.getCurrentPrice(cardNumber);
    }

    function setCraftingAddress(address _address) public masterRestricted {
        CraftingInterface candidateContract = CraftingInterface(_address);
        crafting = candidateContract;
    }

    function getDutchAuctionToCraftAddress() public view returns (address) {
        return address(dutchAuctionToCraft);
    }

     function getDutchAuctionToBuyAddress() public view returns (address) {
        return address(dutchAuctionToBuy);
    }

    function _startCraftRecovery(CardStructure storage card) internal {

        uint base = card.generation + card.difficulty + 1;
        if (base < 6) {
            base = base * (1 minutes);
        } else if ( base < 11) {
            base = (base - 5) * (1 hours);
        } else {
            base = (base - 10) * (1 days);
        }
        base = base * 2;
        
        card.canCraftAt = uint64(now + base);

        if (card.difficulty < 15) {
            card.difficulty++;
        }
    }

     function bidOnCraftAuction(uint cardIdToBidOn, uint cardIdToCraftWith) public payable {
        require(_owns(msg.sender, cardIdToCraftWith));
        CardStructure storage cardToBidOn = allCards[cardIdToBidOn];
        CardStructure storage cardToCraftWith = allCards[cardIdToCraftWith];
        require(cardToCraftWith.canCraftAt <= now);
        require(cardToBidOn.canCraftAt <= now);
        require(cardIdToBidOn != cardIdToCraftWith);
        uint bidAmount = msg.value;
        // the bid funciton ensures that the seller acutally owns the card being sold
        dutchAuctionToCraft.placeBidFromEtherScrolls.value(bidAmount)(cardIdToBidOn);
        spawnCard(cardIdToCraftWith, cardIdToBidOn);
    }
    
    function spawnCard(uint _craftedFromLeft, uint _craftedFromRight) internal returns(uint) {
        CardStructure storage leftCard = allCards[_craftedFromLeft];
        CardStructure storage rightCard = allCards[_craftedFromRight];

        _startCraftRecovery(rightCard);
        _startCraftRecovery(leftCard);

        uint16 parentGen = leftCard.generation;
        if (rightCard.generation > leftCard.generation) {
            parentGen = rightCard.generation;
        }

        parentGen += 1;
        if (parentGen > 18) {
            parentGen = 18;
        }

        uint16[16] memory runes;
        uint16[16] memory powers;

        (runes, powers) = crafting.craft(leftCard.runes, leftCard.powers, rightCard.runes, rightCard.powers);
        address owner = indexToOwner[_craftedFromLeft];
      
        return _createCard(runes, powers, _craftedFromLeft, _craftedFromRight, parentGen, owner);
    }

    function() external payable {}

    function bidOnAuctionToBuy(uint cardNumber) public payable {
        address seller = dutchAuctionToBuy.getSellerOfToken(cardNumber);
        // make sure that the seller still owns the card
        uint bidAmount = msg.value;
        dutchAuctionToBuy.bidFromEtherScrolls.value(bidAmount)(cardNumber, msg.sender);
        // if a zero generation card was just bought
        if (seller == address(this)) {
            spawnNewZeroCardInternal();
        }
    }

    // 250 is the max number of cards that the developers are allowed to print themselves
    function spawnNewZeroCard() public masterRestricted {
        if (numberOfSpecialCardsCreated < 250) {
            spawnNewZeroCardInternal();
            numberOfSpecialCardsCreated++;
        }
    }

    function spawnNewZeroCardInternal() internal {

        uint16[16] memory runes = generateRunes();
        uint16 x = uint16(uint(block.blockhash(block.number - 1)) % 9) + 1;
        uint16 y = uint16(uint(block.blockhash(block.number - 2)) % 9) + 1;
    
        uint16[16] memory powers = [uint16(25), uint16(10), uint16(5), uint16(0), uint16(0), uint16(0), uint16(0),
                                uint16(25), uint16(10), uint16(5), uint16(0), uint16(0), uint16(0), uint16(0), x, y];
        
        uint cardNumber = _createCard(runes, powers, 0, 0, 0, address(this));

        _approve(cardNumber, dutchAuctionToBuy);

        uint price = dutchAuctionToBuy.priceOfOfficalCardSold() * 2;
        // 11000000000000000 wei is .011 eth
        if (price < 11000000000000000 ) {
            price = 11000000000000000;
        }

        dutchAuctionToBuy.startAuction(cardNumber, price, 0, 2 days, address(this));

    }

    function giftCard(uint cardId, address reciever) public {
        require((isOnAuctionToBuy(cardId) == false) && (isOnCraftingAuction(cardId) == false));
        require(ownerOf(cardId) == msg.sender);
        transfer(reciever, cardId);
        Gift(cardId, msg.sender, reciever);
    }

    function generateRunes() internal returns (uint16[16]) {
        
        uint i = 1;
        uint lastBaseIndex = arrayOfPossibleBases.length;
        uint16 base1 = uint16(uint(block.blockhash(block.number - i)) % lastBaseIndex); 
        i++;
        uint16 base2 = uint16(uint(block.blockhash(block.number - i)) % lastBaseIndex);
        i++;
        uint16 base3 = uint16(uint(block.blockhash(block.number - i)) % lastBaseIndex);
        i++;
        
        // ensure that each rune is distinct
        while (base1 == base2 || base2 == base3 || base3 == base1) {
            base1 = uint16(uint(block.blockhash(block.number - i)) % lastBaseIndex);
            i++;
            base2 = uint16(uint(block.blockhash(block.number - i)) % lastBaseIndex);
            i++;
            base3 = uint16(uint(block.blockhash(block.number - i)) % lastBaseIndex);
            i++;
        }
        
        base1 = arrayOfPossibleBases[base1];
        base2 = arrayOfPossibleBases[base2];
        base3 = arrayOfPossibleBases[base3];

        uint lastAbilityIndex = arrayOfPossibleAbilities.length;
        uint16 ability1 = uint16(uint(block.blockhash(block.number - i)) % lastAbilityIndex);
        i++;
        uint16 ability2 = uint16(uint(block.blockhash(block.number - i)) % lastAbilityIndex);
        i++;
        uint16 ability3 = uint16(uint(block.blockhash(block.number - i)) % lastAbilityIndex);
        i++;

        // ensure that each rune is distinct
        while (ability1 == ability2 || ability2 == ability3 || ability3 == ability1) {
            ability1 = uint16(uint(block.blockhash(block.number - i)) % lastAbilityIndex);
            i++;
            ability2 = uint16(uint(block.blockhash(block.number - i)) % lastAbilityIndex);
            i++;
            ability3 = uint16(uint(block.blockhash(block.number - i)) % lastAbilityIndex);
            i++;
        }
        
        ability1 = arrayOfPossibleAbilities[ability1];
        ability2 = arrayOfPossibleAbilities[ability2];
        ability3 = arrayOfPossibleAbilities[ability3];

        numberOfBasesSold[base1]++;
        numberOfAbilitiesSold[ability1]++;

        // if we have reached the max number of runes
        if (numberOfBasesSold[base1] > maxRunes) {
            // remove the rune from the list of possible runes
            for (i = 0; i < arrayOfPossibleBases.length; i++ ) {
                if (arrayOfPossibleBases[i] == base1) {
                // add a new rune to the list
                // we dont need a check here to see if lastBaseCardToBeAddedToCirculation overflows because
                // the 50k max card limit will expire well before this limit is reached
                lastBaseToBeAddedToCirculation++;
                arrayOfPossibleBases[i] = lastBaseToBeAddedToCirculation;
                break;
                }
            }
        }

        if (numberOfAbilitiesSold[ability1] > maxRunes) {
            // remove the rune from the list of possible runes
            for (i = 0; i < arrayOfPossibleAbilities.length; i++) {
                if (arrayOfPossibleAbilities[i] == ability1) {
                // we dont need to check for overflow here because of the 300 rune limits
                lastAbilityToBeAddedToCirculation++;
                arrayOfPossibleAbilities[i] = lastAbilityToBeAddedToCirculation;
                break;
                }
            }
        }

        return [base1, base2, base3, uint16(0), uint16(0), uint16(0), uint16(0), 
                ability1, ability2, ability3, uint16(0), uint16(0), uint16(0), uint16(0),  base1, ability1];
    }
}

contract EtherScrolls is CardMarket {
    
    function EtherScrolls(address master1, address master2, address withdrawAddress) public CardMarket(master1, master2, withdrawAddress) {}

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"numberOfBasesSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"spawnNewZeroCard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getDutchAuctionToCraftAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cardIdToBidOn","type":"uint256"},{"name":"cardIdToCraftWith","type":"uint256"}],"name":"bidOnCraftAuction","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"cardNumber","type":"uint256"}],"name":"getActualPriceOfCardOnCraftAuction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_claimant","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"hasBeenApproved","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"indexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getDutchAuctionToBuyAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dutchAuctionToBuy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cardId","type":"uint256"}],"name":"cancelCraftingAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"masterAddress2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"numberOfAbilitiesSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardNumber","type":"uint256"},{"name":"startPrice","type":"uint256"},{"name":"endPrice","type":"uint256"},{"name":"_lentghOfTime","type":"uint256"}],"name":"createDutchAuctionToBuy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"cardNumber","type":"uint256"}],"name":"isOnAuctionToBuy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"count","type":"uint32"},{"name":"base","type":"uint16"},{"name":"ability","type":"uint16"}],"name":"createInitialCards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newMaster","type":"address"}],"name":"setMasterAddress2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"cardNumber","type":"uint256"}],"name":"getActualPriceOfCardOnBuyAuction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"masterAddress1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"cardNumber","type":"uint256"}],"name":"getCardBuyAuction","outputs":[{"name":"startingPrice","type":"uint256"},{"name":"endPrice","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"seller","type":"address"},{"name":"startedAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getCard","outputs":[{"name":"difficulty","type":"uint256"},{"name":"canCraftAt","type":"uint256"},{"name":"createdAt","type":"uint256"},{"name":"craftedFromLeft","type":"uint256"},{"name":"craftedFromRight","type":"uint256"},{"name":"generation","type":"uint256"},{"name":"runes","type":"uint16[16]"},{"name":"powers","type":"uint16[16]"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crafting","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"cardNumber","type":"uint256"}],"name":"getCraftingAuction","outputs":[{"name":"startingPrice","type":"uint256"},{"name":"endPrice","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"seller","type":"address"},{"name":"startedAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cardNumber","type":"uint256"}],"name":"bidOnAuctionToBuy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newMaster","type":"address"}],"name":"setMasterAddress1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cardId","type":"uint256"},{"name":"reciever","type":"address"}],"name":"giftCard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAbilities","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"indexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_craftedFromLeft","type":"uint256"},{"name":"_craftedFromRight","type":"uint256"}],"name":"craftTwoCards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"cardNumber","type":"uint256"}],"name":"isOnCraftingAuction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardNumber","type":"uint256"},{"name":"startPrice","type":"uint256"},{"name":"endPrice","type":"uint256"},{"name":"_lentghOfTime","type":"uint256"}],"name":"startCraftingAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setCraftAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setBuyAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setCraftingAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cardId","type":"uint256"}],"name":"cancelAuctionToBuy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dutchAuctionToCraft","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBases","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"master1","type":"address"},{"name":"master2","type":"address"},{"name":"withdrawAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"cardNumber","type":"uint256"},{"indexed":false,"name":"craftedFromLeft","type":"uint256"},{"indexed":false,"name":"craftedFromRight","type":"uint256"}],"name":"CardCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"reciever","type":"address"}],"name":"Gift","type":"event"}]

60606040526040805190810160405280600c81526020017f45746865725363726f6c6c730000000000000000000000000000000000000000815250600790805190602001906200005192919062000892565b506040805190810160405280600281526020017f4553000000000000000000000000000000000000000000000000000000000000815250600890805190602001906200009f92919062000892565b503415620000ac57600080fd5b60405160608062005a4583398101604052808051906020019091908051906020019091908051906020019091905050828282620000e862000919565b836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d08182600080600089620004b76401000000000262004119176401000000009004565b5061012c600f8190555061028060405190810160405280600061ffff1661ffff168152602001600161ffff1661ffff168152602001600261ffff1661ffff168152602001600361ffff1661ffff168152602001600461ffff1661ffff168152602001600561ffff1661ffff168152602001600661ffff1661ffff168152602001600761ffff1661ffff168152602001600861ffff1661ffff168152602001600961ffff1661ffff168152602001600a61ffff1661ffff168152602001600b61ffff1661ffff168152602001600c61ffff1661ffff168152602001600d61ffff1661ffff168152602001600e61ffff1661ffff168152602001600f61ffff1661ffff168152602001601061ffff1661ffff168152602001601161ffff1661ffff168152602001601261ffff1661ffff168152602001601361ffff1661ffff16815250600c9060146200032392919062000947565b506013600b60026101000a81548161ffff021916908361ffff16021790555061028060405190810160405280600061ffff1661ffff168152602001600161ffff1661ffff168152602001600261ffff1661ffff168152602001600361ffff1661ffff168152602001600461ffff1661ffff168152602001600561ffff1661ffff168152602001600661ffff1661ffff168152602001600761ffff1661ffff168152602001600861ffff1661ffff168152602001600961ffff1661ffff168152602001600a61ffff1661ffff168152602001600b61ffff1661ffff168152602001600c61ffff1661ffff168152602001600d61ffff1661ffff168152602001600e61ffff1661ffff168152602001600f61ffff1661ffff168152602001601061ffff1661ffff168152602001601161ffff1661ffff168152602001601261ffff1661ffff168152602001601361ffff1661ffff16815250600d9060146200048b92919062000947565b506013600b60006101000a81548161ffff021916908361ffff1602179055505050505050505062000ca3565b6000620004c3620009f8565b6000610100604051908101604052808a81526020018981526020014267ffffffffffffffff168152602001600067ffffffffffffffff1681526020018863ffffffff1681526020018763ffffffff168152602001600081526020018661ffff16815250915060016003805480600101828162000540919062000a72565b916000526020600020906005020160008590919091506000820151816000019060106200056f92919062000aa7565b506020820151816001019060106200058992919062000aa7565b5060408201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160020160146101000a81548163ffffffff021916908363ffffffff16021790555060c0820151816003015560e08201518160040160006101000a81548161ffff021916908361ffff16021790555050500390508373ffffffffffffffffffffffffffffffffffffffff167fe36d384413de3e2681275b5473b425b5d6beb770008998a6f7e29074274dd80f82846080015163ffffffff168560a0015163ffffffff1660405180848152602001838152602001828152602001935050505060405180910390a2620006fb3085836200070a6401000000000262003f92176401000000009004565b80925050509695505050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156200083257600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620008d557805160ff191683800117855562000906565b8280016001018555821562000906579182015b8281111562000905578251825591602001919060010190620008e8565b5b50905062000915919062000b4b565b5090565b610200604051908101604052806010905b600061ffff168152602001906001900390816200092a5790505090565b82805482825590600052602060002090600f01601090048101928215620009e55791602002820160005b83821115620009b357835183826101000a81548161ffff021916908361ffff160217905550926020019260020160208160010104928301926001030262000971565b8015620009e35782816101000a81549061ffff0219169055600201602081600101049283019260010302620009b3565b505b509050620009f4919062000b73565b5090565b6104c06040519081016040528062000a0f62000ba7565b815260200162000a1e62000ba7565b8152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600063ffffffff168152602001600063ffffffff16815260200160008152602001600061ffff1681525090565b81548183558181151162000aa25760050281600502836000526020600020918201910162000aa1919062000bd5565b5b505050565b826010600f0160109004810192821562000b385791602002820160005b8382111562000b0657835183826101000a81548161ffff021916908361ffff160217905550926020019260020160208160010104928301926001030262000ac4565b801562000b365782816101000a81549061ffff021916905560020160208160010104928301926001030262000b06565b505b50905062000b47919062000b73565b5090565b62000b7091905b8082111562000b6c57600081600090555060010162000b52565b5090565b90565b62000ba491905b8082111562000ba057600081816101000a81549061ffff02191690555060010162000b7a565b5090565b90565b610200604051908101604052806010905b600061ffff1681526020019060019003908162000bb85790505090565b62000c9991905b8082111562000c95576000808201600062000bf8919062000c9c565b60018201600062000c0a919062000c9c565b6002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549063ffffffff02191690556002820160146101000a81549063ffffffff021916905560038201600090556004820160006101000a81549061ffff02191690555060050162000bdc565b5090565b90565b5060009055565b614d928062000cb36000396000f30060606040526004361061023b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e52ea01461023d57806306fdde0314610274578063095ea7b3146103025780630a075a32146103445780631051db341461035957806311f0b8061461038657806313916c2e146103db5780631581b600146103fc57806317a432f51461045157806318160ddd1461048857806318b123d5146104b15780631f173e101461050b57806323b872dd1461056e5780633c0ba651146105cf5780633ccfd60b1461062457806352736814146106395780635563d9191461068e5780635ab027b0146106b15780635bf1f2f814610706578063602743961461073d578063612ee7261461077b5780636352211e146107b65780636ac4d97c1461081957806370a082311461085c57806376289f71146108a95780637cc1c640146108e257806386ee8f0114610919578063871b4e3c1461096e5780639188d312146109ed57806391f1cf0514610ad857806395d89b4114610b2d5780639e23836614610bbb578063a278fdfb14610c3a578063a74ecb1214610c52578063a9059cbb14610c8b578063c28b436914610ccd578063c73d3b3014610d0f578063cd78aefb14610d79578063cdbd103114610ddc578063ce95aad214610e08578063d2bec28c14610e43578063d532df3c14610e81578063e1980d1514610eba578063f26f633414610ef3578063f4da834c14610f2c578063f60daa7114610f4f578063fbacc43f14610fa4575b005b341561024857600080fd5b61025e600480803590602001909190505061100e565b6040518082815260200191505060405180910390f35b341561027f57600080fd5b610287611026565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c75780820151818401526020810190506102ac565b50505050905090810190601f1680156102f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030d57600080fd5b610342600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110c4565b005b341561034f57600080fd5b610357611142565b005b341561036457600080fd5b61036c61121d565b604051808215151515815260200191505060405180910390f35b341561039157600080fd5b610399611226565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103fa6004808035906020019091908035906020019091905050611250565b005b341561040757600080fd5b61040f6113d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045c57600080fd5b61047260048080359060200190919050506113f9565b6040518082815260200191505060405180910390f35b341561049357600080fd5b61049b6114b6565b6040518082815260200191505060405180910390f35b34156104bc57600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506114c6565b604051808215151515815260200191505060405180910390f35b341561051657600080fd5b61052c6004808035906020019091905050611532565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057957600080fd5b6105cd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611565565b005b34156105da57600080fd5b6105e261159f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062f57600080fd5b6106376115c9565b005b341561064457600080fd5b61064c6118f4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561069957600080fd5b6106af600480803590602001909190505061191a565b005b34156106bc57600080fd5b6106c46119f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561071157600080fd5b6107276004808035906020019091905050611a1b565b6040518082815260200191505060405180910390f35b341561074857600080fd5b6107796004808035906020019091908035906020019091908035906020019091908035906020019091905050611a33565b005b341561078657600080fd5b61079c6004808035906020019091905050611d07565b604051808215151515815260200191505060405180910390f35b34156107c157600080fd5b6107d76004808035906020019091905050611e80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561082457600080fd5b61085a600480803563ffffffff1690602001909190803561ffff1690602001909190803561ffff16906020019091905050611efe565b005b341561086757600080fd5b610893600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061230a565b6040518082815260200191505060405180910390f35b34156108b457600080fd5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612353565b005b34156108ed57600080fd5b61090360048080359060200190919050506123f3565b6040518082815260200191505060405180910390f35b341561092457600080fd5b61092c6124b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561097957600080fd5b61098f60048080359060200190919050506124d5565b604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390f35b34156109f857600080fd5b610a0e60048080359060200190919050506125bc565b604051808a815260200189815260200188815260200187815260200186815260200185815260200184601060200280838360005b83811015610a5d578082015181840152602081019050610a42565b5050505090500183601060200280838360005b83811015610a8b578082015181840152602081019050610a70565b505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001995050505050505050505060405180910390f35b3415610ae357600080fd5b610aeb6127b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b3857600080fd5b610b406127d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b80578082015181840152602081019050610b65565b50505050905090810190601f168015610bad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610bc657600080fd5b610bdc6004808035906020019091905050612877565b604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390f35b610c50600480803590602001909190505061295e565b005b3415610c5d57600080fd5b610c89600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b35565b005b3415610c9657600080fd5b610ccb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612bd3565b005b3415610cd857600080fd5b610d0d600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c33565b005b3415610d1a57600080fd5b610d22612d55565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d65578082015181840152602081019050610d4a565b505050509050019250505060405180910390f35b3415610d8457600080fd5b610d9a6004808035906020019091905050612ddb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610de757600080fd5b610e066004808035906020019091908035906020019091905050612e0e565b005b3415610e1357600080fd5b610e296004808035906020019091905050612f2e565b604051808215151515815260200191505060405180910390f35b3415610e4e57600080fd5b610e7f60048080359060200190919080359060200190919080359060200190919080359060200190919050506130a7565b005b3415610e8c57600080fd5b610eb8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506133cd565b005b3415610ec557600080fd5b610ef1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506134c4565b005b3415610efe57600080fd5b610f2a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506135bb565b005b3415610f3757600080fd5b610f4d60048080359060200190919050506136b8565b005b3415610f5a57600080fd5b610f62613793565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610faf57600080fd5b610fb76137b9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ffa578082015181840152602081019050610fdf565b505050509050019250505060405180910390f35b60096020528060005260406000206000915090505481565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110bc5780601f10611091576101008083540402835291602001916110bc565b820191906000526020600020905b81548152906001019060200180831161109f57829003601f168201915b505050505081565b6110ce338261383f565b15156110d957600080fd5b6110e381836138ab565b808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111ea5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111f557600080fd5b60fa601054101561121b57611208613901565b6010600081548092919060010191905055505b565b60006001905090565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600061125f338561383f565b151561126a57600080fd5b60038581548110151561127957fe5b9060005260206000209060050201925060038481548110151561129857fe5b90600052602060002090600502019150428260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16111515156112d957600080fd5b428360020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115151561130a57600080fd5b83851415151561131957600080fd5b349050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dde6eb682876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506000604051808303818588803b15156113ac57600080fd5b6125ee5a03f115156113bd57600080fd5b505050506113cb8486613c52565b505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561149457600080fd5b6102c65a03f115156114a557600080fd5b505050604051805190509050919050565b6000600160038054905003905090565b60008273ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61156f838261383f565b151561157a57600080fd5b61158433826114c6565b151561158f57600080fd5b61159a838383613f92565b505050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116735750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806116cb5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156116d657600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663566f4ac56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151561175b57600080fd5b6102c65a03f1151561176c57600080fd5b505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663566f4ac56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15156117f457600080fd5b6102c65a03f1151561180557600080fd5b50505060023073ffffffffffffffffffffffffffffffffffffffff163181151561182b57fe5b0490506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561188f57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156118f157600080fd5b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663705dae1182336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15156119de57600080fd5b6102c65a03f115156119ef57600080fd5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6102588110151515611a4457600080fd5b60001515601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611ae157600080fd5b6102c65a03f11515611af257600080fd5b505050604051805190501515141515611b0a57600080fd5b60001515601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611ba757600080fd5b6102c65a03f11515611bb857600080fd5b505050604051805190501515141515611bd057600080fd5b611bda338561383f565b1515611be557600080fd5b611c1184601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138ab565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381af95fc85858585336040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b1515611ced57600080fd5b6102c65a03f11515611cfe57600080fd5b50505050505050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611da257600080fd5b6102c65a03f11515611db357600080fd5b505050604051805190508015611e795750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2e4ff30836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611e5d57600080fd5b6102c65a03f11515611e6e57600080fd5b505050604051805190505b9050919050565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ef557600080fd5b80915050919050565b611f06614abb565b611f0e614abb565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611fb85750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611fc357600080fd5b61020060405190810160405280600061ffff1661ffff168152602001600161ffff1661ffff168152602001600261ffff1661ffff168152602001600361ffff1661ffff168152602001600461ffff1661ffff168152602001600561ffff1661ffff168152602001600661ffff1661ffff168152602001600061ffff1661ffff168152602001600161ffff1661ffff168152602001600261ffff1661ffff168152602001600361ffff1661ffff168152602001600461ffff1661ffff168152602001600561ffff1661ffff168152602001600661ffff1661ffff1681526020018661ffff1661ffff1681526020018561ffff1661ffff16815250925061020060405190810160405280602361ffff1661ffff168152602001601461ffff1661ffff168152602001600a61ffff1661ffff168152602001600561ffff1661ffff168152602001600561ffff1661ffff168152602001600561ffff1661ffff168152602001600161ffff1661ffff168152602001602361ffff1661ffff168152602001601561ffff1661ffff168152602001600e61ffff1661ffff168152602001600a61ffff1661ffff168152602001600961ffff1661ffff168152602001600861ffff1661ffff168152602001600361ffff1661ffff168152602001600961ffff1661ffff168152602001600761ffff1661ffff168152509150600090505b8563ffffffff168110156123025760008561ffff16141561224e57601460018243030340600190048115156121f157fe5b0683600e60108110151561220157fe5b602002019061ffff16908161ffff16815250506014600282430303406001900481151561222a57fe5b0683600f60108110151561223a57fe5b602002019061ffff16908161ffff16815250505b60016009600383430303406001900481151561226657fe5b060182600e60108110151561227757fe5b602002019061ffff16908161ffff16815250506001600960048343030340600190048115156122a257fe5b060182600f6010811015156122b357fe5b602002019061ffff16908161ffff168152505060fa60105410156122f5576122e18383600080600033614119565b506010600081548092919060010191905055505b80806001019150506121c0565b505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123af57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561248e57600080fd5b6102c65a03f1151561249f57600080fd5b505050604051805190509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793587600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b151561257657600080fd5b6102c65a03f1151561258757600080fd5b505050604051805190602001805190602001805190602001805190602001805190509450945094509450945091939590929450565b6000806000806000806125cd614abb565b6125d5614abb565b60008060038b8154811015156125e757fe5b90600052602060002090600502019050806003015499508060020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1698508060020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060020160109054906101000a900463ffffffff1663ffffffff1696508060020160149054906101000a900463ffffffff1663ffffffff1695508060040160009054906101000a900461ffff1661ffff169450806000016010806020026040519081016040528092919082601080156126fe576020028201916000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116126c55790505b5050505050935080600101601080602002604051908101604052809291908260108015612768576020028201916000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161272f5790505b50505050509250600460008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193959799909294969850565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561286f5780601f106128445761010080835404028352916020019161286f565b820191906000526020600020905b81548152906001019060200180831161285257829003601f168201915b505050505081565b6000806000806000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793587600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b151561291857600080fd5b6102c65a03f1151561292957600080fd5b505050604051805190602001805190602001805190602001805190602001805190509450945094509450945091939590929450565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d6464b7c846000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156129fa57600080fd5b6102c65a03f11515612a0b57600080fd5b505050604051805190509150349050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663910f3b528285336040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506000604051808303818588803b1515612ade57600080fd5b6125ee5a03f11515612aef57600080fd5b505050503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b3057612b2f613901565b5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b9057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612bdd338261383f565b1515612be857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612c2457600080fd5b612c2f338383613f92565b5050565b60001515612c4083611d07565b1515148015612c5b575060001515612c5783612f2e565b1515145b1515612c6657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16612c8683611e80565b73ffffffffffffffffffffffffffffffffffffffff16141515612ca857600080fd5b612cb28183612bd3565b7fc3a9c9309ef0ca0cfd610360c5acf64596b4a7907e44b4b8854d2d81cf54ed6f823383604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050565b612d5d614ae8565b600d805480602002602001604051908101604052809291908181526020018280548015612dd157602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411612d985790505b5050505050905090565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080612e1b338561383f565b1515612e2657600080fd5b612e30338461383f565b1515612e3b57600080fd5b60001515612e4885611d07565b1515148015612e63575060001515612e5f85612f2e565b1515145b1515612e6e57600080fd5b828414151515612e7d57600080fd5b600384815481101515612e8c57fe5b90600052602060002090600502019150600383815481101515612eab57fe5b90600052602060002090600502019050428260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611151515612eec57600080fd5b428160020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611151515612f1d57600080fd5b612f278484613c52565b5050505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515612fc957600080fd5b6102c65a03f11515612fda57600080fd5b5050506040518051905080156130a05750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2e4ff30836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561308457600080fd5b6102c65a03f1151561309557600080fd5b505050604051805190505b9050919050565b6000603c82101515156130b957600080fd5b6130c3338661383f565b15156130ce57600080fd5b6003858154811015156130dd57fe5b90600052602060002090600502019050428160020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115151561311e57600080fd5b60001515601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f876000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156131bb57600080fd5b6102c65a03f115156131cc57600080fd5b5050506040518051905015151415156131e457600080fd5b60001515601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f876000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561328157600080fd5b6102c65a03f1151561329257600080fd5b5050506040518051905015151415156132aa57600080fd5b6132d685601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138ab565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381af95fc86868686336040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b15156133b257600080fd5b6102c65a03f115156133c357600080fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806134755750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561348057600080fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061356c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561357757600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806136655750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561367057600080fd5b81905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c3997d482336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b151561377c57600080fd5b6102c65a03f1151561378d57600080fd5b50505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6137c1614ae8565b600c80548060200260200160405190810160405280929190818152602001828054801561383557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116137fc5790505b5050505050905090565b60008273ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b806006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b613909614abb565b600080613914614abb565b60008061391f61434e565b95506001600960014303406001900481151561393757fe5b060194506001600960024303406001900481151561395157fe5b0601935061020060405190810160405280601961ffff1661ffff168152602001600a61ffff1661ffff168152602001600561ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001601961ffff1661ffff168152602001600a61ffff1661ffff168152602001600561ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff1681526020018661ffff1661ffff1681526020018561ffff1661ffff168152509250613a608684600080600030614119565b9150613a8e82601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138ab565b6002601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d84f93cb6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515613b1e57600080fd5b6102c65a03f11515613b2f57600080fd5b505050604051805190500290506627147114878000811015613b5657662714711487800090505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381af95fc838360006202a300306040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b1515613c3657600080fd5b6102c65a03f11515613c4757600080fd5b505050505050505050565b600080600080613c60614abb565b613c68614abb565b6000600389815481101515613c7957fe5b90600052602060002090600502019550600388815481101515613c9857fe5b90600052602060002090600502019450613cb185614a05565b613cba86614a05565b8560040160009054906101000a900461ffff1693508560040160009054906101000a900461ffff1661ffff168560040160009054906101000a900461ffff1661ffff161115613d19578460040160009054906101000a900461ffff1693505b60018401935060128461ffff161115613d3157601293505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166363155d2b87600001886001018860000189600101600060405161040001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808560108015613e04576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613dcb5790505b50508460108015613e52576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613e195790505b50508360108015613ea0576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613e675790505b50508260108015613eee576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613eb55790505b505094505050505061040060405180830381600087803b1515613f1057600080fd5b6102c65a03f11515613f2157600080fd5b505050604051806102000180610200016040528093508194505050600460008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613f8483838b8b8861ffff1686614119565b965050505050505092915050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156140b957600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000614123614afc565b6000610100604051908101604052808a81526020018981526020014267ffffffffffffffff168152602001600067ffffffffffffffff1681526020018863ffffffff1681526020018763ffffffff168152602001600081526020018661ffff16815250915060016003805480600101828161419e9190614b72565b916000526020600020906005020160008590919091506000820151816000019060106141cb929190614ba4565b506020820151816001019060106141e3929190614ba4565b5060408201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160020160146101000a81548163ffffffff021916908363ffffffff16021790555060c0820151816003015560e08201518160040160006101000a81548161ffff021916908361ffff16021790555050500390508373ffffffffffffffffffffffffffffffffffffffff167fe36d384413de3e2681275b5473b425b5d6beb770008998a6f7e29074274dd80f82846080015163ffffffff168560a0015163ffffffff1660405180848152602001838152602001828152602001935050505060405180910390a261433f308583613f92565b80925050509695505050505050565b614356614abb565b600080600080600080600080600060019850600c80549050975087894303406001900481151561438257fe5b069650888060010199505087894303406001900481151561439f57fe5b06955088806001019950508789430340600190048115156143bc57fe5b06945088806001019950505b8561ffff168761ffff1614806143e557508461ffff168661ffff16145b806143f757508661ffff168561ffff16145b156144585787894303406001900481151561440e57fe5b069650888060010199505087894303406001900481151561442b57fe5b069550888060010199505087894303406001900481151561444857fe5b06945088806001019950506143c8565b600c8761ffff1681548110151561446b57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169650600c8661ffff168154811015156144a457fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169550600c8561ffff168154811015156144dd57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450600d80549050935083894303406001900481151561451d57fe5b069250888060010199505083894303406001900481151561453a57fe5b069150888060010199505083894303406001900481151561455757fe5b06905088806001019950505b8161ffff168361ffff16148061458057508061ffff168261ffff16145b8061459257508261ffff168161ffff16145b156145f3578389430340600190048115156145a957fe5b06925088806001019950508389430340600190048115156145c657fe5b06915088806001019950508389430340600190048115156145e357fe5b0690508880600101995050614563565b600d8361ffff1681548110151561460657fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169250600d8261ffff1681548110151561463f57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169150600d8161ffff1681548110151561467857fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169050600960008861ffff16815260200190815260200160002060008154809291906001019190505550600a60008461ffff16815260200190815260200160002060008154809291906001019190505550600f54600960008961ffff1681526020019081526020016000205411156147f857600098505b600c805490508910156147f7578661ffff16600c8a81548110151561473357fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff1614156147ea57600b600281819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050600b60029054906101000a900461ffff16600c8a8154811015156147b657fe5b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055506147f7565b8880600101995050614712565b5b600f54600a60008561ffff16815260200190815260200160002054111561490457600098505b600d80549050891015614903578261ffff16600d8a81548110151561483f57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff1614156148f657600b600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050600b60009054906101000a900461ffff16600d8a8154811015156148c257fe5b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff160217905550614903565b888060010199505061481e565b5b610200604051908101604052808861ffff1661ffff1681526020018761ffff1661ffff1681526020018661ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff1681526020018461ffff1661ffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff1681526020018861ffff1661ffff1681526020018461ffff1661ffff16815250995050505050505050505090565b6000600182600301548360040160009054906101000a900461ffff1661ffff16010190506006811015614a3d57603c81029050614a62565b600b811015614a5557610e1060058203029050614a61565b62015180600a82030290505b5b6002810290508042018260020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600f82600301541015614ab75781600301600081548092919060010191905055505b5050565b610200604051908101604052806010905b600061ffff16815260200190600190039081614acc5790505090565b602060405190810160405280600081525090565b6104c060405190810160405280614b11614c41565b8152602001614b1e614c41565b8152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600063ffffffff168152602001600063ffffffff16815260200160008152602001600061ffff1681525090565b815481835581811511614b9f57600502816005028360005260206000209182019101614b9e9190614c6e565b5b505050565b826010600f01601090048101928215614c305791602002820160005b83821115614c0057835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302614bc0565b8015614c2e5782816101000a81549061ffff0219169055600201602081600101049283019260010302614c00565b505b509050614c3d9190614d2e565b5090565b610200604051908101604052806010905b600061ffff16815260200190600190039081614c525790505090565b614d2b91905b80821115614d275760008082016000614c8d9190614d5f565b600182016000614c9d9190614d5f565b6002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549063ffffffff02191690556002820160146101000a81549063ffffffff021916905560038201600090556004820160006101000a81549061ffff021916905550600501614c74565b5090565b90565b614d5c91905b80821115614d5857600081816101000a81549061ffff021916905550600101614d34565b5090565b90565b50600090555600a165627a7a723058208727f604be4f2d14e86664a968d46b0a5d12befc9e422b6e2d4e906fec521cde0029000000000000000000000000e4d37c28cd205ca8e58a2608eed5cb531b924b080000000000000000000000008784efb95d7158a4e0a3a8bf34b5e6fa726b6672000000000000000000000000056d66d5d74507b9e43a563bcd8dc50c60122c90

Deployed Bytecode

0x60606040526004361061023b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e52ea01461023d57806306fdde0314610274578063095ea7b3146103025780630a075a32146103445780631051db341461035957806311f0b8061461038657806313916c2e146103db5780631581b600146103fc57806317a432f51461045157806318160ddd1461048857806318b123d5146104b15780631f173e101461050b57806323b872dd1461056e5780633c0ba651146105cf5780633ccfd60b1461062457806352736814146106395780635563d9191461068e5780635ab027b0146106b15780635bf1f2f814610706578063602743961461073d578063612ee7261461077b5780636352211e146107b65780636ac4d97c1461081957806370a082311461085c57806376289f71146108a95780637cc1c640146108e257806386ee8f0114610919578063871b4e3c1461096e5780639188d312146109ed57806391f1cf0514610ad857806395d89b4114610b2d5780639e23836614610bbb578063a278fdfb14610c3a578063a74ecb1214610c52578063a9059cbb14610c8b578063c28b436914610ccd578063c73d3b3014610d0f578063cd78aefb14610d79578063cdbd103114610ddc578063ce95aad214610e08578063d2bec28c14610e43578063d532df3c14610e81578063e1980d1514610eba578063f26f633414610ef3578063f4da834c14610f2c578063f60daa7114610f4f578063fbacc43f14610fa4575b005b341561024857600080fd5b61025e600480803590602001909190505061100e565b6040518082815260200191505060405180910390f35b341561027f57600080fd5b610287611026565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c75780820151818401526020810190506102ac565b50505050905090810190601f1680156102f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030d57600080fd5b610342600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110c4565b005b341561034f57600080fd5b610357611142565b005b341561036457600080fd5b61036c61121d565b604051808215151515815260200191505060405180910390f35b341561039157600080fd5b610399611226565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103fa6004808035906020019091908035906020019091905050611250565b005b341561040757600080fd5b61040f6113d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045c57600080fd5b61047260048080359060200190919050506113f9565b6040518082815260200191505060405180910390f35b341561049357600080fd5b61049b6114b6565b6040518082815260200191505060405180910390f35b34156104bc57600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506114c6565b604051808215151515815260200191505060405180910390f35b341561051657600080fd5b61052c6004808035906020019091905050611532565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057957600080fd5b6105cd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611565565b005b34156105da57600080fd5b6105e261159f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062f57600080fd5b6106376115c9565b005b341561064457600080fd5b61064c6118f4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561069957600080fd5b6106af600480803590602001909190505061191a565b005b34156106bc57600080fd5b6106c46119f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561071157600080fd5b6107276004808035906020019091905050611a1b565b6040518082815260200191505060405180910390f35b341561074857600080fd5b6107796004808035906020019091908035906020019091908035906020019091908035906020019091905050611a33565b005b341561078657600080fd5b61079c6004808035906020019091905050611d07565b604051808215151515815260200191505060405180910390f35b34156107c157600080fd5b6107d76004808035906020019091905050611e80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561082457600080fd5b61085a600480803563ffffffff1690602001909190803561ffff1690602001909190803561ffff16906020019091905050611efe565b005b341561086757600080fd5b610893600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061230a565b6040518082815260200191505060405180910390f35b34156108b457600080fd5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612353565b005b34156108ed57600080fd5b61090360048080359060200190919050506123f3565b6040518082815260200191505060405180910390f35b341561092457600080fd5b61092c6124b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561097957600080fd5b61098f60048080359060200190919050506124d5565b604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390f35b34156109f857600080fd5b610a0e60048080359060200190919050506125bc565b604051808a815260200189815260200188815260200187815260200186815260200185815260200184601060200280838360005b83811015610a5d578082015181840152602081019050610a42565b5050505090500183601060200280838360005b83811015610a8b578082015181840152602081019050610a70565b505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001995050505050505050505060405180910390f35b3415610ae357600080fd5b610aeb6127b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b3857600080fd5b610b406127d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b80578082015181840152602081019050610b65565b50505050905090810190601f168015610bad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610bc657600080fd5b610bdc6004808035906020019091905050612877565b604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390f35b610c50600480803590602001909190505061295e565b005b3415610c5d57600080fd5b610c89600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b35565b005b3415610c9657600080fd5b610ccb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612bd3565b005b3415610cd857600080fd5b610d0d600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c33565b005b3415610d1a57600080fd5b610d22612d55565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d65578082015181840152602081019050610d4a565b505050509050019250505060405180910390f35b3415610d8457600080fd5b610d9a6004808035906020019091905050612ddb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610de757600080fd5b610e066004808035906020019091908035906020019091905050612e0e565b005b3415610e1357600080fd5b610e296004808035906020019091905050612f2e565b604051808215151515815260200191505060405180910390f35b3415610e4e57600080fd5b610e7f60048080359060200190919080359060200190919080359060200190919080359060200190919050506130a7565b005b3415610e8c57600080fd5b610eb8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506133cd565b005b3415610ec557600080fd5b610ef1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506134c4565b005b3415610efe57600080fd5b610f2a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506135bb565b005b3415610f3757600080fd5b610f4d60048080359060200190919050506136b8565b005b3415610f5a57600080fd5b610f62613793565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610faf57600080fd5b610fb76137b9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ffa578082015181840152602081019050610fdf565b505050509050019250505060405180910390f35b60096020528060005260406000206000915090505481565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110bc5780601f10611091576101008083540402835291602001916110bc565b820191906000526020600020905b81548152906001019060200180831161109f57829003601f168201915b505050505081565b6110ce338261383f565b15156110d957600080fd5b6110e381836138ab565b808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111ea5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111f557600080fd5b60fa601054101561121b57611208613901565b6010600081548092919060010191905055505b565b60006001905090565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600061125f338561383f565b151561126a57600080fd5b60038581548110151561127957fe5b9060005260206000209060050201925060038481548110151561129857fe5b90600052602060002090600502019150428260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16111515156112d957600080fd5b428360020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115151561130a57600080fd5b83851415151561131957600080fd5b349050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dde6eb682876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506000604051808303818588803b15156113ac57600080fd5b6125ee5a03f115156113bd57600080fd5b505050506113cb8486613c52565b505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561149457600080fd5b6102c65a03f115156114a557600080fd5b505050604051805190509050919050565b6000600160038054905003905090565b60008273ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61156f838261383f565b151561157a57600080fd5b61158433826114c6565b151561158f57600080fd5b61159a838383613f92565b505050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116735750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806116cb5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156116d657600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663566f4ac56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151561175b57600080fd5b6102c65a03f1151561176c57600080fd5b505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663566f4ac56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15156117f457600080fd5b6102c65a03f1151561180557600080fd5b50505060023073ffffffffffffffffffffffffffffffffffffffff163181151561182b57fe5b0490506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561188f57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156118f157600080fd5b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663705dae1182336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15156119de57600080fd5b6102c65a03f115156119ef57600080fd5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6102588110151515611a4457600080fd5b60001515601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611ae157600080fd5b6102c65a03f11515611af257600080fd5b505050604051805190501515141515611b0a57600080fd5b60001515601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611ba757600080fd5b6102c65a03f11515611bb857600080fd5b505050604051805190501515141515611bd057600080fd5b611bda338561383f565b1515611be557600080fd5b611c1184601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138ab565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381af95fc85858585336040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b1515611ced57600080fd5b6102c65a03f11515611cfe57600080fd5b50505050505050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611da257600080fd5b6102c65a03f11515611db357600080fd5b505050604051805190508015611e795750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2e4ff30836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611e5d57600080fd5b6102c65a03f11515611e6e57600080fd5b505050604051805190505b9050919050565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ef557600080fd5b80915050919050565b611f06614abb565b611f0e614abb565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611fb85750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611fc357600080fd5b61020060405190810160405280600061ffff1661ffff168152602001600161ffff1661ffff168152602001600261ffff1661ffff168152602001600361ffff1661ffff168152602001600461ffff1661ffff168152602001600561ffff1661ffff168152602001600661ffff1661ffff168152602001600061ffff1661ffff168152602001600161ffff1661ffff168152602001600261ffff1661ffff168152602001600361ffff1661ffff168152602001600461ffff1661ffff168152602001600561ffff1661ffff168152602001600661ffff1661ffff1681526020018661ffff1661ffff1681526020018561ffff1661ffff16815250925061020060405190810160405280602361ffff1661ffff168152602001601461ffff1661ffff168152602001600a61ffff1661ffff168152602001600561ffff1661ffff168152602001600561ffff1661ffff168152602001600561ffff1661ffff168152602001600161ffff1661ffff168152602001602361ffff1661ffff168152602001601561ffff1661ffff168152602001600e61ffff1661ffff168152602001600a61ffff1661ffff168152602001600961ffff1661ffff168152602001600861ffff1661ffff168152602001600361ffff1661ffff168152602001600961ffff1661ffff168152602001600761ffff1661ffff168152509150600090505b8563ffffffff168110156123025760008561ffff16141561224e57601460018243030340600190048115156121f157fe5b0683600e60108110151561220157fe5b602002019061ffff16908161ffff16815250506014600282430303406001900481151561222a57fe5b0683600f60108110151561223a57fe5b602002019061ffff16908161ffff16815250505b60016009600383430303406001900481151561226657fe5b060182600e60108110151561227757fe5b602002019061ffff16908161ffff16815250506001600960048343030340600190048115156122a257fe5b060182600f6010811015156122b357fe5b602002019061ffff16908161ffff168152505060fa60105410156122f5576122e18383600080600033614119565b506010600081548092919060010191905055505b80806001019150506121c0565b505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123af57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561248e57600080fd5b6102c65a03f1151561249f57600080fd5b505050604051805190509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793587600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b151561257657600080fd5b6102c65a03f1151561258757600080fd5b505050604051805190602001805190602001805190602001805190602001805190509450945094509450945091939590929450565b6000806000806000806125cd614abb565b6125d5614abb565b60008060038b8154811015156125e757fe5b90600052602060002090600502019050806003015499508060020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1698508060020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060020160109054906101000a900463ffffffff1663ffffffff1696508060020160149054906101000a900463ffffffff1663ffffffff1695508060040160009054906101000a900461ffff1661ffff169450806000016010806020026040519081016040528092919082601080156126fe576020028201916000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116126c55790505b5050505050935080600101601080602002604051908101604052809291908260108015612768576020028201916000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161272f5790505b50505050509250600460008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193959799909294969850565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561286f5780601f106128445761010080835404028352916020019161286f565b820191906000526020600020905b81548152906001019060200180831161285257829003601f168201915b505050505081565b6000806000806000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793587600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b151561291857600080fd5b6102c65a03f1151561292957600080fd5b505050604051805190602001805190602001805190602001805190602001805190509450945094509450945091939590929450565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d6464b7c846000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156129fa57600080fd5b6102c65a03f11515612a0b57600080fd5b505050604051805190509150349050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663910f3b528285336040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506000604051808303818588803b1515612ade57600080fd5b6125ee5a03f11515612aef57600080fd5b505050503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b3057612b2f613901565b5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b9057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612bdd338261383f565b1515612be857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612c2457600080fd5b612c2f338383613f92565b5050565b60001515612c4083611d07565b1515148015612c5b575060001515612c5783612f2e565b1515145b1515612c6657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16612c8683611e80565b73ffffffffffffffffffffffffffffffffffffffff16141515612ca857600080fd5b612cb28183612bd3565b7fc3a9c9309ef0ca0cfd610360c5acf64596b4a7907e44b4b8854d2d81cf54ed6f823383604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050565b612d5d614ae8565b600d805480602002602001604051908101604052809291908181526020018280548015612dd157602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411612d985790505b5050505050905090565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080612e1b338561383f565b1515612e2657600080fd5b612e30338461383f565b1515612e3b57600080fd5b60001515612e4885611d07565b1515148015612e63575060001515612e5f85612f2e565b1515145b1515612e6e57600080fd5b828414151515612e7d57600080fd5b600384815481101515612e8c57fe5b90600052602060002090600502019150600383815481101515612eab57fe5b90600052602060002090600502019050428260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611151515612eec57600080fd5b428160020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611151515612f1d57600080fd5b612f278484613c52565b5050505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515612fc957600080fd5b6102c65a03f11515612fda57600080fd5b5050506040518051905080156130a05750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2e4ff30836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561308457600080fd5b6102c65a03f1151561309557600080fd5b505050604051805190505b9050919050565b6000603c82101515156130b957600080fd5b6130c3338661383f565b15156130ce57600080fd5b6003858154811015156130dd57fe5b90600052602060002090600502019050428160020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115151561311e57600080fd5b60001515601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f876000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156131bb57600080fd5b6102c65a03f115156131cc57600080fd5b5050506040518051905015151415156131e457600080fd5b60001515601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f509078f876000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561328157600080fd5b6102c65a03f1151561329257600080fd5b5050506040518051905015151415156132aa57600080fd5b6132d685601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138ab565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381af95fc86868686336040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b15156133b257600080fd5b6102c65a03f115156133c357600080fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806134755750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561348057600080fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061356c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561357757600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806136655750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561367057600080fd5b81905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c3997d482336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b151561377c57600080fd5b6102c65a03f1151561378d57600080fd5b50505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6137c1614ae8565b600c80548060200260200160405190810160405280929190818152602001828054801561383557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116137fc5790505b5050505050905090565b60008273ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b806006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b613909614abb565b600080613914614abb565b60008061391f61434e565b95506001600960014303406001900481151561393757fe5b060194506001600960024303406001900481151561395157fe5b0601935061020060405190810160405280601961ffff1661ffff168152602001600a61ffff1661ffff168152602001600561ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001601961ffff1661ffff168152602001600a61ffff1661ffff168152602001600561ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff1681526020018661ffff1661ffff1681526020018561ffff1661ffff168152509250613a608684600080600030614119565b9150613a8e82601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138ab565b6002601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d84f93cb6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515613b1e57600080fd5b6102c65a03f11515613b2f57600080fd5b505050604051805190500290506627147114878000811015613b5657662714711487800090505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381af95fc838360006202a300306040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b1515613c3657600080fd5b6102c65a03f11515613c4757600080fd5b505050505050505050565b600080600080613c60614abb565b613c68614abb565b6000600389815481101515613c7957fe5b90600052602060002090600502019550600388815481101515613c9857fe5b90600052602060002090600502019450613cb185614a05565b613cba86614a05565b8560040160009054906101000a900461ffff1693508560040160009054906101000a900461ffff1661ffff168560040160009054906101000a900461ffff1661ffff161115613d19578460040160009054906101000a900461ffff1693505b60018401935060128461ffff161115613d3157601293505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166363155d2b87600001886001018860000189600101600060405161040001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808560108015613e04576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613dcb5790505b50508460108015613e52576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613e195790505b50508360108015613ea0576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613e675790505b50508260108015613eee576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613eb55790505b505094505050505061040060405180830381600087803b1515613f1057600080fd5b6102c65a03f11515613f2157600080fd5b505050604051806102000180610200016040528093508194505050600460008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613f8483838b8b8861ffff1686614119565b965050505050505092915050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156140b957600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055505b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000614123614afc565b6000610100604051908101604052808a81526020018981526020014267ffffffffffffffff168152602001600067ffffffffffffffff1681526020018863ffffffff1681526020018763ffffffff168152602001600081526020018661ffff16815250915060016003805480600101828161419e9190614b72565b916000526020600020906005020160008590919091506000820151816000019060106141cb929190614ba4565b506020820151816001019060106141e3929190614ba4565b5060408201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160020160146101000a81548163ffffffff021916908363ffffffff16021790555060c0820151816003015560e08201518160040160006101000a81548161ffff021916908361ffff16021790555050500390508373ffffffffffffffffffffffffffffffffffffffff167fe36d384413de3e2681275b5473b425b5d6beb770008998a6f7e29074274dd80f82846080015163ffffffff168560a0015163ffffffff1660405180848152602001838152602001828152602001935050505060405180910390a261433f308583613f92565b80925050509695505050505050565b614356614abb565b600080600080600080600080600060019850600c80549050975087894303406001900481151561438257fe5b069650888060010199505087894303406001900481151561439f57fe5b06955088806001019950508789430340600190048115156143bc57fe5b06945088806001019950505b8561ffff168761ffff1614806143e557508461ffff168661ffff16145b806143f757508661ffff168561ffff16145b156144585787894303406001900481151561440e57fe5b069650888060010199505087894303406001900481151561442b57fe5b069550888060010199505087894303406001900481151561444857fe5b06945088806001019950506143c8565b600c8761ffff1681548110151561446b57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169650600c8661ffff168154811015156144a457fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169550600c8561ffff168154811015156144dd57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450600d80549050935083894303406001900481151561451d57fe5b069250888060010199505083894303406001900481151561453a57fe5b069150888060010199505083894303406001900481151561455757fe5b06905088806001019950505b8161ffff168361ffff16148061458057508061ffff168261ffff16145b8061459257508261ffff168161ffff16145b156145f3578389430340600190048115156145a957fe5b06925088806001019950508389430340600190048115156145c657fe5b06915088806001019950508389430340600190048115156145e357fe5b0690508880600101995050614563565b600d8361ffff1681548110151561460657fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169250600d8261ffff1681548110151561463f57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169150600d8161ffff1681548110151561467857fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169050600960008861ffff16815260200190815260200160002060008154809291906001019190505550600a60008461ffff16815260200190815260200160002060008154809291906001019190505550600f54600960008961ffff1681526020019081526020016000205411156147f857600098505b600c805490508910156147f7578661ffff16600c8a81548110151561473357fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff1614156147ea57600b600281819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050600b60029054906101000a900461ffff16600c8a8154811015156147b657fe5b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055506147f7565b8880600101995050614712565b5b600f54600a60008561ffff16815260200190815260200160002054111561490457600098505b600d80549050891015614903578261ffff16600d8a81548110151561483f57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff1614156148f657600b600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050600b60009054906101000a900461ffff16600d8a8154811015156148c257fe5b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff160217905550614903565b888060010199505061481e565b5b610200604051908101604052808861ffff1661ffff1681526020018761ffff1661ffff1681526020018661ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff1681526020018461ffff1661ffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff168152602001600061ffff1661ffff1681526020018861ffff1661ffff1681526020018461ffff1661ffff16815250995050505050505050505090565b6000600182600301548360040160009054906101000a900461ffff1661ffff16010190506006811015614a3d57603c81029050614a62565b600b811015614a5557610e1060058203029050614a61565b62015180600a82030290505b5b6002810290508042018260020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600f82600301541015614ab75781600301600081548092919060010191905055505b5050565b610200604051908101604052806010905b600061ffff16815260200190600190039081614acc5790505090565b602060405190810160405280600081525090565b6104c060405190810160405280614b11614c41565b8152602001614b1e614c41565b8152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600063ffffffff168152602001600063ffffffff16815260200160008152602001600061ffff1681525090565b815481835581811511614b9f57600502816005028360005260206000209182019101614b9e9190614c6e565b5b505050565b826010600f01601090048101928215614c305791602002820160005b83821115614c0057835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302614bc0565b8015614c2e5782816101000a81549061ffff0219169055600201602081600101049283019260010302614c00565b505b509050614c3d9190614d2e565b5090565b610200604051908101604052806010905b600061ffff16815260200190600190039081614c525790505090565b614d2b91905b80821115614d275760008082016000614c8d9190614d5f565b600182016000614c9d9190614d5f565b6002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549063ffffffff02191690556002820160146101000a81549063ffffffff021916905560038201600090556004820160006101000a81549061ffff021916905550600501614c74565b5090565b90565b614d5c91905b80821115614d5857600081816101000a81549061ffff021916905550600101614d34565b5090565b90565b50600090555600a165627a7a723058208727f604be4f2d14e86664a968d46b0a5d12befc9e422b6e2d4e906fec521cde0029

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

000000000000000000000000e4d37c28cd205ca8e58a2608eed5cb531b924b080000000000000000000000008784efb95d7158a4e0a3a8bf34b5e6fa726b6672000000000000000000000000056d66d5d74507b9e43a563bcd8dc50c60122c90

-----Decoded View---------------
Arg [0] : master1 (address): 0xe4d37C28Cd205ca8e58a2608EEd5CB531b924B08
Arg [1] : master2 (address): 0x8784eFb95D7158A4E0A3a8bf34b5E6FA726b6672
Arg [2] : withdrawAddress (address): 0x056d66d5d74507B9E43a563Bcd8DC50c60122c90

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000e4d37c28cd205ca8e58a2608eed5cb531b924b08
Arg [1] : 0000000000000000000000008784efb95d7158a4e0a3a8bf34b5e6fa726b6672
Arg [2] : 000000000000000000000000056d66d5d74507b9e43a563bcd8dc50c60122c90


Swarm Source

bzzr://8727f604be4f2d14e86664a968d46b0a5d12befc9e422b6e2d4e906fec521cde
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.