ETH Price: $3,156.59 (+2.80%)
Gas: 1 Gwei

Token

 

Overview

Max Total Supply

45,084

Holders

967

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
3

Value
$0.00
0x3c302102dab68d19bb653109fb2e4a47e344a376
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:
MCPSale

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-06-03
*/

pragma solidity ^0.4.24;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }


    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }


    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

contract Beneficiary is Ownable {

    address public beneficiary;

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

    function setBeneficiary(address _beneficiary) onlyOwner public {
        beneficiary = _beneficiary;
    }

    function withdrawal(uint256 amount) public onlyOwner {
        if (amount > address(this).balance) {
            revert();
        }

        beneficiary.transfer(amount);
    }

    function withdrawalAll() public onlyOwner {
        beneficiary.transfer(address(this).balance);
    }
}

contract MCPSale is Beneficiary {

    mapping(address => uint256) public balances;
    mapping(uint256 => address) public approved;
    mapping(int32 => mapping(int32 => uint256)) public zone;
    mapping(uint256 => Coordinates) public zone_reverse;
    mapping(uint16 => Region) public regions;
    mapping(uint16 => RegionBid) public region_bids;

    bool public constant implementsERC721 = true;

    uint256 constant MINIMAL_RAISE = 0.5 ether;
    uint256 constant AUCTION_DURATION = 7 * 24 * 60 * 60; // 7 Days

    bool public SaleActive = true;

    struct MapLand {
        uint8 resources;
        uint16 region;
        uint256 buyPrice;
        address owner;
    }

    struct Coordinates {
        int32 x;
        int32 y;
    }

    struct RegionBid {
        address currentBuyer;
        uint256 bid;
        uint256 activeTill;
    }

    struct Region {
        address owner;
        uint8 tax;
        uint256 startPrice;
        string regionName;
        bool onSale;
        bool allowSaleLands;
        bool created;
    }


    uint256 public basePrice = 0.01 ether;
    uint256 public minMargin = 0.001944 ether;
    uint32 public divider = 8;
    uint8 public defaultRegionTax = 10;

    MapLand[] public tokens;

    address public mapMaster;

    modifier isTokenOwner(uint256 _tokenId) {
        if (tokens[_tokenId].owner != msg.sender) {

            if (msg.value > 0) {
                msg.sender.transfer(msg.value);
            }

            return;

        }

        _;
    }

    modifier onlyRegionOwner(uint16 _regionId) {
        if (regions[_regionId].owner != msg.sender) {

            if (msg.value > 0) {
                msg.sender.transfer(msg.value);
            }

            return;

        }

        _;
    }

    modifier isNotNullAddress(address _address) {
        require(address(0) != _address);
        _;
    }

    modifier isApproved(uint256 _tokenId, address _to) {
        require(approved[_tokenId] == _to);
        _;
    }

    modifier onlyMapMaster() {
        require(mapMaster == msg.sender);
        _;
    }

    modifier onlyOnActiveSale() {
        require(SaleActive);
        _;
    }

    modifier canMakeBid(uint16 regionId) {
        if ((region_bids[regionId].activeTill != 0 && region_bids[regionId].activeTill < now)
        || regions[regionId].owner != address(0) || !regions[regionId].onSale
        ) {
            if (msg.value > 0) {
                msg.sender.transfer(msg.value);
            }
            return;
        }

        _;
    }

    constructor() public {
        mapMaster = msg.sender;
        tokens.length++;
        //reserve 0 token - no binding, no sale
        MapLand storage reserve = tokens[tokens.length - 1];
        reserve.owner = msg.sender;
    }

    function setMapMaster(address _mapMaster) public onlyOwner {
        mapMaster = _mapMaster;
    }

    function setMinMargin(uint256 _amount) public onlyOwner {
        minMargin = _amount;
    }

    function setBasePrice(uint256 _amount) public onlyOwner {
        basePrice = _amount;
    }

    function setRegionTax(uint16 regionId, uint8 tax) public onlyRegionOwner(regionId) onlyOnActiveSale {
        require(tax <= 100 && tax >= 0);
        regions[regionId].tax = tax;

        emit TaxUpdate(regionId, regions[regionId].tax);
    }

    function setRegionName(uint16 regionId, string regionName) public onlyOwner {
        regions[regionId].regionName = regionName;
        emit ChangeRegionName(regionId, regionName);
    }

    function setRegionOnSale(uint16 regionId) public onlyMapMaster {
        regions[regionId].onSale = true;

        emit RegionOnSale(regionId);
    }

    function setAllowSellLands(uint16 regionId) public onlyMapMaster {
        regions[regionId].allowSaleLands = true;

        emit RegionAllowSaleLands(regionId);
    }

    function setRegionPrice(uint16 regionId, uint256 price) public onlyOwner {
        if(regions[regionId].owner == address(0) && !regions[regionId].onSale) {
            regions[regionId].startPrice = price;
            emit UpdateRegionPrice(regionId, price);
        }
    }

    function addRegion(uint16 _regionId, uint256 _startPrice, string _regionName) public onlyMapMaster onlyOnActiveSale {

        if (regions[_regionId].created) {
            return;
        }

        Region storage newRegion = regions[_regionId];
        newRegion.startPrice = _startPrice;
        newRegion.tax = defaultRegionTax;
        newRegion.owner = address(0);
        newRegion.regionName = _regionName;
        newRegion.created = true;

        emit AddRegion(_regionId);
    }

    function regionExists(uint16 _regionId) public view returns (bool) {
        return regions[_regionId].created;
    }

    function makeBid(uint16 regionId) payable public
    onlyOnActiveSale
    canMakeBid(regionId) {

        uint256 minimal_bid;

        if (region_bids[regionId].currentBuyer != address(0)) {//If have bid already
            minimal_bid = region_bids[regionId].bid + MINIMAL_RAISE;
        } else {
            minimal_bid = regions[regionId].startPrice;
        }

        if (minimal_bid > msg.value) {

            if (msg.value > 0) {
                msg.sender.transfer(msg.value);
            }

            return;
        }

        RegionBid storage bid = region_bids[regionId];

        if (bid.currentBuyer != address(0)) {
            //Return funds to old buyer
            bid.currentBuyer.transfer(bid.bid);
        } else {
            emit AuctionStarts(regionId);
        }

        // Auction will be active for 7 days if no one make a new bid
        bid.activeTill = now + AUCTION_DURATION;


        bid.currentBuyer = msg.sender;
        bid.bid = msg.value;

        emit RegionNewBid(regionId, msg.sender, msg.value, region_bids[regionId].activeTill);
    }

    function completeRegionAuction(uint16 regionId) public onlyMapMaster {
        if (region_bids[regionId].currentBuyer == address(0)) {
            return;
        }

        if (region_bids[regionId].activeTill > now || region_bids[regionId].activeTill == 0) {
            return;
        }

        transferRegion(regionId, region_bids[regionId].currentBuyer);
    }

    function takeRegion(uint16 regionId) public {
        require(regions[regionId].owner == address(0));
        require(region_bids[regionId].currentBuyer == msg.sender);
        require(region_bids[regionId].activeTill < now);

        transferRegion(regionId, region_bids[regionId].currentBuyer);
    }

    function transferRegion(uint16 regionId, address newOwner) internal {
        regions[regionId].owner = newOwner;
        regions[regionId].onSale = false;

        emit RegionSold(regionId, regions[regionId].owner);
    }

    // returns next minimal bid or final bid on auctions that already end
    function getRegionPrice(uint16 regionId) public view returns (uint256 next_bid) {
        if(regions[regionId].owner != address(0)) {
            return region_bids[regionId].bid;
        }

        if (region_bids[regionId].currentBuyer != address(0)) {//If have bid already
            next_bid = region_bids[regionId].bid + MINIMAL_RAISE;
        } else {
            next_bid = regions[regionId].startPrice;
        }
    }

    function _activateZoneLand(int32 x, int32 y, uint8 region, uint8 resources) internal {
        tokens.length++;
        MapLand storage tmp = tokens[tokens.length - 1];

        tmp.region = region;
        tmp.resources = resources;
        tmp.buyPrice = 0;
        zone[x][y] = tokens.length - 1;
        zone_reverse[tokens.length - 1] = Coordinates(x, y);

        emit ActivateMap(x, y, tokens.length - 1);
    }

    function activateZone(int32[] x, int32[] y, uint8[] region, uint8[] resources) public onlyMapMaster {
        for (uint index = 0; index < x.length; index++) {
            _activateZoneLand(x[index], y[index], region[index], resources[index]);
        }
    }

    function buyLand(int32 x, int32 y) payable public onlyOnActiveSale {
        MapLand storage token = tokens[zone[x][y]];
        if (zone[x][y] == 0 || token.buyPrice > 0 || token.owner != address(0)
        || !regions[token.region].allowSaleLands) {

            if (msg.value > 0) {
                msg.sender.transfer(msg.value);
            }

            return;
        }

        uint256 buyPrice = getLandPrice(x, y);

        if (buyPrice == 0) {

            if (msg.value > 0) {
                msg.sender.transfer(msg.value);
            }

            return;
        }

        uint256[49] memory payouts;
        address[49] memory addresses;
        uint8 tokenBought;


        if (buyPrice > msg.value) {

            if (msg.value > 0) {
                msg.sender.transfer(msg.value);
            }

            return;
        } else if (buyPrice < msg.value) {
            msg.sender.transfer(msg.value - buyPrice);
        }

        (payouts, addresses, tokenBought) = getPayouts(x, y);


        token.owner = msg.sender;
        token.buyPrice = buyPrice;
        balances[msg.sender]++;

        doPayouts(payouts, addresses, buyPrice);

        uint256 tax = getRegionTax(token.region);

        if (regions[token.region].owner != address(0) && tax > 100) {
            uint256 taxValue = ((basePrice * (tax - 100) + ((tokenBought ** 2) * minMargin * (tax - 100))) / 100);
            regions[token.region].owner.transfer(taxValue);
            emit RegionPayout(regions[token.region].owner, taxValue);
        }

        emit Transfer(address(0), msg.sender, zone[x][y]);

    }

    function doPayouts(uint256[49] payouts, address[49] addresses, uint256 fullValue) internal returns (uint256){
        for (uint8 i = 0; i < addresses.length; i++) {
            if (addresses[i] == address(0)) {
                continue;
            }
            addresses[i].transfer(payouts[i]);
            emit Payout(addresses[i], payouts[i]);
            fullValue -= payouts[i];
        }


        return fullValue;
    }

    function getPayouts(int32 x, int32 y) public view returns (uint256[49] payouts, address[49] addresses, uint8 tokenBought) {

        for (int32 xi = x - 3; xi <= x + 3; xi++) {
            for (int32 yi = y - 3; yi <= y + 3; yi++) {
                if (x == xi && y == yi) {
                    continue;
                }
                MapLand memory token = tokens[zone[xi][yi]];

                if (token.buyPrice > 0) {
                    payouts[tokenBought] = (token.buyPrice / divider);
                    addresses[tokenBought] = (token.owner);
                    tokenBought++;

                }
            }
        }


        return (payouts, addresses, tokenBought);
    }

    function getLandPrice(int32 x, int32 y) public view returns (uint256 price){

        if (zone[x][y] == 0) {
            return;
        }

        MapLand memory token = tokens[zone[x][y]];

        int256[2] memory start;
        start[0] = x - 3;
        start[1] = y - 3;
        uint256[2] memory counters = [uint256(0), 0];
        for (int32 xi = x - 3; xi <= x + 3; xi++) {
            for (int32 yi = y - 3; yi <= y + 3; yi++) {
                if (x == xi && y == yi) {
                    continue;
                }

                if (tokens[zone[xi][yi]].buyPrice > 0) {
                    counters[1] += tokens[zone[xi][yi]].buyPrice;
                    counters[0]++;
                }
            }
        }

        uint16 regionId = token.region;

        uint8 taxValue = getRegionTax(regionId);

        if (counters[0] == 0) {
            price = ((basePrice * taxValue) / 100);
        } else {
            price = ((basePrice * taxValue) / 100) + (uint(counters[1]) / divider) + (((counters[0] ** 2) * minMargin * taxValue) / 100);
        }
    }


    function getRegionTax(uint16 regionId) internal view returns (uint8) {
        if (regions[regionId].owner != address(0)) {
            return (100 + regions[regionId].tax);
        }
        return (100 + defaultRegionTax);
    }

    function approve(address _to, uint256 _tokenId) public isTokenOwner(_tokenId) isNotNullAddress(_to) {
        approved[_tokenId] = _to;
        emit Approval(msg.sender, _to, _tokenId);
    }

    function setRegionOwner(uint16 regionId, address owner, uint256 viewPrice) public onlyOwner {
        require(regions[regionId].owner == address(0) && !regions[regionId].onSale);

        regions[regionId].owner = owner;

        RegionBid storage bid = region_bids[regionId];
        bid.activeTill = now;
        bid.currentBuyer = owner;
        bid.bid = viewPrice;

        emit RegionSold(regionId, owner);

    }

    function transfer(address _to, uint256 _tokenId) public isTokenOwner(_tokenId) isNotNullAddress(_to) isApproved(_tokenId, _to) {
        tokens[_tokenId].owner = _to;

        balances[msg.sender]--;
        balances[_to]++;

        emit Transfer(msg.sender, _to, _tokenId);
    }


    function transferFrom(address _from, address _to, uint256 _tokenId) public isTokenOwner(_tokenId) isApproved(_tokenId, _to) {
        tokens[_tokenId].owner = _to;

        emit Transfer(_from, _to, _tokenId);
    }

    function ownerOf(uint256 _tokenId) public view returns (address owner) {
        owner = tokens[_tokenId].owner;
    }

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

    function balanceOf(address _owner) public view returns (uint256 balance) {
        balance = balances[_owner];
    }

    function setSaleEnd() public onlyOwner {
        SaleActive = false;
        emit EndSale(true);
    }

    function isActive() public view returns (bool) {
        return SaleActive;
    }


    // Events
    event Transfer(address indexed from, address indexed to, uint256 tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 tokenId);

    event RegionAllowSaleLands(uint16 regionId);
    event ActivateMap(int256 x, int256 y, uint256 tokenId);
    event AddRegion(uint16 indexed regionId);
    event UpdateRegionPrice(uint16 indexed regionId, uint256 price);
    event ChangeRegionName(uint16 indexed regionId, string regionName);
    event TaxUpdate(uint16 indexed regionId, uint8 tax);
    event RegionOnSale(uint16 indexed regionId);
    event RegionNewBid(uint16 indexed regionId, address buyer, uint256 value, uint256 activeTill);
    event AuctionStarts(uint16 indexed regionId);
    event RegionSold(uint16 indexed regionId, address owner);
    event Payout(address indexed to, uint256 value);
    event RegionPayout(address indexed to, uint256 value);
    event EndSale(bool isEnded);
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"setBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isActive","outputs":[{"name":"","type":"bool"}],"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":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"setMinMargin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"}],"name":"completeRegionAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"regionId","type":"uint16"}],"name":"getRegionPrice","outputs":[{"name":"next_bid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"x","type":"int32"},{"name":"y","type":"int32"}],"name":"getPayouts","outputs":[{"name":"payouts","type":"uint256[49]"},{"name":"addresses","type":"address[49]"},{"name":"tokenBought","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"divider","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"x","type":"int32"},{"name":"y","type":"int32"}],"name":"buyLand","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"minMargin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokens","outputs":[{"name":"resources","type":"uint8"},{"name":"region","type":"uint16"},{"name":"buyPrice","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"}],"name":"makeBid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"}],"name":"setAllowSellLands","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"},{"name":"regionName","type":"string"}],"name":"setRegionName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"x","type":"int32[]"},{"name":"y","type":"int32[]"},{"name":"region","type":"uint8[]"},{"name":"resources","type":"uint8[]"}],"name":"activateZone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_regionId","type":"uint16"},{"name":"_startPrice","type":"uint256"},{"name":"_regionName","type":"string"}],"name":"addRegion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"approved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"int32"},{"name":"","type":"int32"}],"name":"zone","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"}],"name":"setRegionOnSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint16"}],"name":"regions","outputs":[{"name":"owner","type":"address"},{"name":"tax","type":"uint8"},{"name":"startPrice","type":"uint256"},{"name":"regionName","type":"string"},{"name":"onSale","type":"bool"},{"name":"allowSaleLands","type":"bool"},{"name":"created","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint16"}],"name":"region_bids","outputs":[{"name":"currentBuyer","type":"address"},{"name":"bid","type":"uint256"},{"name":"activeTill","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"x","type":"int32"},{"name":"y","type":"int32"}],"name":"getLandPrice","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_mapMaster","type":"address"}],"name":"setMapMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"}],"name":"takeRegion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"},{"name":"owner","type":"address"},{"name":"viewPrice","type":"uint256"}],"name":"setRegionOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"basePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"defaultRegionTax","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_regionId","type":"uint16"}],"name":"regionExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"setBasePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"},{"name":"tax","type":"uint8"}],"name":"setRegionTax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"regionId","type":"uint16"},{"name":"price","type":"uint256"}],"name":"setRegionPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SaleActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawalAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mapMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setSaleEnd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"zone_reverse","outputs":[{"name":"x","type":"int32"},{"name":"y","type":"int32"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"regionId","type":"uint16"}],"name":"RegionAllowSaleLands","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"x","type":"int256"},{"indexed":false,"name":"y","type":"int256"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"ActivateMap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"}],"name":"AddRegion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"},{"indexed":false,"name":"price","type":"uint256"}],"name":"UpdateRegionPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"},{"indexed":false,"name":"regionName","type":"string"}],"name":"ChangeRegionName","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"},{"indexed":false,"name":"tax","type":"uint8"}],"name":"TaxUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"}],"name":"RegionOnSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"activeTill","type":"uint256"}],"name":"RegionNewBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"}],"name":"AuctionStarts","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"regionId","type":"uint16"},{"indexed":false,"name":"owner","type":"address"}],"name":"RegionSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Payout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"RegionPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"isEnded","type":"bool"}],"name":"EndSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526001600860006101000a81548160ff021916908315150217905550662386f26fc100006009556606e80ec5718000600a556008600b60006101000a81548163ffffffff021916908363ffffffff160217905550600a600b60046101000a81548160ff021916908360ff1602179055503480156200008057600080fd5b506000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548091906001016200015b9190620001ce565b50600c6001600c80549050038154811015156200017457fe5b90600052602060002090600302019050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200027d565b815481835581811115620001fe57600302816003028360005260206000209182019101620001fd919062000203565b5b505050565b6200027a91905b808211156200027657600080820160006101000a81549060ff02191690556000820160016101000a81549061ffff021916905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506003016200020a565b5090565b90565b61499f806200028d6000396000f30060806040526004361061023b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146102405780631051db341461028d57806318160ddd146102bc5780631c31f710146102e757806322f3e2d41461032a57806323b872dd1461035957806327e235e3146103c65780632cc273411461041d5780632ce2d7c01461044a578063301f2dac1461047b578063301fdb54146104c0578063378efa371461057557806338af3eed146105ac57806338e998a71461060357806339c294be146106335780634f64b2be1461065e57806351c03b85146106ee57806360bd409e146107125780636352211e146107435780636b55264d146107b05780636eebb73f1461082757806370a0823114610956578063792a152d146109ad5780637d4061e614610a2e578063835fc6ca14610a9b5780638d3f1e4414610ac85780638da5cb5b14610b19578063969bece314610b705780639a877fb314610ba15780639fe0b36714610cb3578063a9059cbb14610d32578063ab07f05414610d7f578063b43d9ede14610dd0578063b5dcbb6914610e13578063b68e855214610e44578063c7876ea414610e9f578063cd9a27ba14610eca578063d5a506d014610efb578063de4b326214610f44578063e850efaf14610f71578063eb0bfa3814610faf578063f1d2165f14610fea578063f2fde38b14611019578063f44b79b31461105c578063f4d176e114611073578063f835a686146110ca578063fa5d174d146110e1575b600080fd5b34801561024c57600080fd5b5061028b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611135565b005b34801561029957600080fd5b506102a26112fc565b604051808215151515815260200191505060405180910390f35b3480156102c857600080fd5b506102d1611301565b6040518082815260200191505060405180910390f35b3480156102f357600080fd5b50610328600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130e565b005b34801561033657600080fd5b5061033f6113ad565b604051808215151515815260200191505060405180910390f35b34801561036557600080fd5b506103c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113c4565b005b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115cc565b6040518082815260200191505060405180910390f35b34801561042957600080fd5b50610448600480360381019080803590602001909291905050506115e4565b005b34801561045657600080fd5b50610479600480360381019080803561ffff169060200190929190505050611649565b005b34801561048757600080fd5b506104aa600480360381019080803561ffff1690602001909291905050506117bd565b6040518082815260200191505060405180910390f35b3480156104cc57600080fd5b506104fb600480360381019080803560030b9060200190929190803560030b9060200190929190505050611924565b6040518084603160200280838360005b8381101561052657808201518184015260208101905061050b565b5050505090500183603160200280838360005b83811015610554578082015181840152602081019050610539565b505050509050018260ff1660ff168152602001935050505060405180910390f35b34801561058157600080fd5b5061058a611b62565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156105b857600080fd5b506105c1611b78565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610631600480360381019080803560030b9060200190929190803560030b9060200190929190505050611b9e565b005b34801561063f57600080fd5b506106486121e8565b6040518082815260200191505060405180910390f35b34801561066a57600080fd5b50610689600480360381019080803590602001909291905050506121ee565b604051808560ff1660ff1681526020018461ffff1661ffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b610710600480360381019080803561ffff169060200190929190505050612268565b005b34801561071e57600080fd5b50610741600480360381019080803561ffff169060200190929190505050612711565b005b34801561074f57600080fd5b5061076e600480360381019080803590602001909291905050506127e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107bc57600080fd5b50610825600480360381019080803561ffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612830565b005b34801561083357600080fd5b5061095460048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612963565b005b34801561096257600080fd5b50610997600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a4b565b6040518082815260200191505060405180910390f35b3480156109b957600080fd5b50610a2c600480360381019080803561ffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612a94565b005b348015610a3a57600080fd5b50610a5960048036038101908080359060200190929190505050612c47565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa757600080fd5b50610ac660048036038101908080359060200190929190505050612c7a565b005b348015610ad457600080fd5b50610b03600480360381019080803560030b9060200190929190803560030b9060200190929190505050612d65565b6040518082815260200191505060405180910390f35b348015610b2557600080fd5b50610b2e612d8a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b7c57600080fd5b50610b9f600480360381019080803561ffff169060200190929190505050612daf565b005b348015610bad57600080fd5b50610bd0600480360381019080803561ffff169060200190929190505050612e76565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018760ff1660ff16815260200186815260200180602001851515151581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610c72578082015181840152602081019050610c57565b50505050905090810190601f168015610c9f5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b348015610cbf57600080fd5b50610ce2600480360381019080803561ffff169060200190929190505050612fa4565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b348015610d3e57600080fd5b50610d7d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fee565b005b348015610d8b57600080fd5b50610dba600480360381019080803560030b9060200190929190803560030b90602001909291905050506132d2565b6040518082815260200191505060405180910390f35b348015610ddc57600080fd5b50610e11600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136ab565b005b348015610e1f57600080fd5b50610e42600480360381019080803561ffff16906020019092919050505061374a565b005b348015610e5057600080fd5b50610e9d600480360381019080803561ffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506138b2565b005b348015610eab57600080fd5b50610eb4613afa565b6040518082815260200191505060405180910390f35b348015610ed657600080fd5b50610edf613b00565b604051808260ff1660ff16815260200191505060405180910390f35b348015610f0757600080fd5b50610f2a600480360381019080803561ffff169060200190929190505050613b13565b604051808215151515815260200191505060405180910390f35b348015610f5057600080fd5b50610f6f60048036038101908080359060200190929190505050613b48565b005b348015610f7d57600080fd5b50610fad600480360381019080803561ffff169060200190929190803560ff169060200190929190505050613bad565b005b348015610fbb57600080fd5b50610fe8600480360381019080803561ffff16906020019092919080359060200190929190505050613d5f565b005b348015610ff657600080fd5b50610fff613ec6565b604051808215151515815260200191505060405180910390f35b34801561102557600080fd5b5061105a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ed9565b005b34801561106857600080fd5b5061107161402e565b005b34801561107f57600080fd5b5061108861410b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110d657600080fd5b506110df614131565b005b3480156110ed57600080fd5b5061110c600480360381019080803590602001909291905050506141e5565b604051808360030b60030b81526020018260030b60030b81526020019250505060405180910390f35b803373ffffffffffffffffffffffffffffffffffffffff16600c8281548110151561115c57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112015760003411156111fc573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156111fa573d6000803e3d6000fd5b505b6112f7565b828073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415151561123e57600080fd5b836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3505b505050565b600181565b6000600c80549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561136957600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860009054906101000a900460ff16905090565b803373ffffffffffffffffffffffffffffffffffffffff16600c828154811015156113eb57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149057600034111561148b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611489573d6000803e3d6000fd5b505b6115c6565b81838073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114ff57600080fd5b84600c8581548110151561150f57fe5b906000526020600020906003020160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505b50505050565b60026020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561163f57600080fd5b80600a8190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561171d576117ba565b42600760008361ffff1661ffff16815260200190815260200160002060020154118061176757506000600760008361ffff1661ffff16815260200190815260200160002060020154145b15611771576117ba565b6117b981600760008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614223565b5b50565b60008073ffffffffffffffffffffffffffffffffffffffff16600660008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185857600760008361ffff1661ffff16815260200190815260200160002060010154905061191f565b600073ffffffffffffffffffffffffffffffffffffffff16600760008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118fc576706f05b59d3b20000600760008461ffff1661ffff1681526020019081526020016000206001015401905061191e565b600660008361ffff1661ffff1681526020019081526020016000206001015490505b5b919050565b61192c614753565b611934614777565b600080600061194161479b565b6003880392505b6003880160030b8360030b131515611b4f576003870391505b6003870160030b8260030b131515611b42578260030b8860030b14801561198d57508160030b8760030b145b1561199757611b35565b600c600460008560030b60030b815260200190815260200160002060008460030b60030b8152602001908152602001600020548154811015156119d657fe5b9060005260206000209060030201608060405190810160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050600081604001511115611b3457600b60009054906101000a900463ffffffff1663ffffffff168160400151811515611ac357fe5b04868560ff16603181101515611ad557fe5b6020020181815250508060600151858560ff16603181101515611af457fe5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083806001019450505b5b8180600101925050611961565b8280600101935050611948565b8585859550955095505050509250925092565b600b60009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611ba9614753565b611bb1614777565b6000806000600860009054906101000a900460ff161515611bd157600080fd5b600c600460008b60030b60030b815260200190815260200160002060008a60030b60030b815260200190815260200160002054815481101515611c1057fe5b906000526020600020906003020196506000600460008b60030b60030b815260200190815260200160002060008a60030b60030b8152602001908152602001600020541480611c63575060008760010154115b80611cbf5750600073ffffffffffffffffffffffffffffffffffffffff168760020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80611d055750600660008860000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060030160019054906101000a900460ff16155b15611d60576000341115611d5b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611d59573d6000803e3d6000fd5b505b6121dd565b611d6a89896132d2565b95506000861415611dcb576000341115611dc6573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611dc4573d6000803e3d6000fd5b505b6121dd565b34861115611e29576000341115611e24573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611e22573d6000803e3d6000fd5b505b6121dd565b34861015611e7b573373ffffffffffffffffffffffffffffffffffffffff166108fc8734039081150290604051600060405180830381858888f19350505050158015611e79573d6000803e3d6000fd5b505b611e858989611924565b809550819650829750505050338760020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550858760010181905550600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550611f37858588614361565b50611f538760000160019054906101000a900461ffff166144e0565b60ff169150600073ffffffffffffffffffffffffffffffffffffffff16600660008960000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611fe55750606482115b15612146576064808303600a546002860a60ff16020260648403600954020181151561200d57fe5b049050600660008860000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120a6573d6000803e3d6000fd5b50600660008860000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7e20eee8794e3a490330b424b5875ba62ffefb32b4ae48090cb82edfc2d2ec89826040518082815260200191505060405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460008d60030b60030b815260200190815260200160002060008c60030b60030b8152602001908152602001600020546040518082815260200191505060405180910390a35b505050505050505050565b600a5481565b600c818154811015156121fd57fe5b90600052602060002090600302016000915090508060000160009054906101000a900460ff16908060000160019054906101000a900461ffff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b600080600860009054906101000a900460ff16151561228657600080fd5b826000600760008361ffff1661ffff16815260200190815260200160002060020154141580156122d3575042600760008361ffff1661ffff16815260200190815260200160002060020154105b806123495750600073ffffffffffffffffffffffffffffffffffffffff16600660008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8061237d5750600660008261ffff1661ffff16815260200190815260200160002060030160009054906101000a900460ff16155b156123d85760003411156123d3573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156123d1573d6000803e3d6000fd5b505b61270b565b600073ffffffffffffffffffffffffffffffffffffffff16600760008661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561247c576706f05b59d3b20000600760008661ffff1661ffff1681526020019081526020016000206001015401925061249e565b600660008561ffff1661ffff1681526020019081526020016000206001015492505b348311156124fc5760003411156124f7573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156124f5573d6000803e3d6000fd5b505b61270a565b600760008561ffff1661ffff1681526020019081526020016000209150600073ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156125e7578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc83600101549081150290604051600060405180830381858888f193505050501580156125e1573d6000803e3d6000fd5b50612619565b8361ffff167ff6e8b71db70830e39e2c98f38b929b65c3521e6479cc5fa19b21567574f2b7a460405160405180910390a25b62093a8042018260020181905550338260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503482600101819055508361ffff167f29a276aafcd155473a77c82e5c2a4ccc84d83bac0fcd454d1e9ca6dacecf0c1f3334600760008961ffff1661ffff16815260200190815260200160002060020154604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a25b5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561276d57600080fd5b6001600660008361ffff1661ffff16815260200190815260200160002060030160016101000a81548160ff0219169083151502179055507fb51fb8bbfa3da24418034519117a50979b837f70e121296bc026ee665ce79b2381604051808261ffff1661ffff16815260200191505060405180910390a150565b6000600c828154811015156127f757fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561288b57600080fd5b80600660008461ffff1661ffff16815260200190815260200160002060020190805190602001906128bd9291906147e1565b508161ffff167fb06f576e825ec000eb0407092b3150b13f3c68cc964d0a5a8405c0b715e714ac826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561292557808201518184015260208101905061290a565b50505050905090810190601f1680156129525780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60003373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129c157600080fd5b600090505b8451811015612a4457612a3785828151811015156129e057fe5b9060200190602002015185838151811015156129f857fe5b906020019060200201518584815181101515612a1057fe5b906020019060200201518585815181101515612a2857fe5b906020019060200201516145a6565b80806001019150506129c6565b5050505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af257600080fd5b600860009054906101000a900460ff161515612b0d57600080fd5b600660008561ffff1661ffff16815260200190815260200160002060030160029054906101000a900460ff1615612b4357612c41565b600660008561ffff1661ffff1681526020019081526020016000209050828160010181905550600b60049054906101000a900460ff168160000160146101000a81548160ff021916908360ff16021790555060008160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081816002019080519060200190612bf19291906147e1565b5060018160030160026101000a81548160ff0219169083151502179055508361ffff167f399f06325e5cc0f4ee1fb06491dbac3bb10e0b26fe872a831673a1b84e326c3560405160405180910390a25b50505050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cd557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631811115612cf957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d61573d6000803e3d6000fd5b5050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612e0b57600080fd5b6001600660008361ffff1661ffff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055508061ffff167f1f4df03e985a1c2625c2bb5c99d6baabdcf19970943fc02c21110cf810fe48ed60405160405180910390a250565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff1690806001015490806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612f615780601f10612f3657610100808354040283529160200191612f61565b820191906000526020600020905b815481529060010190602001808311612f4457829003601f168201915b5050505050908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16908060030160029054906101000a900460ff16905087565b60076020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b803373ffffffffffffffffffffffffffffffffffffffff16600c8281548110151561301557fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156130ba5760003411156130b5573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156130b3573d6000803e3d6000fd5b505b6132cd565b828073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141515156130f757600080fd5b82848073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561316657600080fd5b85600c8681548110151561317657fe5b906000526020600020906003020160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505b505050565b60006132dc61479b565b6132e4614861565b6132ec614883565b6000806000806000600460008c60030b60030b815260200190815260200160002060008b60030b60030b81526020019081526020016000205414156133305761369e565b600c600460008c60030b60030b815260200190815260200160002060008b60030b60030b81526020019081526020016000205481548110151561336f57fe5b9060005260206000209060030201608060405190810160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050965060038a0360030b86600060028110151561343e57fe5b6020020181815250506003890360030b86600160028110151561345d57fe5b6020020181815250506040805190810160405280600081526020016000815250945060038a0393505b60038a0160030b8460030b1315156135d8576003890392505b6003890160030b8360030b1315156135cb578360030b8a60030b1480156134cb57508260030b8960030b145b156134d5576135be565b6000600c600460008760030b60030b815260200190815260200160002060008660030b60030b81526020019081526020016000205481548110151561351657fe5b90600052602060002090600302016001015411156135bd57600c600460008660030b60030b815260200190815260200160002060008560030b60030b81526020019081526020016000205481548110151561356d57fe5b90600052602060002090600302016001015485600160028110151561358e57fe5b6020020181815101915081815250508460006002811015156135ac57fe5b602002018051809190600101815250505b5b828060010193505061349f565b8380600101945050613486565b866020015191506135e8826144e0565b905060008560006002811015156135fb57fe5b602002015114156136215760648160ff166009540281151561361957fe5b04975061369d565b60648160ff16600a54600288600060028110151561363b57fe5b60200201510a020281151561364c57fe5b04600b60009054906101000a900463ffffffff1663ffffffff1686600160028110151561367557fe5b602002015181151561368357fe5b0460648360ff166009540281151561369757fe5b04010197505b5b5050505050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561370657600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff16600660008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156137c357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600760008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561383b57600080fd5b42600760008361ffff1661ffff1681526020019081526020016000206002015410151561386757600080fd5b6138af81600760008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614223565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561390f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660008661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156139b25750600660008561ffff1661ffff16815260200190815260200160002060030160009054906101000a900460ff16155b15156139bd57600080fd5b82600660008661ffff1661ffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008561ffff1661ffff1681526020019081526020016000209050428160020181905550828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600101819055508361ffff167f31829e9d057f1095a6016bb319e553b5fa64419f5ad8b0147aeb1586b1dc3d0e84604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b60095481565b600b60049054906101000a900460ff1681565b6000600660008361ffff1661ffff16815260200190815260200160002060030160029054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ba357600080fd5b8060098190555050565b813373ffffffffffffffffffffffffffffffffffffffff16600660008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613c77576000341115613c72573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015613c70573d6000803e3d6000fd5b505b613d5a565b600860009054906101000a900460ff161515613c9257600080fd5b60648260ff1611158015613caa575060008260ff1610155b1515613cb557600080fd5b81600660008561ffff1661ffff16815260200190815260200160002060000160146101000a81548160ff021916908360ff1602179055508261ffff167fc72bc3ebe54db6ad5d04be20eb76955c1fbdfc05fc89a45d3959eca9f75e77cb600660008661ffff1661ffff16815260200190815260200160002060000160149054906101000a900460ff16604051808260ff1660ff16815260200191505060405180910390a25b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613dba57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613e5d5750600660008361ffff1661ffff16815260200190815260200160002060030160009054906101000a900460ff16155b15613ec25780600660008461ffff1661ffff168152602001908152602001600020600101819055508161ffff167f334cd32957a0eb9f4c727ed73fab8a13424e9da07e864bd7beb3f84c7650b3e8826040518082815260200191505060405180910390a25b5050565b600860009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613f3457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613f7057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561408957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015614108573d6000803e3d6000fd5b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561418c57600080fd5b6000600860006101000a81548160ff0219169083151502179055507f75db2c8af3a77c8f79f1e5f6f7606c455d1d3d974acad372b8f4c38d0b541a396001604051808215151515815260200191505060405180910390a1565b60056020528060005260406000206000915090508060000160009054906101000a900460030b908060000160049054906101000a900460030b905082565b80600660008461ffff1661ffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008461ffff1661ffff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055508161ffff167f31829e9d057f1095a6016bb319e553b5fa64419f5ad8b0147aeb1586b1dc3d0e600660008561ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600080600090505b60318160ff1610156144d557600073ffffffffffffffffffffffffffffffffffffffff16848260ff1660318110151561439e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1614156143c4576144c8565b838160ff166031811015156143d557fe5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc868360ff1660318110151561440457fe5b60200201519081150290604051600060405180830381858888f19350505050158015614434573d6000803e3d6000fd5b50838160ff1660318110151561444657fe5b602002015173ffffffffffffffffffffffffffffffffffffffff167f5afeca38b2064c23a692c4cf353015d80ab3ecc417b4f893f372690c11fbd9a6868360ff1660318110151561449357fe5b60200201516040518082815260200191505060405180910390a2848160ff166031811015156144be57fe5b6020020151830392505b8080600101915050614369565b829150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561458b57600660008361ffff1661ffff16815260200190815260200160002060000160149054906101000a900460ff1660640190506145a1565b600b60049054906101000a900460ff1660640190505b919050565b6000600c80548091906001016145bc91906148a5565b50600c6001600c80549050038154811015156145d457fe5b906000526020600020906003020190508260ff168160000160016101000a81548161ffff021916908361ffff160217905550818160000160006101000a81548160ff021916908360ff160217905550600081600101819055506001600c8054905003600460008760030b60030b815260200190815260200160002060008660030b60030b81526020019081526020016000208190555060408051908101604052808660030b81526020018560030b815250600560006001600c8054905003815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff1602179055509050507f8f32e652c6806b682ac4685b78efed8695949d3dc61a1d22e96fedea32bab1f385856001600c8054905003604051808460030b81526020018360030b8152602001828152602001935050505060405180910390a15050505050565b61062060405190810160405280603190602082028038833980820191505090505090565b61062060405190810160405280603190602082028038833980820191505090505090565b608060405190810160405280600060ff168152602001600061ffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061482257805160ff1916838001178555614850565b82800160010185558215614850579182015b8281111561484f578251825591602001919060010190614834565b5b50905061485d91906148d7565b5090565b6040805190810160405280600290602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b8154818355818111156148d2576003028160030283600052602060002091820191016148d191906148fc565b5b505050565b6148f991905b808211156148f55760008160009055506001016148dd565b5090565b90565b61497091905b8082111561496c57600080820160006101000a81549060ff02191690556000820160016101000a81549061ffff021916905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600301614902565b5090565b905600a165627a7a72305820be3d31cf1b4ded27c2bcd792c5a6fae0969aad5c77f55fcd0f7ed783874846fd0029

Deployed Bytecode

0x60806040526004361061023b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146102405780631051db341461028d57806318160ddd146102bc5780631c31f710146102e757806322f3e2d41461032a57806323b872dd1461035957806327e235e3146103c65780632cc273411461041d5780632ce2d7c01461044a578063301f2dac1461047b578063301fdb54146104c0578063378efa371461057557806338af3eed146105ac57806338e998a71461060357806339c294be146106335780634f64b2be1461065e57806351c03b85146106ee57806360bd409e146107125780636352211e146107435780636b55264d146107b05780636eebb73f1461082757806370a0823114610956578063792a152d146109ad5780637d4061e614610a2e578063835fc6ca14610a9b5780638d3f1e4414610ac85780638da5cb5b14610b19578063969bece314610b705780639a877fb314610ba15780639fe0b36714610cb3578063a9059cbb14610d32578063ab07f05414610d7f578063b43d9ede14610dd0578063b5dcbb6914610e13578063b68e855214610e44578063c7876ea414610e9f578063cd9a27ba14610eca578063d5a506d014610efb578063de4b326214610f44578063e850efaf14610f71578063eb0bfa3814610faf578063f1d2165f14610fea578063f2fde38b14611019578063f44b79b31461105c578063f4d176e114611073578063f835a686146110ca578063fa5d174d146110e1575b600080fd5b34801561024c57600080fd5b5061028b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611135565b005b34801561029957600080fd5b506102a26112fc565b604051808215151515815260200191505060405180910390f35b3480156102c857600080fd5b506102d1611301565b6040518082815260200191505060405180910390f35b3480156102f357600080fd5b50610328600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130e565b005b34801561033657600080fd5b5061033f6113ad565b604051808215151515815260200191505060405180910390f35b34801561036557600080fd5b506103c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113c4565b005b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115cc565b6040518082815260200191505060405180910390f35b34801561042957600080fd5b50610448600480360381019080803590602001909291905050506115e4565b005b34801561045657600080fd5b50610479600480360381019080803561ffff169060200190929190505050611649565b005b34801561048757600080fd5b506104aa600480360381019080803561ffff1690602001909291905050506117bd565b6040518082815260200191505060405180910390f35b3480156104cc57600080fd5b506104fb600480360381019080803560030b9060200190929190803560030b9060200190929190505050611924565b6040518084603160200280838360005b8381101561052657808201518184015260208101905061050b565b5050505090500183603160200280838360005b83811015610554578082015181840152602081019050610539565b505050509050018260ff1660ff168152602001935050505060405180910390f35b34801561058157600080fd5b5061058a611b62565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156105b857600080fd5b506105c1611b78565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610631600480360381019080803560030b9060200190929190803560030b9060200190929190505050611b9e565b005b34801561063f57600080fd5b506106486121e8565b6040518082815260200191505060405180910390f35b34801561066a57600080fd5b50610689600480360381019080803590602001909291905050506121ee565b604051808560ff1660ff1681526020018461ffff1661ffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b610710600480360381019080803561ffff169060200190929190505050612268565b005b34801561071e57600080fd5b50610741600480360381019080803561ffff169060200190929190505050612711565b005b34801561074f57600080fd5b5061076e600480360381019080803590602001909291905050506127e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107bc57600080fd5b50610825600480360381019080803561ffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612830565b005b34801561083357600080fd5b5061095460048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612963565b005b34801561096257600080fd5b50610997600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a4b565b6040518082815260200191505060405180910390f35b3480156109b957600080fd5b50610a2c600480360381019080803561ffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612a94565b005b348015610a3a57600080fd5b50610a5960048036038101908080359060200190929190505050612c47565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa757600080fd5b50610ac660048036038101908080359060200190929190505050612c7a565b005b348015610ad457600080fd5b50610b03600480360381019080803560030b9060200190929190803560030b9060200190929190505050612d65565b6040518082815260200191505060405180910390f35b348015610b2557600080fd5b50610b2e612d8a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b7c57600080fd5b50610b9f600480360381019080803561ffff169060200190929190505050612daf565b005b348015610bad57600080fd5b50610bd0600480360381019080803561ffff169060200190929190505050612e76565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018760ff1660ff16815260200186815260200180602001851515151581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610c72578082015181840152602081019050610c57565b50505050905090810190601f168015610c9f5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b348015610cbf57600080fd5b50610ce2600480360381019080803561ffff169060200190929190505050612fa4565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b348015610d3e57600080fd5b50610d7d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fee565b005b348015610d8b57600080fd5b50610dba600480360381019080803560030b9060200190929190803560030b90602001909291905050506132d2565b6040518082815260200191505060405180910390f35b348015610ddc57600080fd5b50610e11600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136ab565b005b348015610e1f57600080fd5b50610e42600480360381019080803561ffff16906020019092919050505061374a565b005b348015610e5057600080fd5b50610e9d600480360381019080803561ffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506138b2565b005b348015610eab57600080fd5b50610eb4613afa565b6040518082815260200191505060405180910390f35b348015610ed657600080fd5b50610edf613b00565b604051808260ff1660ff16815260200191505060405180910390f35b348015610f0757600080fd5b50610f2a600480360381019080803561ffff169060200190929190505050613b13565b604051808215151515815260200191505060405180910390f35b348015610f5057600080fd5b50610f6f60048036038101908080359060200190929190505050613b48565b005b348015610f7d57600080fd5b50610fad600480360381019080803561ffff169060200190929190803560ff169060200190929190505050613bad565b005b348015610fbb57600080fd5b50610fe8600480360381019080803561ffff16906020019092919080359060200190929190505050613d5f565b005b348015610ff657600080fd5b50610fff613ec6565b604051808215151515815260200191505060405180910390f35b34801561102557600080fd5b5061105a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ed9565b005b34801561106857600080fd5b5061107161402e565b005b34801561107f57600080fd5b5061108861410b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110d657600080fd5b506110df614131565b005b3480156110ed57600080fd5b5061110c600480360381019080803590602001909291905050506141e5565b604051808360030b60030b81526020018260030b60030b81526020019250505060405180910390f35b803373ffffffffffffffffffffffffffffffffffffffff16600c8281548110151561115c57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112015760003411156111fc573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156111fa573d6000803e3d6000fd5b505b6112f7565b828073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415151561123e57600080fd5b836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3505b505050565b600181565b6000600c80549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561136957600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860009054906101000a900460ff16905090565b803373ffffffffffffffffffffffffffffffffffffffff16600c828154811015156113eb57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149057600034111561148b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611489573d6000803e3d6000fd5b505b6115c6565b81838073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114ff57600080fd5b84600c8581548110151561150f57fe5b906000526020600020906003020160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505b50505050565b60026020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561163f57600080fd5b80600a8190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561171d576117ba565b42600760008361ffff1661ffff16815260200190815260200160002060020154118061176757506000600760008361ffff1661ffff16815260200190815260200160002060020154145b15611771576117ba565b6117b981600760008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614223565b5b50565b60008073ffffffffffffffffffffffffffffffffffffffff16600660008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185857600760008361ffff1661ffff16815260200190815260200160002060010154905061191f565b600073ffffffffffffffffffffffffffffffffffffffff16600760008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118fc576706f05b59d3b20000600760008461ffff1661ffff1681526020019081526020016000206001015401905061191e565b600660008361ffff1661ffff1681526020019081526020016000206001015490505b5b919050565b61192c614753565b611934614777565b600080600061194161479b565b6003880392505b6003880160030b8360030b131515611b4f576003870391505b6003870160030b8260030b131515611b42578260030b8860030b14801561198d57508160030b8760030b145b1561199757611b35565b600c600460008560030b60030b815260200190815260200160002060008460030b60030b8152602001908152602001600020548154811015156119d657fe5b9060005260206000209060030201608060405190810160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050600081604001511115611b3457600b60009054906101000a900463ffffffff1663ffffffff168160400151811515611ac357fe5b04868560ff16603181101515611ad557fe5b6020020181815250508060600151858560ff16603181101515611af457fe5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083806001019450505b5b8180600101925050611961565b8280600101935050611948565b8585859550955095505050509250925092565b600b60009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611ba9614753565b611bb1614777565b6000806000600860009054906101000a900460ff161515611bd157600080fd5b600c600460008b60030b60030b815260200190815260200160002060008a60030b60030b815260200190815260200160002054815481101515611c1057fe5b906000526020600020906003020196506000600460008b60030b60030b815260200190815260200160002060008a60030b60030b8152602001908152602001600020541480611c63575060008760010154115b80611cbf5750600073ffffffffffffffffffffffffffffffffffffffff168760020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80611d055750600660008860000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060030160019054906101000a900460ff16155b15611d60576000341115611d5b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611d59573d6000803e3d6000fd5b505b6121dd565b611d6a89896132d2565b95506000861415611dcb576000341115611dc6573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611dc4573d6000803e3d6000fd5b505b6121dd565b34861115611e29576000341115611e24573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611e22573d6000803e3d6000fd5b505b6121dd565b34861015611e7b573373ffffffffffffffffffffffffffffffffffffffff166108fc8734039081150290604051600060405180830381858888f19350505050158015611e79573d6000803e3d6000fd5b505b611e858989611924565b809550819650829750505050338760020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550858760010181905550600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550611f37858588614361565b50611f538760000160019054906101000a900461ffff166144e0565b60ff169150600073ffffffffffffffffffffffffffffffffffffffff16600660008960000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611fe55750606482115b15612146576064808303600a546002860a60ff16020260648403600954020181151561200d57fe5b049050600660008860000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120a6573d6000803e3d6000fd5b50600660008860000160019054906101000a900461ffff1661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7e20eee8794e3a490330b424b5875ba62ffefb32b4ae48090cb82edfc2d2ec89826040518082815260200191505060405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460008d60030b60030b815260200190815260200160002060008c60030b60030b8152602001908152602001600020546040518082815260200191505060405180910390a35b505050505050505050565b600a5481565b600c818154811015156121fd57fe5b90600052602060002090600302016000915090508060000160009054906101000a900460ff16908060000160019054906101000a900461ffff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b600080600860009054906101000a900460ff16151561228657600080fd5b826000600760008361ffff1661ffff16815260200190815260200160002060020154141580156122d3575042600760008361ffff1661ffff16815260200190815260200160002060020154105b806123495750600073ffffffffffffffffffffffffffffffffffffffff16600660008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8061237d5750600660008261ffff1661ffff16815260200190815260200160002060030160009054906101000a900460ff16155b156123d85760003411156123d3573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156123d1573d6000803e3d6000fd5b505b61270b565b600073ffffffffffffffffffffffffffffffffffffffff16600760008661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561247c576706f05b59d3b20000600760008661ffff1661ffff1681526020019081526020016000206001015401925061249e565b600660008561ffff1661ffff1681526020019081526020016000206001015492505b348311156124fc5760003411156124f7573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156124f5573d6000803e3d6000fd5b505b61270a565b600760008561ffff1661ffff1681526020019081526020016000209150600073ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156125e7578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc83600101549081150290604051600060405180830381858888f193505050501580156125e1573d6000803e3d6000fd5b50612619565b8361ffff167ff6e8b71db70830e39e2c98f38b929b65c3521e6479cc5fa19b21567574f2b7a460405160405180910390a25b62093a8042018260020181905550338260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503482600101819055508361ffff167f29a276aafcd155473a77c82e5c2a4ccc84d83bac0fcd454d1e9ca6dacecf0c1f3334600760008961ffff1661ffff16815260200190815260200160002060020154604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a25b5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561276d57600080fd5b6001600660008361ffff1661ffff16815260200190815260200160002060030160016101000a81548160ff0219169083151502179055507fb51fb8bbfa3da24418034519117a50979b837f70e121296bc026ee665ce79b2381604051808261ffff1661ffff16815260200191505060405180910390a150565b6000600c828154811015156127f757fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561288b57600080fd5b80600660008461ffff1661ffff16815260200190815260200160002060020190805190602001906128bd9291906147e1565b508161ffff167fb06f576e825ec000eb0407092b3150b13f3c68cc964d0a5a8405c0b715e714ac826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561292557808201518184015260208101905061290a565b50505050905090810190601f1680156129525780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60003373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129c157600080fd5b600090505b8451811015612a4457612a3785828151811015156129e057fe5b9060200190602002015185838151811015156129f857fe5b906020019060200201518584815181101515612a1057fe5b906020019060200201518585815181101515612a2857fe5b906020019060200201516145a6565b80806001019150506129c6565b5050505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af257600080fd5b600860009054906101000a900460ff161515612b0d57600080fd5b600660008561ffff1661ffff16815260200190815260200160002060030160029054906101000a900460ff1615612b4357612c41565b600660008561ffff1661ffff1681526020019081526020016000209050828160010181905550600b60049054906101000a900460ff168160000160146101000a81548160ff021916908360ff16021790555060008160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081816002019080519060200190612bf19291906147e1565b5060018160030160026101000a81548160ff0219169083151502179055508361ffff167f399f06325e5cc0f4ee1fb06491dbac3bb10e0b26fe872a831673a1b84e326c3560405160405180910390a25b50505050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cd557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631811115612cf957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d61573d6000803e3d6000fd5b5050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612e0b57600080fd5b6001600660008361ffff1661ffff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055508061ffff167f1f4df03e985a1c2625c2bb5c99d6baabdcf19970943fc02c21110cf810fe48ed60405160405180910390a250565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff1690806001015490806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612f615780601f10612f3657610100808354040283529160200191612f61565b820191906000526020600020905b815481529060010190602001808311612f4457829003601f168201915b5050505050908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16908060030160029054906101000a900460ff16905087565b60076020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b803373ffffffffffffffffffffffffffffffffffffffff16600c8281548110151561301557fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156130ba5760003411156130b5573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156130b3573d6000803e3d6000fd5b505b6132cd565b828073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141515156130f757600080fd5b82848073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561316657600080fd5b85600c8681548110151561317657fe5b906000526020600020906003020160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505b505050565b60006132dc61479b565b6132e4614861565b6132ec614883565b6000806000806000600460008c60030b60030b815260200190815260200160002060008b60030b60030b81526020019081526020016000205414156133305761369e565b600c600460008c60030b60030b815260200190815260200160002060008b60030b60030b81526020019081526020016000205481548110151561336f57fe5b9060005260206000209060030201608060405190810160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050965060038a0360030b86600060028110151561343e57fe5b6020020181815250506003890360030b86600160028110151561345d57fe5b6020020181815250506040805190810160405280600081526020016000815250945060038a0393505b60038a0160030b8460030b1315156135d8576003890392505b6003890160030b8360030b1315156135cb578360030b8a60030b1480156134cb57508260030b8960030b145b156134d5576135be565b6000600c600460008760030b60030b815260200190815260200160002060008660030b60030b81526020019081526020016000205481548110151561351657fe5b90600052602060002090600302016001015411156135bd57600c600460008660030b60030b815260200190815260200160002060008560030b60030b81526020019081526020016000205481548110151561356d57fe5b90600052602060002090600302016001015485600160028110151561358e57fe5b6020020181815101915081815250508460006002811015156135ac57fe5b602002018051809190600101815250505b5b828060010193505061349f565b8380600101945050613486565b866020015191506135e8826144e0565b905060008560006002811015156135fb57fe5b602002015114156136215760648160ff166009540281151561361957fe5b04975061369d565b60648160ff16600a54600288600060028110151561363b57fe5b60200201510a020281151561364c57fe5b04600b60009054906101000a900463ffffffff1663ffffffff1686600160028110151561367557fe5b602002015181151561368357fe5b0460648360ff166009540281151561369757fe5b04010197505b5b5050505050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561370657600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff16600660008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156137c357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600760008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561383b57600080fd5b42600760008361ffff1661ffff1681526020019081526020016000206002015410151561386757600080fd5b6138af81600760008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614223565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561390f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660008661ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156139b25750600660008561ffff1661ffff16815260200190815260200160002060030160009054906101000a900460ff16155b15156139bd57600080fd5b82600660008661ffff1661ffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008561ffff1661ffff1681526020019081526020016000209050428160020181905550828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600101819055508361ffff167f31829e9d057f1095a6016bb319e553b5fa64419f5ad8b0147aeb1586b1dc3d0e84604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b60095481565b600b60049054906101000a900460ff1681565b6000600660008361ffff1661ffff16815260200190815260200160002060030160029054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ba357600080fd5b8060098190555050565b813373ffffffffffffffffffffffffffffffffffffffff16600660008361ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613c77576000341115613c72573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015613c70573d6000803e3d6000fd5b505b613d5a565b600860009054906101000a900460ff161515613c9257600080fd5b60648260ff1611158015613caa575060008260ff1610155b1515613cb557600080fd5b81600660008561ffff1661ffff16815260200190815260200160002060000160146101000a81548160ff021916908360ff1602179055508261ffff167fc72bc3ebe54db6ad5d04be20eb76955c1fbdfc05fc89a45d3959eca9f75e77cb600660008661ffff1661ffff16815260200190815260200160002060000160149054906101000a900460ff16604051808260ff1660ff16815260200191505060405180910390a25b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613dba57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613e5d5750600660008361ffff1661ffff16815260200190815260200160002060030160009054906101000a900460ff16155b15613ec25780600660008461ffff1661ffff168152602001908152602001600020600101819055508161ffff167f334cd32957a0eb9f4c727ed73fab8a13424e9da07e864bd7beb3f84c7650b3e8826040518082815260200191505060405180910390a25b5050565b600860009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613f3457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613f7057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561408957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015614108573d6000803e3d6000fd5b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561418c57600080fd5b6000600860006101000a81548160ff0219169083151502179055507f75db2c8af3a77c8f79f1e5f6f7606c455d1d3d974acad372b8f4c38d0b541a396001604051808215151515815260200191505060405180910390a1565b60056020528060005260406000206000915090508060000160009054906101000a900460030b908060000160049054906101000a900460030b905082565b80600660008461ffff1661ffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008461ffff1661ffff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055508161ffff167f31829e9d057f1095a6016bb319e553b5fa64419f5ad8b0147aeb1586b1dc3d0e600660008561ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600080600090505b60318160ff1610156144d557600073ffffffffffffffffffffffffffffffffffffffff16848260ff1660318110151561439e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1614156143c4576144c8565b838160ff166031811015156143d557fe5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc868360ff1660318110151561440457fe5b60200201519081150290604051600060405180830381858888f19350505050158015614434573d6000803e3d6000fd5b50838160ff1660318110151561444657fe5b602002015173ffffffffffffffffffffffffffffffffffffffff167f5afeca38b2064c23a692c4cf353015d80ab3ecc417b4f893f372690c11fbd9a6868360ff1660318110151561449357fe5b60200201516040518082815260200191505060405180910390a2848160ff166031811015156144be57fe5b6020020151830392505b8080600101915050614369565b829150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660008461ffff1661ffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561458b57600660008361ffff1661ffff16815260200190815260200160002060000160149054906101000a900460ff1660640190506145a1565b600b60049054906101000a900460ff1660640190505b919050565b6000600c80548091906001016145bc91906148a5565b50600c6001600c80549050038154811015156145d457fe5b906000526020600020906003020190508260ff168160000160016101000a81548161ffff021916908361ffff160217905550818160000160006101000a81548160ff021916908360ff160217905550600081600101819055506001600c8054905003600460008760030b60030b815260200190815260200160002060008660030b60030b81526020019081526020016000208190555060408051908101604052808660030b81526020018560030b815250600560006001600c8054905003815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff1602179055509050507f8f32e652c6806b682ac4685b78efed8695949d3dc61a1d22e96fedea32bab1f385856001600c8054905003604051808460030b81526020018360030b8152602001828152602001935050505060405180910390a15050505050565b61062060405190810160405280603190602082028038833980820191505090505090565b61062060405190810160405280603190602082028038833980820191505090505090565b608060405190810160405280600060ff168152602001600061ffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061482257805160ff1916838001178555614850565b82800160010185558215614850579182015b8281111561484f578251825591602001919060010190614834565b5b50905061485d91906148d7565b5090565b6040805190810160405280600290602082028038833980820191505090505090565b6040805190810160405280600290602082028038833980820191505090505090565b8154818355818111156148d2576003028160030283600052602060002091820191016148d191906148fc565b5b505050565b6148f991905b808211156148f55760008160009055506001016148dd565b5090565b90565b61497091905b8082111561496c57600080820160006101000a81549060ff02191690556000820160016101000a81549061ffff021916905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600301614902565b5090565b905600a165627a7a72305820be3d31cf1b4ded27c2bcd792c5a6fae0969aad5c77f55fcd0f7ed783874846fd0029

Swarm Source

bzzr://be3d31cf1b4ded27c2bcd792c5a6fae0969aad5c77f55fcd0f7ed783874846fd
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.