Contract 0xD495cC8C7c29c7fA3E027a5759561Ab68C363609

 
Txn Hash Method
Block
From
To
Value
0xa628baa18e6a39c1201d8e6b0b15724bf470db76f0adfdc2cdf532697f764eb9Stake Start126755782021-06-21 4:39:011 day 14 hrs ago0x21935251e90364885d59750d17f1c132ad1bcacb IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00731190434
0x8b4fb5ac325330ee2fd2d4a14f63bdb16ee43d12ab11d7f793a1a440d7e0f289Stake End126755342021-06-21 4:27:511 day 14 hrs ago0x21935251e90364885d59750d17f1c132ad1bcacb IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00461814432
0x99480aaa30f93eb52f79bbc1b5abd1728a1c3e40684af876eb992b6ade4c8719Withdraw126743932021-06-21 0:07:481 day 19 hrs ago0x3b6e7f2ebe84261d6125684c70d489c75f48a767 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0007361810
0x51104d3609e9f3c42fd25545d8e006272c033d41d443d18042ba28369b31590bWithdraw126725962021-06-20 17:41:012 days 1 hr ago0x24b23bb643082026227e945c7833b81426057b10 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0005651810
0x4b3dee042443fb140f4cc47a89bffdac5561b73308dba6128e6a3c2ef1a87cb4Withdraw126696742021-06-20 6:36:442 days 12 hrs ago0x404015fb24d90ee668e65798b821bfcd3b8e8f10 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0004521448
0x0a3d676e1bc1484422d0ca30e64147eaeb25fc706f8176d6714a52c84bfa834eStake End126680932021-06-20 0:41:322 days 18 hrs ago0xb269b6180b69cf3c2ad47ed8b5c16b03255a352e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0060640686
0x6ef95baa7929b8c3b8d7c14347051c683c85c1ce58ff5c7c2629c811a265cff0Withdraw126651052021-06-19 13:34:413 days 5 hrs ago0x7253ba8c85efc0681a021e884ee08b9ff953bbe2 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00059343910.5
0x5996a482f0ab38e56322e6b3385118331ff5948fdd13bb9afbf801c5b3adbff1Withdraw126635602021-06-19 7:46:253 days 11 hrs ago0xce6da42d8ed0e5ac987109bb2599bfc10e7e8d3e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0005651810
0x41b360a012b2a90460d76c6c3fbcb4d62ed57e02b8fb6cc58018081b1b741daeSell126635512021-06-19 7:44:133 days 11 hrs ago0xce6da42d8ed0e5ac987109bb2599bfc10e7e8d3e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0009357710
0x8787c8a719d961e75925e008272a7d14ecd7fd0b64ee899c8785f721e61d6c3fWithdraw126635362021-06-19 7:41:153 days 11 hrs ago0xce6da42d8ed0e5ac987109bb2599bfc10e7e8d3e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0007361810
0xf485ada902d64c8d82c01d94cb74be4a2e6101e217c48d33abbb63d35b12a5c5Stake End126635252021-06-19 7:38:283 days 11 hrs ago0xce6da42d8ed0e5ac987109bb2599bfc10e7e8d3e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0098529210
0x1080a72473227c0dce3e7c680e1a77d7e6da015adcd5952eef8df320cff3525fStake End126635172021-06-19 7:35:533 days 11 hrs ago0xce6da42d8ed0e5ac987109bb2599bfc10e7e8d3e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0024690810
0xe4235776b6af68252196772d713088d1f91a3ead7208db5043ce54ff38ec3b78Stake End126634912021-06-19 7:30:083 days 11 hrs ago0xce6da42d8ed0e5ac987109bb2599bfc10e7e8d3e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0009925210
0xc21421fc2a019e57239d6bda80122bae3e5651f3485da79789ccc9228f66d9c9Withdraw126628932021-06-19 5:22:233 days 13 hrs ago0xa837acc2c5bb6f2332306f9aa2904fb1d32ac46d IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0005651810
0xac33455a195a65646cd733241c46bca59318343dfa4c3a8062da9e46748d1adaStake End126618282021-06-19 1:17:403 days 18 hrs ago0xb269b6180b69cf3c2ad47ed8b5c16b03255a352e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.0093055689
0x949117771a138808b1dcb6bbef9e1979d6c73a5c1e64642912cddf67b9f88fb3Withdraw126600162021-06-18 18:22:324 days 57 mins ago0x8bfc40a37b072685dffe3625518334935c375e36 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.001133717215.4
0xa465b054feac38f1b206f370b3efe66106980fb036a51f96e3f9266406b2d4d4Withdraw126599322021-06-18 18:02:554 days 1 hr ago0x87488fa02053c58bd069734359ac6e450ffbfc74 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00062169811
0x6b964d473df354fafd304b3f8c4381c8744fdce4161d64e057c2d5acc22572bbSell126599002021-06-18 17:57:094 days 1 hr ago0xf5e77481bc666a6fe7df49514a09478f9c6975e1 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00102934711
0x15f8fd7245f0d3ed2220467583e92ff6e6c9b05def241c48cfbae0331b6dffd1Roll126598912021-06-18 17:55:354 days 1 hr ago0xf5e77481bc666a6fe7df49514a09478f9c6975e1 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00131770613
0xbd83fbbc4bdd58c2d4527339ec80eff92a63696cf688e5d9e0089a3c9f50cc64Stake Start126598512021-06-18 17:47:364 days 1 hr ago0xf5e77481bc666a6fe7df49514a09478f9c6975e1 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00236548411
0xf4172bad0246c85b74e4ea5db87aabc3d6067349968a6416be7d43c8909934d2Stake End126598212021-06-18 17:42:174 days 1 hr ago0xf5e77481bc666a6fe7df49514a09478f9c6975e1 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00666189711
0x5c56b938a78b5b718da0ab8d6bb0894694721e8f189b0d59319fcf43951e15adStake End126598202021-06-18 17:42:144 days 1 hr ago0xf5e77481bc666a6fe7df49514a09478f9c6975e1 IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00157767511
0xbd08c4116c168be03ad9eebeedab73bc7914846e605356bc0338b9982160e8dbWithdraw126589762021-06-18 14:40:234 days 4 hrs ago0xde3c0b11e86e2d1e4cd4c2d66276e1a1ca78babd IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00152598627
0x373e05b8fcc3c17e947c59781d4af72dc0e32d131fae7e9580127330610dee92Stake End126582772021-06-18 11:58:134 days 7 hrs ago0xb269b6180b69cf3c2ad47ed8b5c16b03255a352e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00675267067.8
0x708235a705411e76c1ea1dc292f56ac4b85f35256e4c8a4dc63c03a51db2643dStake End126582472021-06-18 11:50:224 days 7 hrs ago0xb269b6180b69cf3c2ad47ed8b5c16b03255a352e IN  0xd495cc8c7c29c7fa3e027a5759561ab68c3636090 Ether0.00747823447.8
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HKS

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-01-20
*/

pragma solidity ^0.4.26;

library SafeMath {

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

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return a / b;
  }

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

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

}

contract TOKEN {
   function totalSupply() external view returns (uint256);
   function balanceOf(address account) external view returns (uint256);
   function transfer(address recipient, uint256 amount) external returns (bool);
   function allowance(address owner, address spender) external view returns (uint256);
   function approve(address spender, uint256 amount) external returns (bool);
   function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
   function stakeStart(uint256 newStakedHearts, uint256 newStakedDays) external;
   function stakeEnd(uint256 stakeIndex, uint40 stakeIdParam) external;
   function stakeCount(address stakerAddr) external view returns (uint256);
   function stakeLists(address owner, uint256 stakeIndex) external view returns (uint40, uint72, uint72, uint16, uint16, uint16, bool);
   function currentDay() external view returns (uint256);
}

contract Ownable {

  address public owner;

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

  constructor() public {
    owner = address(0xe21AC1CAE34c532a38B604669E18557B2d8840Fc);
  }

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

  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

contract HKS is Ownable {

    uint256 ACTIVATION_TIME = 1579564800;

    modifier isActivated {
        require(now >= ACTIVATION_TIME);
        _;
    }

    modifier onlyCustodian() {
      require(msg.sender == custodianAddress);
      _;
    }

    modifier onlyTokenHolders {
        require(myTokens(true) > 0);
        _;
    }

    modifier onlyDivis {
        require(myDividends() > 0);
        _;
    }

    modifier isStakeActivated {
        require(stakeActivated == true);
        _;
    }

    event onDistribute(
        address indexed customerAddress,
        uint256 price
    );

    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingHEX,
        uint256 tokensMinted,
        uint timestamp
    );

    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 hexEarned,
        uint timestamp
    );

    event onRoll(
        address indexed customerAddress,
        uint256 hexRolled,
        uint256 tokensMinted
    );

    event onWithdraw(
        address indexed customerAddress,
        uint256 hexWithdrawn
    );

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );

    event onStakeStart(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 timestamp
    );

    event onStakeEnd(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 returnAmount,
        uint256 timestamp
    );

    string public name = "HEXTEWKEN";
    string public symbol = "HEX2";
    uint8 constant public decimals = 8;

    address internal maintenanceAddress;
    address internal custodianAddress;

    uint256 internal entryFee_ = 10;
    uint256 internal transferFee_ = 1;
    uint256 internal exitFee_ = 10;
    uint256 internal tewkenaireFee_ = 10; // 10% of the 10% buy or sell fees makes it 1%
    uint256 internal maintenanceFee_ = 10; // 10% of the 10% buy or sell fees makes it 1%

    address public approvedAddress1;
    address public approvedAddress2;
    address public distributionAddress;
    uint256 public totalFundCollected;

    uint256 constant internal magnitude = 2 ** 64;

    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) public lockedTokenBalanceLedger;
    mapping(address => int256) internal payoutsTo_;

    mapping (address => Stats) public playerStats;

    struct Stats {
       uint256 deposits;
       uint256 withdrawals;
       uint256 staked;
       int256 stakedNetProfitLoss;
       uint256 activeStakes;
    }

    uint256 public totalStakeBalance = 0;

    uint256 internal tokenSupply_;
    uint256 internal profitPerShare_;
    uint256 public totalPlayer = 0;
    uint256 public totalDonation = 0;
    TOKEN erc20;

    struct StakeStore {
      uint40 stakeID;
      uint256 hexAmount;
      uint72 stakeShares;
      uint16 lockedDay;
      uint16 stakedDays;
      uint16 unlockedDay;
      bool started;
      bool ended;
    }

    bool stakeActivated = true;
    mapping(address => mapping(uint256 => StakeStore)) public stakeLists;

    constructor() public {
        maintenanceAddress = address(0xe21AC1CAE34c532a38B604669E18557B2d8840Fc);
        custodianAddress = address(0x24B23bB643082026227e945C7833B81426057b10);
        distributionAddress = address(0xfE8D614431E5fea2329B05839f29B553b1Cb99A2);
        approvedAddress1 = distributionAddress;
        approvedAddress2 = distributionAddress;
        erc20 = TOKEN(address(0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39));
    }

    function checkAndTransferHEX(uint256 _amount) private {
        require(erc20.transferFrom(msg.sender, address(this), _amount) == true, "transfer must succeed");
    }

    function distribute(uint256 _amount) public returns (uint256) {
        require(_amount > 0, "must be a positive value");
        checkAndTransferHEX(_amount);
        totalDonation += _amount;
        profitPerShare_ = SafeMath.add(profitPerShare_, (_amount * magnitude) / tokenSupply_);
        emit onDistribute(msg.sender, _amount);
    }

    function buy(uint256 _amount) public returns (uint256) {
        checkAndTransferHEX(_amount);
        return purchaseTokens(msg.sender, _amount);
    }

    function buyFor(uint256 _amount, address _customerAddress) public returns (uint256) {
        checkAndTransferHEX(_amount);
        return purchaseTokens(_customerAddress, _amount);
    }

    function() payable public {
        revert();
    }

    function roll() onlyDivis public {
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends();
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);
        uint256 _tokens = purchaseTokens(_customerAddress, _dividends);
        emit onRoll(_customerAddress, _dividends, _tokens);
    }

    function exit() external {
        address _customerAddress = msg.sender;
        uint256 _tokens = SafeMath.sub(tokenBalanceLedger_[_customerAddress], lockedTokenBalanceLedger[_customerAddress]);
        if (_tokens > 0) sell(_tokens);
        withdraw();
    }

    function withdraw() onlyDivis public {
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends();
        payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);
        erc20.transfer(_customerAddress, _dividends);
        Stats storage stats = playerStats[_customerAddress];
        stats.withdrawals += _dividends;
        emit onWithdraw(_customerAddress, _dividends);
    }

    function sell(uint256 _amountOfTokens) onlyTokenHolders public {
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= SafeMath.sub(tokenBalanceLedger_[_customerAddress], lockedTokenBalanceLedger[_customerAddress]));

        uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_amountOfTokens, exitFee_), 100);

        uint256 _maintenance = SafeMath.div(SafeMath.mul(_undividedDividends, maintenanceFee_),100);
        erc20.transfer(maintenanceAddress, _maintenance);

        uint256 _tewkenaire = SafeMath.div(SafeMath.mul(_undividedDividends, tewkenaireFee_), 100);
        totalFundCollected += _tewkenaire;
        erc20.transfer(distributionAddress, _tewkenaire);

        uint256 _dividends = SafeMath.sub(_undividedDividends, SafeMath.add(_maintenance,_tewkenaire));
        uint256 _taxedHEX = SafeMath.sub(_amountOfTokens, _undividedDividends);

        tokenSupply_ = SafeMath.sub(tokenSupply_, _amountOfTokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);

        int256 _updatedPayouts = (int256) (profitPerShare_ * _amountOfTokens + (_taxedHEX * magnitude));
        payoutsTo_[_customerAddress] -= _updatedPayouts;

        if (tokenSupply_ > 0) {
            profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        }

        emit Transfer(_customerAddress, address(0), _amountOfTokens);
        emit onTokenSell(_customerAddress, _amountOfTokens, _taxedHEX, now);
    }

    function transfer(address _toAddress, uint256 _amountOfTokens) onlyTokenHolders external returns (bool){
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= SafeMath.sub(tokenBalanceLedger_[_customerAddress], lockedTokenBalanceLedger[_customerAddress]));

        if (myDividends() > 0) {
            withdraw();
        }

        uint256 _tokenFee = SafeMath.div(SafeMath.mul(_amountOfTokens, transferFee_), 100);
        uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
        uint256 _dividends = _tokenFee;

        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee);

        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);

        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens);

        profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);

        emit Transfer(_customerAddress, _toAddress, _taxedTokens);

        return true;
    }

    function setName(string _name) onlyOwner public
    {
       name = _name;
    }

    function setSymbol(string _symbol) onlyOwner public
    {
       symbol = _symbol;
    }

    function setHexStaking(bool _stakeActivated) onlyOwner public
    {
       stakeActivated = _stakeActivated;
    }

    function approveAddress1(address _proposedAddress) onlyOwner public
    {
       approvedAddress1 = _proposedAddress;
    }

    function approveAddress2(address _proposedAddress) onlyCustodian public
    {
       approvedAddress2 = _proposedAddress;
    }

    function setAtomicSwapAddress() public
    {
        require(approvedAddress1 == approvedAddress2);
        distributionAddress = approvedAddress1;
    }

    function totalHexBalance() public view returns (uint256) {
        return erc20.balanceOf(address(this));
    }

    function totalSupply() public view returns (uint256) {
        return tokenSupply_;
    }

    function myTokens(bool _state) public view returns (uint256) {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress, _state);
    }

    function myDividends() public view returns (uint256) {
        address _customerAddress = msg.sender;
        return dividendsOf(_customerAddress);
    }

    function balanceOf(address _customerAddress, bool stakable) public view returns (uint256) {
        if (stakable == false) {
          return tokenBalanceLedger_[_customerAddress];
        }
        else if (stakable == true){
          return SafeMath.sub(tokenBalanceLedger_[_customerAddress], lockedTokenBalanceLedger[_customerAddress]);
        }
    }

    function dividendsOf(address _customerAddress) public view returns (uint256) {
        return (uint256) ((int256) (profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
    }

    function sellPrice() public view returns (uint256) {
        uint256 _hex = 1e8;
        uint256 _dividends = SafeMath.div(SafeMath.mul(_hex, exitFee_), 100);
        uint256 _taxedHEX = SafeMath.sub(_hex, _dividends);

        return _taxedHEX;
    }

    function buyPrice() public view returns (uint256) {
        uint256 _hex = 1e8;
        uint256 _dividends = SafeMath.div(SafeMath.mul(_hex, entryFee_), 100);
        uint256 _taxedHEX = SafeMath.add(_hex, _dividends);

        return _taxedHEX;
    }

    function calculateTokensReceived(uint256 _hexToSpend) public view returns (uint256) {
        uint256 _dividends = SafeMath.div(SafeMath.mul(_hexToSpend, entryFee_), 100);
        uint256 _amountOfTokens = SafeMath.sub(_hexToSpend, _dividends);

        return _amountOfTokens;
    }

    function calculateHexReceived(uint256 _tokensToSell) public view returns (uint256) {
        require(_tokensToSell <= tokenSupply_);
        uint256 _dividends = SafeMath.div(SafeMath.mul(_tokensToSell, exitFee_), 100);
        uint256 _taxedHEX = SafeMath.sub(_tokensToSell, _dividends);

        return _taxedHEX;
    }

    function purchaseTokens(address _customerAddress, uint256 _incomingHEX) internal isActivated returns (uint256) {
        Stats storage stats = playerStats[_customerAddress];

        if (stats.deposits == 0) {
            totalPlayer++;
        }

        stats.deposits += _incomingHEX;

        uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingHEX, entryFee_), 100);

        uint256 _maintenance = SafeMath.div(SafeMath.mul(_undividedDividends, maintenanceFee_),100);
        erc20.transfer(maintenanceAddress, _maintenance);

        uint256 _tewkenaire = SafeMath.div(SafeMath.mul(_undividedDividends, tewkenaireFee_), 100);
        totalFundCollected += _tewkenaire;
        erc20.transfer(distributionAddress, _tewkenaire);

        uint256 _dividends = SafeMath.sub(_undividedDividends, SafeMath.add(_tewkenaire,_maintenance));
        uint256 _amountOfTokens = SafeMath.sub(_incomingHEX, _undividedDividends);
        uint256 _fee = _dividends * magnitude;

        require(_amountOfTokens > 0 && SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_);

        if (tokenSupply_ > 0) {
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
            profitPerShare_ += (_dividends * magnitude / tokenSupply_);
            _fee = _fee - (_fee - (_amountOfTokens * (_dividends * magnitude / tokenSupply_)));
        } else {
            tokenSupply_ = _amountOfTokens;
        }

        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);

        int256 _updatedPayouts = (int256) (profitPerShare_ * _amountOfTokens - _fee);
        payoutsTo_[_customerAddress] += _updatedPayouts;

        emit Transfer(address(0), _customerAddress, _amountOfTokens);
        emit onTokenPurchase(_customerAddress, _incomingHEX, _amountOfTokens, now);

        return _amountOfTokens;
    }

    function stakeStart(uint256 _amount, uint256 _days) public isStakeActivated {
      require(_amount <= 4722366482869645213695);
      require(balanceOf(msg.sender, true) >= _amount);

      erc20.stakeStart(_amount, _days); // revert or succeed

      uint256 _stakeIndex;
      uint40 _stakeID;
      uint72 _stakeShares;
      uint16 _lockedDay;
      uint16 _stakedDays;

      _stakeIndex = erc20.stakeCount(address(this));
      _stakeIndex = SafeMath.sub(_stakeIndex, 1);

      (_stakeID,,_stakeShares,_lockedDay,_stakedDays,,) = erc20.stakeLists(address(this), _stakeIndex);

      uint256 _uniqueID =  uint256(keccak256(abi.encodePacked(_stakeID, _stakeShares))); // unique enough
      require(stakeLists[msg.sender][_uniqueID].started == false); // still check for collision
      stakeLists[msg.sender][_uniqueID].started = true;

      stakeLists[msg.sender][_uniqueID] = StakeStore(_stakeID, _amount, _stakeShares, _lockedDay, _stakedDays, uint16(0), true, false);

      totalStakeBalance = SafeMath.add(totalStakeBalance, _amount);

      Stats storage stats = playerStats[msg.sender];
      stats.activeStakes += 1;
      stats.staked += _amount;

      lockedTokenBalanceLedger[msg.sender] = SafeMath.add(lockedTokenBalanceLedger[msg.sender], _amount);

      emit onStakeStart(msg.sender, _uniqueID, now);
    }

    function _stakeEnd(uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID) public view returns (uint16){
      uint40 _stakeID;
      uint72 _stakedHearts;
      uint72 _stakeShares;
      uint16 _lockedDay;
      uint16 _stakedDays;
      uint16 _unlockedDay;

      (_stakeID,_stakedHearts,_stakeShares,_lockedDay,_stakedDays,_unlockedDay,) = erc20.stakeLists(address(this), _stakeIndex);
      require(stakeLists[msg.sender][_uniqueID].started == true && stakeLists[msg.sender][_uniqueID].ended == false);
      require(stakeLists[msg.sender][_uniqueID].stakeID == _stakeIdParam && _stakeIdParam == _stakeID);
      require(stakeLists[msg.sender][_uniqueID].hexAmount == uint256(_stakedHearts));
      require(stakeLists[msg.sender][_uniqueID].stakeShares == _stakeShares);
      require(stakeLists[msg.sender][_uniqueID].lockedDay == _lockedDay);
      require(stakeLists[msg.sender][_uniqueID].stakedDays == _stakedDays);

      return _unlockedDay;
    }

    function stakeEnd(uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID) public {
      uint16 _unlockedDay = _stakeEnd(_stakeIndex, _stakeIdParam, _uniqueID);

      if (_unlockedDay == 0){
        stakeLists[msg.sender][_uniqueID].unlockedDay = uint16(erc20.currentDay()); // no penalty/penalty/reward
      } else {
        stakeLists[msg.sender][_uniqueID].unlockedDay = _unlockedDay;
      }

      uint256 _balance = erc20.balanceOf(address(this));

      erc20.stakeEnd(_stakeIndex, _stakeIdParam); // revert or 0 or less or equal or more hex returned.
      stakeLists[msg.sender][_uniqueID].ended = true;

      uint256 _amount = SafeMath.sub(erc20.balanceOf(address(this)), _balance);
      uint256 _stakedAmount = stakeLists[msg.sender][_uniqueID].hexAmount;
      uint256 _difference;
      int256 _updatedPayouts;

      if (_amount <= _stakedAmount) {
        _difference = SafeMath.sub(_stakedAmount, _amount);
        tokenSupply_ = SafeMath.sub(tokenSupply_, _difference);
        tokenBalanceLedger_[msg.sender] = SafeMath.sub(tokenBalanceLedger_[msg.sender], _difference);
        _updatedPayouts = (int256) (profitPerShare_ * _difference);
        payoutsTo_[msg.sender] -= _updatedPayouts;
        stats.stakedNetProfitLoss -= int256(_difference);
        emit Transfer(msg.sender, address(0), _difference);
      } else if (_amount > _stakedAmount) {
        _difference = SafeMath.sub(_amount, _stakedAmount);
        _difference = purchaseTokens(msg.sender, _difference);
        stats.stakedNetProfitLoss += int256(_difference);
      }

      totalStakeBalance = SafeMath.sub(totalStakeBalance, _stakedAmount);

      Stats storage stats = playerStats[msg.sender];
      stats.activeStakes -= 1;

      lockedTokenBalanceLedger[msg.sender] = SafeMath.sub(lockedTokenBalanceLedger[msg.sender], _stakedAmount);

      emit onStakeEnd(msg.sender, _uniqueID, _amount, now);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalHexBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_hexToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"stakeLists","outputs":[{"name":"stakeID","type":"uint40"},{"name":"hexAmount","type":"uint256"},{"name":"stakeShares","type":"uint72"},{"name":"lockedDay","type":"uint16"},{"name":"stakedDays","type":"uint16"},{"name":"unlockedDay","type":"uint16"},{"name":"started","type":"bool"},{"name":"ended","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakeBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFundCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"distributionAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateHexReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setAtomicSwapAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakeActivated","type":"bool"}],"name":"setHexStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_days","type":"uint256"}],"name":"stakeStart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"approvedAddress2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_state","type":"bool"}],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"stakable","type":"bool"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_proposedAddress","type":"address"}],"name":"approveAddress1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","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":"_amount","type":"uint256"}],"name":"distribute","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_proposedAddress","type":"address"}],"name":"approveAddress2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_customerAddress","type":"address"}],"name":"buyFor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockedTokenBalanceLedger","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakeIndex","type":"uint256"},{"name":"_stakeIdParam","type":"uint40"},{"name":"_uniqueID","type":"uint256"}],"name":"_stakeEnd","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"approvedAddress1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalPlayer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"roll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"playerStats","outputs":[{"name":"deposits","type":"uint256"},{"name":"withdrawals","type":"uint256"},{"name":"staked","type":"uint256"},{"name":"stakedNetProfitLoss","type":"int256"},{"name":"activeStakes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDonation","outputs":[{"name":"","type":"uint256"}],"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":"_stakeIndex","type":"uint256"},{"name":"_stakeIdParam","type":"uint40"},{"name":"_uniqueID","type":"uint256"}],"name":"stakeEnd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"price","type":"uint256"}],"name":"onDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingHEX","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"hexEarned","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"hexRolled","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onRoll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"hexWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"uniqueID","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onStakeStart","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"uniqueID","type":"uint256"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onStakeEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

635e263f0060015560c0604052600960808190527f4845585445574b454e000000000000000000000000000000000000000000000060a0908152620000489160029190620001a8565b506040805180820190915260048082527f484558320000000000000000000000000000000000000000000000000000000060209092019182526200008f91600391620001a8565b50600a600681905560016007556008819055600981905580556000601381905560168190556017556018805460a060020a60ff02191674010000000000000000000000000000000000000000179055348015620000eb57600080fd5b5060008054600160a060020a031990811673e21ac1cae34c532a38b604669e18557b2d8840fc9081179092556004805482169092179091556005805482167324b23bb643082026227e945c7833b81426057b10179055600d8054821673fe8d614431e5fea2329b05839f29b553b1cb99a21790819055600b80548316600160a060020a03929092169182179055600c80548316909117905560188054909116732b591e99afe9f32eaa6214f7b7629768c40eeb391790556200024d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001eb57805160ff19168380011785556200021b565b828001600101855582156200021b579182015b828111156200021b578251825591602001919060010190620001fe565b50620002299291506200022d565b5090565b6200024a91905b8082111562000229576000815560010162000234565b90565b61294c806200025d6000396000f3006080604052600436106102025763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461020757806306fdde031461023a5780630b9c51b1146102c457806310d0ffdd146102d957806318160ddd146102f15780632607443b14610306578063313ce567146103875780633151ecfc146103b257806334949cc1146103c757806334ecfbb8146103dc57806337fb7e21146103f15780633ccfd60b14610422578063487af200146104395780634978e111146104515780634b750334146104665780634b82cab71461047b57806352a438b8146104955780635af78833146104b057806362cc2cfe146104c5578063772865e2146104df5780637c180a68146105055780638620410b146105265780638da5cb5b1461053b57806391c05b0b1461055057806395d89b41146105685780639e2131c61461057d578063a3a8573a1461059e578063a9059cbb146105c2578063af8cfd19146105fa578063b60126551461061b578063b84c824614610657578063b8f82c85146106b0578063c47f0027146106c5578063c494a0801461071e578063cd5e3c5d14610733578063cdafbbb614610748578063d96a094a14610794578063e4849b32146107ac578063e9fad8ee146107c4578063ee2ac05f146107d9578063f2fde38b146107ee578063feed18ff1461080f575b600080fd5b34801561021357600080fd5b50610228600160a060020a0360043516610834565b60408051918252519081900360200190f35b34801561024657600080fd5b5061024f61086f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610289578181015183820152602001610271565b50505050905090810190601f1680156102b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d057600080fd5b506102286108fa565b3480156102e557600080fd5b50610228600435610991565b3480156102fd57600080fd5b506102286109c0565b34801561031257600080fd5b5061032a600160a060020a03600435166024356109c6565b6040805164ffffffffff9099168952602089019790975268ffffffffffffffffff9095168787015261ffff9384166060880152918316608087015290911660a0850152151560c0840152151560e083015251908190036101000190f35b34801561039357600080fd5b5061039c610a6c565b6040805160ff9092168252519081900360200190f35b3480156103be57600080fd5b50610228610a71565b3480156103d357600080fd5b50610228610a84565b3480156103e857600080fd5b50610228610a8a565b3480156103fd57600080fd5b50610406610a90565b60408051600160a060020a039092168252519081900360200190f35b34801561042e57600080fd5b50610437610a9f565b005b34801561044557600080fd5b50610228600435610bc9565b34801561045d57600080fd5b50610437610bee565b34801561047257600080fd5b50610228610c3c565b34801561048757600080fd5b506104376004351515610c64565b3480156104a157600080fd5b50610437600435602435610cbb565b3480156104bc57600080fd5b50610406611297565b3480156104d157600080fd5b5061022860043515156112a6565b3480156104eb57600080fd5b50610228600160a060020a036004351660243515156112ba565b34801561051157600080fd5b50610437600160a060020a0360043516611325565b34801561053257600080fd5b5061022861136b565b34801561054757600080fd5b50610406611393565b34801561055c57600080fd5b506102286004356113a2565b34801561057457600080fd5b5061024f611487565b34801561058957600080fd5b50610437600160a060020a03600435166114e2565b3480156105aa57600080fd5b50610228600435600160a060020a0360243516611528565b3480156105ce57600080fd5b506105e6600160a060020a036004351660243561153d565b604080519115158252519081900360200190f35b34801561060657600080fd5b50610228600160a060020a03600435166116d6565b34801561062757600080fd5b5061064060043564ffffffffff602435166044356116e8565b6040805161ffff9092168252519081900360200190f35b34801561066357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526104379436949293602493928401919081908401838280828437509497506119c69650505050505050565b3480156106bc57600080fd5b506104066119f4565b3480156106d157600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610437943694929360249392840191908190840183828082843750949750611a039650505050505050565b34801561072a57600080fd5b50610228611a2d565b34801561073f57600080fd5b50610437611a33565b34801561075457600080fd5b50610769600160a060020a0360043516611adb565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156107a057600080fd5b50610228600435611b0a565b3480156107b857600080fd5b50610437600435611b1f565b3480156107d057600080fd5b50610437611e0c565b3480156107e557600080fd5b50610228611e4d565b3480156107fa57600080fd5b50610437600160a060020a0360043516611e53565b34801561081b57600080fd5b5061043760043564ffffffffff60243516604435611ee7565b600160a060020a0316600090815260116020908152604080832054600f90925290912054601554680100000000000000009102919091030490565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156108f25780601f106108c7576101008083540402835291602001916108f2565b820191906000526020600020905b8154815290600101906020018083116108d557829003601f168201915b505050505081565b601854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561095f57600080fd5b505af1158015610973573d6000803e3d6000fd5b505050506040513d602081101561098957600080fd5b505190505b90565b60008060006109ac6109a5856006546123ca565b60646123f3565b91506109b88483612408565b949350505050565b60145490565b601960209081526000928352604080842090915290825290208054600182015460029092015464ffffffffff909116919068ffffffffffffffffff81169061ffff690100000000000000000082048116916b01000000000000000000000081048216916d01000000000000000000000000008204169060ff6f01000000000000000000000000000000820481169170010000000000000000000000000000000090041688565b600881565b600033610a7d81610834565b91505b5090565b60135481565b600e5481565b600d54600160a060020a031681565b600080600080610aad610a71565b11610ab757600080fd5b339250610ac2610a71565b600160a060020a0380851660008181526011602090815260408083208054680100000000000000008802019055601854815160e060020a63a9059cbb02815260048101959095526024850187905290519597509093169363a9059cbb936044808501949193918390030190829087803b158015610b3e57600080fd5b505af1158015610b52573d6000803e3d6000fd5b505050506040513d6020811015610b6857600080fd5b505050600160a060020a03821660008181526012602090815260409182902060018101805486019055825185815292519093927fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc92908290030190a2505050565b60008060006014548411151515610bdf57600080fd5b6109ac6109a5856008546123ca565b600c54600b54600160a060020a03908116911614610c0b57600080fd5b600b54600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b6000806000806305f5e1009250610c586109a5846008546123ca565b91506109b88383612408565b600054600160a060020a03163314610c7b57600080fd5b60188054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b6000806000806000806000601860149054906101000a900460ff16151560011515141515610ce857600080fd5b68ffffffffffffffffff891115610cfe57600080fd5b88610d0a3360016112ba565b1015610d1557600080fd5b601854604080517f52a438b8000000000000000000000000000000000000000000000000000000008152600481018c9052602481018b90529051600160a060020a03909216916352a438b89160448082019260009290919082900301818387803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b5050601854604080517f33060d900000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0390921693506333060d9092506024808201926020929091908290030181600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b505050506040513d6020811015610e2a57600080fd5b50519650610e39876001612408565b601854604080517f2607443b000000000000000000000000000000000000000000000000000000008152306004820152602481018490529051929950600160a060020a0390911691632607443b9160448082019260e0929091908290030181600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050506040513d60e0811015610ed357600080fd5b508051604080830151606084015160809094015182517b0100000000000000000000000000000000000000000000000000000064ffffffffff8616026020828101919091527701000000000000000000000000000000000000000000000068ffffffffffffffffff85160260258301528451600e818403018152602e909201948590528151959c50929a509498509650909182918401908083835b60208310610f8d5780518252601f199092019160209182019101610f6e565b51815160209384036101000a600019018019909216911617905260408051929094018290039091203360009081526019835284812082825290925292902060020154919550506f01000000000000000000000000000000900460ff16159150610ff7905057600080fd5b60016019600033600160a060020a0316600160a060020a031681526020019081526020016000206000848152602001908152602001600020600201600f6101000a81548160ff021916908315150217905550610100604051908101604052808764ffffffffff1681526020018a81526020018668ffffffffffffffffff1681526020018561ffff1681526020018461ffff168152602001600061ffff168152602001600115158152602001600015158152506019600033600160a060020a0316600160a060020a03168152602001908152602001600020600084815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff1602179055506020820151816001015560408201518160020160006101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff16021790555060608201518160020160096101000a81548161ffff021916908361ffff160217905550608082015181600201600b6101000a81548161ffff021916908361ffff16021790555060a082015181600201600d6101000a81548161ffff021916908361ffff16021790555060c082015181600201600f6101000a81548160ff02191690831515021790555060e08201518160020160106101000a81548160ff0219169083151502179055509050506111fb6013548a61241a565b6013555033600090815260126020908152604080832060048101805460010190556002810180548d019055601090925290912054611239908a61241a565b336000818152601060209081526040918290209390935580518581524293810193909352805191927ffcb8123dad95f24c74ef07cb7e9635f8bfabd8882383ff341ce8999eb7aa3860929081900390910190a2505050505050505050565b600c54600160a060020a031681565b6000336112b381846112ba565b9392505050565b60008115156112e25750600160a060020a0382166000908152600f602052604090205461131f565b6001821515141561131f57600160a060020a0383166000908152600f602090815260408083205460109092529091205461131c9190612408565b90505b92915050565b600054600160a060020a0316331461133c57600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806000806305f5e10092506113876109a5846006546123ca565b91506109b8838361241a565b600054600160a060020a031681565b600080821161141257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6d757374206265206120706f7369746976652076616c75650000000000000000604482015290519081900360640190fd5b61141b82612427565b6017805483019055601554601454611449919068010000000000000000850281151561144357fe5b0461241a565b60155560408051838152905133917fd14b763af9e91e53a0578778058d700fec4f12297440083843749bb37d806064919081900360200190a2919050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108f25780601f106108c7576101008083540402835291602001916108f2565b600554600160a060020a031633146114f957600080fd5b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600061153383612427565b61131c8284612539565b60008060008060008061155060016112a6565b1161155a57600080fd5b336000818152600f602090815260408083205460109092529091205491955061158291612408565b86111561158e57600080fd5b6000611598610a71565b11156115a6576115a6610a9f565b6115b56109a5876007546123ca565b92506115c18684612408565b91508290506115d260145484612408565b601455600160a060020a0384166000908152600f60205260409020546115f89087612408565b600160a060020a038086166000908152600f60205260408082209390935590891681522054611627908361241a565b600160a060020a038881166000818152600f602090815260408083209590955560158054948a16835260119091528482208054948c02909403909355825491815292909220805492850290920190915554601454611695919068010000000000000000840281151561144357fe5b601555604080518381529051600160a060020a03808a1692908716916000805160206129018339815191529181900360200190a35060019695505050505050565b60106020526000908152604090205481565b601854604080517f2607443b000000000000000000000000000000000000000000000000000000008152306004820152602481018690529051600092839283928392839283928392600160a060020a031691632607443b9160448083019260e092919082900301818787803b15801561176057600080fd5b505af1158015611774573d6000803e3d6000fd5b505050506040513d60e081101561178a57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050809650819750829850839950849a50859b505050505050506019600033600160a060020a0316600160a060020a031681526020019081526020016000206000898152602001908152602001600020600201600f9054906101000a900460ff1615156001151514801561187c57503360009081526019602090815260408083208b8452909152902060020154700100000000000000000000000000000000900460ff16155b151561188757600080fd5b3360009081526019602090815260408083208b845290915290205464ffffffffff8a811691161480156118c757508564ffffffffff168964ffffffffff16145b15156118d257600080fd5b3360009081526019602090815260408083208b845290915290206001015468ffffffffffffffffff86161461190657600080fd5b3360009081526019602090815260408083208b845290915290206002015468ffffffffffffffffff85811691161461193d57600080fd5b3360009081526019602090815260408083208b845290915290206002015461ffff8481166901000000000000000000909204161461197a57600080fd5b3360009081526019602090815260408083208b845290915290206002015461ffff8381166b01000000000000000000000090920416146119b957600080fd5b9998505050505050505050565b600054600160a060020a031633146119dd57600080fd5b80516119f0906003906020840190612872565b5050565b600b54600160a060020a031681565b600054600160a060020a03163314611a1a57600080fd5b80516119f0906002906020840190612872565b60165481565b600080600080611a41610a71565b11611a4b57600080fd5b339250611a56610a71565b600160a060020a038416600090815260116020526040902080546801000000000000000083020190559150611a8b8383612539565b905082600160a060020a03167fe4f0eeaa8dd27ac941d5cb906c00cec31d5590659951566d91f7ec9eaacc8e0c8383604051808381526020018281526020019250505060405180910390a2505050565b601260205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b6000611b1582612427565b61131f3383612539565b600080600080600080600080611b3560016112a6565b11611b3f57600080fd5b336000818152600f6020908152604080832054601090925290912054919850611b6791612408565b881115611b7357600080fd5b611b826109a5896008546123ca565b9550611b936109a587600a546123ca565b601854600480546040805160e060020a63a9059cbb028152600160a060020a039283169381019390935260248301859052519398509091169163a9059cbb916044808201926020929091908290030181600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050506040513d6020811015611c1e57600080fd5b5050600954611c32906109a59088906123ca565b600e805482019055601854600d546040805160e060020a63a9059cbb028152600160a060020a03928316600482015260248101859052905193975091169163a9059cbb916044808201926020929091908290030181600087803b158015611c9857600080fd5b505af1158015611cac573d6000803e3d6000fd5b505050506040513d6020811015611cc257600080fd5b50611cd8905086611cd3878761241a565b612408565b9250611ce48887612408565b9150611cf260145489612408565b601455600160a060020a0387166000908152600f6020526040902054611d189089612408565b600160a060020a0388166000908152600f602090815260408083209390935560155460119091529181208054928b02680100000000000000008602019283900390556014549192501015611d8857611d8460155460145468010000000000000000860281151561144357fe5b6015555b604080518981529051600091600160a060020a038a16916000805160206129018339815191529181900360200190a3604080518981526020810184905242818301529051600160a060020a038916917f723391258f051422e0be75f0bbcc5c94947b440ae6162c87b3efb5fecde315e5919081900360600190a25050505050505050565b336000818152600f60209081526040808320546010909252822054611e319190612408565b90506000811115611e4557611e4581611b1f565b6119f0610a9f565b60175481565b600054600160a060020a03163314611e6a57600080fd5b600160a060020a0381161515611e7f57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806000806000806000611efd8a8a8a6116e8565b965061ffff87161515611ff657601860009054906101000a9004600160a060020a0316600160a060020a0316635c9302c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611f7657600080fd5b505af1158015611f8a573d6000803e3d6000fd5b505050506040513d6020811015611fa057600080fd5b50513360009081526019602090815260408083208c84529091529020600201805461ffff9092166d0100000000000000000000000000026effff0000000000000000000000000019909216919091179055612040565b3360009081526019602090815260408083208b8452909152902060020180546effff0000000000000000000000000019166d010000000000000000000000000061ffff8a16021790555b601854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b505050506040513d60208110156120d057600080fd5b5051601854604080517f343009a2000000000000000000000000000000000000000000000000000000008152600481018e905264ffffffffff8d1660248201529051929850600160a060020a039091169163343009a29160448082019260009290919082900301818387803b15801561214857600080fd5b505af115801561215c573d6000803e3d6000fd5b50503360009081526019602090815260408083208d84528252808320600201805470ff00000000000000000000000000000000191670010000000000000000000000000000000017905560185481517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152915161223e9650600160a060020a039190911694506370a0823193602480840194938390030190829087803b15801561220c57600080fd5b505af1158015612220573d6000803e3d6000fd5b505050506040513d602081101561223657600080fd5b505187612408565b3360009081526019602090815260408083208c845290915290206001015490955093508385116122fd576122728486612408565b925061228060145484612408565b601455336000908152600f602052604090205461229d9084612408565b336000818152600f60209081526040808320949094556015546011825284832080549189029182900390556003860180548990039055845188815294519096509193600080516020612901833981519152929081900390910190a3612328565b838511156123285761230f8585612408565b925061231b3384612539565b6003820180548201905592505b61233460135485612408565b601355503360009081526012602090815260408083206004810180546000190190556010909252909120546123699085612408565b336000818152601060209081526040918290209390935580518b815292830188905242838201525190917fcc843967ff4436c366c668a40b02034eec1fa39c6b6e1ff48c682d04f8a35f25919081900360600190a250505050505050505050565b60008215156123db5750600061131f565b508181028183828115156123eb57fe5b041461131f57fe5b6000818381151561240057fe5b049392505050565b60008282111561241457fe5b50900390565b8181018281101561131f57fe5b601854604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561249a57600080fd5b505af11580156124ae573d6000803e3d6000fd5b505050506040513d60208110156124c457600080fd5b5051151560011461253657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f7472616e73666572206d75737420737563636565640000000000000000000000604482015290519081900360640190fd5b50565b6000806000806000806000806000600154421015151561255857600080fd5b600160a060020a038b16600090815260126020526040902080549098501515612585576016805460010190555b87548a01885560065461259d906109a5908c906123ca565b96506125ae6109a588600a546123ca565b601854600480546040805160e060020a63a9059cbb028152600160a060020a039283169381019390935260248301859052519399509091169163a9059cbb916044808201926020929091908290030181600087803b15801561260f57600080fd5b505af1158015612623573d6000803e3d6000fd5b505050506040513d602081101561263957600080fd5b505060095461264d906109a59089906123ca565b600e805482019055601854600d546040805160e060020a63a9059cbb028152600160a060020a03928316600482015260248101859052905193985091169163a9059cbb916044808201926020929091908290030181600087803b1580156126b357600080fd5b505af11580156126c7573d6000803e3d6000fd5b505050506040513d60208110156126dd57600080fd5b506126ee905087611cd3878961241a565b93506126fa8a88612408565b925068010000000000000000840291506000831180156127245750601454612722848261241a565b115b151561272f57600080fd5b60006014541115612793576127466014548461241a565b601481905568010000000000000000850281151561276057fe5b6015805492909104909101905560145468010000000000000000850281151561278557fe5b048302820382039150612799565b60148390555b600160a060020a038b166000908152600f60205260409020546127bc908461241a565b600160a060020a038c166000818152600f6020908152604080832094909455601554601182528483208054918902889003918201905584518881529451909550929391926000805160206129018339815191529281900390910190a3604080518b81526020810185905242818301529051600160a060020a038d16917f810900bb33e423094372279f779b623ab22b73472a8a91fce3c018129c205019919081900360600190a250909998505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128b357805160ff19168380011785556128e0565b828001600101855582156128e0579182015b828111156128e05782518255916020019190600101906128c5565b50610a809261098e9250905b80821115610a8057600081556001016128ec5600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820a172c5afc30e06aefd000d05543aec96278590d98ba80558c41dc6b7cff182860029

Deployed ByteCode Sourcemap

2023:17896:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6697:8;;;12281:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12281:224:0;-1:-1:-1;;;;;12281:224:0;;;;;;;;;;;;;;;;;;;;;3627:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3627:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3627:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11348:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11348:113:0;;;;13043:288;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13043:288:0;;;;;11469:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11469:91:0;;;;5229:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5229:68:0;-1:-1:-1;;;;;5229:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3702:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3702:34:0;;;;;;;;;;;;;;;;;;;;;;;11746:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11746:156:0;;;;4752:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4752:36:0;;;;4244:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4244:33:0;;;;4203:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4203:34:0;;;;;;;;-1:-1:-1;;;;;4203:34:0;;;;;;;;;;;;;;7349:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7349:429:0;;;;;;13339:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13339:327:0;;;;;11183:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11183:157:0;;;;12513:257;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12513:257:0;;;;10786:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10786:117:0;;;;;;;15606:1362;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15606:1362:0;;;;;;;4165:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4165:31:0;;;;11568:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11568:170:0;;;;;;;11910:363;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11910:363:0;-1:-1:-1;;;;;11910:363:0;;;;;;;;;10911:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10911:126:0;-1:-1:-1;;;;;10911:126:0;;;;;12778:257;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12778:257:0;;;;1544:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1544:20:0;;;;5943:348;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5943:348:0;;;;;3666:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3666:29:0;;;;11045:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11045:130:0;-1:-1:-1;;;;;11045:130:0;;;;;6462:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6462:190:0;;;-1:-1:-1;;;;;6462:190:0;;;;;9361:1227;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9361:1227:0;-1:-1:-1;;;;;9361:1227:0;;;;;;;;;;;;;;;;;;;;;;;;;4403:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4403:59:0;-1:-1:-1;;;;;4403:59:0;;;;;16976:983;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16976:983:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10687:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10687:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10687:91:0;;-1:-1:-1;10687:91:0;;-1:-1:-1;;;;;;;10687:91:0;4127:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4127:31:0;;;;10596:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10596:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10596:83:0;;-1:-1:-1;10596:83:0;;-1:-1:-1;;;;;;;10596:83:0;4872:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4872:30:0;;;;6721:345;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6721:345:0;;;;4524:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4524:45:0;-1:-1:-1;;;;;4524:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6299:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6299:155:0;;;;;7786:1567;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7786:1567:0;;;;;7074:267;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7074:267:0;;;;4909:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4909:32:0;;;;1836:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1836:178:0;-1:-1:-1;;;;;1836:178:0;;;;;17967:1949;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17967:1949:0;;;;;;;;;;;12281:224;-1:-1:-1;;;;;12456:28:0;12349:7;12456:28;;;:10;:28;;;;;;;;;12415:19;:37;;;;;;;12397:15;;4324:7;12397:55;;12387:97;;;;12376:121;;12281:224::o;3627:32::-;;;;;;;;;;;;;;-1:-1:-1;;3627:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11348:113::-;11423:5;;:30;;;;;;11447:4;11423:30;;;;;;11396:7;;-1:-1:-1;;;;;11423:5:0;;:15;;:30;;;;;;;;;;;;;;11396:7;11423:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;11423:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11423:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11423:30:0;;-1:-1:-1;11348:113:0;;:::o;13043:288::-;13118:7;13138:18;13225:23;13159:55;13172:36;13185:11;13198:9;;13172:12;:36::i;:::-;13210:3;13159:12;:55::i;:::-;13138:76;;13251:37;13264:11;13277:10;13251:12;:37::i;:::-;13225:63;13043:288;-1:-1:-1;;;;13043:288:0:o;11469:91::-;11540:12;;11469:91;:::o;5229:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3702:34::-;3735:1;3702:34;:::o;11746:156::-;11790:7;11837:10;11865:29;11837:10;11865:11;:29::i;:::-;11858:36;;11746:156;;;:::o;4752:36::-;;;;:::o;4244:33::-;;;;:::o;4203:34::-;;;-1:-1:-1;;;;;4203:34:0;;:::o;7349:429::-;7397:24;7445:18;7621:19;2437:1;2421:13;:11;:13::i;:::-;:17;2413:26;;;;;;7424:10;7397:37;;7466:13;:11;:13::i;:::-;-1:-1:-1;;;;;7490:28:0;;;;;;;:10;:28;;;;;;;;:65;;4324:7;7532:22;;7490:65;;;7566:5;;:44;;-1:-1:-1;;;;;7566:44:0;;;;;;;;;;;;;;;;;7445:34;;-1:-1:-1;7566:5:0;;;;:14;;:44;;;;;7490:28;;7566:44;;;;;;;;:5;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;7566:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7566:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;;7643:29:0;;;;;;:11;7566:44;7643:29;;;;;;;;7683:17;;;:31;;;;;;7730:40;;;;;;;7643:29;;;7730:40;;;;;;;;;7349:429;;;:::o;13339:327::-;13413:7;13482:18;13570:17;13458:12;;13441:13;:29;;13433:38;;;;;;;;13503:56;13516:37;13529:13;13544:8;;13516:12;:37::i;11183:157::-;11266:16;;11246;;-1:-1:-1;;;;;11246:16:0;;;11266;;11246:36;11238:45;;;;;;11316:16;;11294:19;:38;;-1:-1:-1;;11294:38:0;-1:-1:-1;;;;;11316:16:0;;;11294:38;;;;;;11183:157::o;12513:257::-;12555:7;12575:12;12604:18;12683:17;12590:3;12575:18;;12625:47;12638:28;12651:4;12657:8;;12638:12;:28::i;12625:47::-;12604:68;;12703:30;12716:4;12722:10;12703:12;:30::i;10786:117::-;1810:5;;-1:-1:-1;;;;;1810:5:0;1796:10;:19;1788:28;;;;;;10863:14;:32;;;;;;;-1:-1:-1;;10863:32:0;;;;;;;;;10786:117::o;15606:1362::-;15864:19;15892:15;15916:19;15944:17;15970:18;16213:17;16686:19;2512:14;;;;;;;;;;;:22;;2530:4;2512:22;;;2504:31;;;;;;;;15710:22;15699:33;;;15691:42;;;;;;15781:7;15750:27;15760:10;15772:4;15750:9;:27::i;:::-;:38;;15742:47;;;;;;15800:5;;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15800:5:0;;;;:16;;:32;;;;;:5;;:32;;;;;;;;:5;;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;15800:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16013:5:0;;:31;;;;;;16038:4;16013:31;;;;;;-1:-1:-1;;;;;16013:5:0;;;;-1:-1:-1;16013:16:0;;-1:-1:-1;16013:31:0;;;;;;;;;;;;;;;:5;;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;16013:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16013:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16013:31:0;;-1:-1:-1;16067:28:0;16013:31;16093:1;16067:12;:28::i;:::-;16158:5;;:44;;;;;;16183:4;16158:44;;;;;;;;;;;;16053:42;;-1:-1:-1;;;;;;16158:5:0;;;;:16;;:44;;;;;;;;;;;;;;;:5;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;16158:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16158:44:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;16158:44:0;;;;;;;;;;;;;;;;16252:40;;;;;;;16158:44;16252:40;;;;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;16252:40:0;;;;;;;;16242:51;;16158:44;;-1:-1:-1;16158:44:0;;-1:-1:-1;16158:44:0;;-1:-1:-1;16158:44:0;-1:-1:-1;16252:40:0;;;;16242:51;;;;16252:40;16242:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16242:51:0;;;;;;;;;;;;;16339:10;-1:-1:-1;16328:22:0;;;:10;:22;;;;;:33;;;;;;;;;:41;;;16242:51;;-1:-1:-1;;16328:41:0;;;;;:50;;-1:-1:-1;16320:59:0;;-1:-1:-1;16320:59:0;;;;;16461:4;16417:10;:22;16428:10;-1:-1:-1;;;;;16417:22:0;-1:-1:-1;;;;;16417:22:0;;;;;;;;;;;;:33;16440:9;16417:33;;;;;;;;;;;:41;;;:48;;;;;;;;;;;;;;;;;;16512:92;;;;;;;;;16523:8;16512:92;;;;;;16533:7;16512:92;;;;16542:12;16512:92;;;;;;16556:10;16512:92;;;;;;16568:11;16512:92;;;;;;16588:1;16512:92;;;;;;16592:4;16512:92;;;;;;16598:5;16512:92;;;;;16476:10;:22;16487:10;-1:-1:-1;;;;;16476:22:0;-1:-1:-1;;;;;16476:22:0;;;;;;;;;;;;:33;16499:9;16476:33;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16635:40;16648:17;;16667:7;16635:12;:40::i;:::-;16615:17;:60;-1:-1:-1;16720:10:0;16708:23;;;;:11;:23;;;;;;;;16740:18;;;:23;;16762:1;16740:23;;;16772:12;;;:23;;;;;;16858:24;:36;;;;;;;16845:59;;16788:7;16845:12;:59::i;:::-;16831:10;16806:36;;;;:24;:36;;;;;;;;;:98;;;;16920:40;;;;;16956:3;16920:40;;;;;;;;;16831:10;;16920:40;;;;;;;;;;;15606:1362;;;;;;;;;:::o;4165:31::-;;;-1:-1:-1;;;;;4165:31:0;;:::o;11568:170::-;11620:7;11667:10;11695:35;11667:10;11723:6;11695:9;:35::i;:::-;11688:42;11568:170;-1:-1:-1;;;11568:170:0:o;11910:363::-;11991:7;12015:17;;;12011:255;;-1:-1:-1;;;;;;12054:37:0;;;;;;:19;:37;;;;;;12047:44;;12011:255;12134:4;12122:16;;;;12118:148;;;-1:-1:-1;;;;;12172:37:0;;;;;;:19;:37;;;;;;;;;12211:24;:42;;;;;;;12159:95;;12172:37;12159:12;:95::i;:::-;12152:102;;12118:148;11910:363;;;;:::o;10911:126::-;1810:5;;-1:-1:-1;;;;;1810:5:0;1796:10;:19;1788:28;;;;;;10994:16;:35;;-1:-1:-1;;10994:35:0;-1:-1:-1;;;;;10994:35:0;;;;;;;;;;10911:126::o;12778:257::-;12819:7;12839:12;12868:18;12948:17;12854:3;12839:18;;12889:48;12902:29;12915:4;12921:9;;12902:12;:29::i;12889:48::-;12868:69;;12968:30;12981:4;12987:10;12968:12;:30::i;1544:20::-;;;-1:-1:-1;;;;;1544:20:0;;:::o;5943:348::-;5996:7;6024:11;;;6016:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6075:28;6095:7;6075:19;:28::i;:::-;6114:13;:24;;;;;;6180:15;;6221:12;;6167:67;;6180:15;4324:7;6198:19;;6197:36;;;;;;;;6167:12;:67::i;:::-;6149:15;:85;6250:33;;;;;;;;6263:10;;6250:33;;;;;;;;;;5943:348;;;:::o;3666:29::-;;;;;;;;;;;;;;;-1:-1:-1;;3666:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11045:130;2248:16;;-1:-1:-1;;;;;2248:16:0;2234:10;:30;2226:39;;;;;;11132:16;:35;;-1:-1:-1;;11132:35:0;-1:-1:-1;;;;;11132:35:0;;;;;;;;;;11045:130::o;6462:190::-;6537:7;6557:28;6577:7;6557:19;:28::i;:::-;6603:41;6618:16;6636:7;6603:14;:41::i;9361:1227::-;9459:4;9475:24;9731:17;9824:20;9898:18;2353:1;2336:14;2345:4;2336:8;:14::i;:::-;:18;2328:27;;;;;;9502:10;9563:37;;;;:19;:37;;;;;;;;;9602:24;:42;;;;;;;9502:10;;-1:-1:-1;9550:95:0;;:12;:95::i;:::-;9531:114;;;9523:123;;;;;;9679:1;9663:13;:11;:13::i;:::-;:17;9659:60;;;9697:10;:8;:10::i;:::-;9751:62;9764:43;9777:15;9794:12;;9764;:43::i;9751:62::-;9731:82;;9847:40;9860:15;9877:9;9847:12;:40::i;:::-;9824:63;;9919:9;9898:30;;9956:37;9969:12;;9983:9;9956:12;:37::i;:::-;9941:12;:52;-1:-1:-1;;;;;10059:37:0;;;;;;:19;:37;;;;;;10046:68;;10098:15;10046:12;:68::i;:::-;-1:-1:-1;;;;;10006:37:0;;;;;;;:19;:37;;;;;;:108;;;;10172:31;;;;;;;10159:59;;10205:12;10159;:59::i;:::-;-1:-1:-1;;;;;10125:31:0;;;;;;;:19;:31;;;;;;;;:93;;;;10273:15;;;10231:28;;;;;:10;:28;;;;;;:76;;10273:33;;;10231:76;;;;;;10354:15;;10318:22;;;;;;;:67;;10354:30;;;10318:67;;;;;;10429:15;10473:12;;10416:70;;10429:15;4324:7;10447:22;;10446:39;;;;;;10416:70;10398:15;:88;10504:52;;;;;;;;-1:-1:-1;;;;;10504:52:0;;;;;;;;-1:-1:-1;;;;;;;;;;;10504:52:0;;;;;;;;-1:-1:-1;10576:4:0;;9361:1227;-1:-1:-1;;;;;;9361:1227:0:o;4403:59::-;;;;;;;;;;;;;:::o;16976:983::-;17335:5;;:44;;;;;;17360:4;17335:44;;;;;;;;;;;;17078:6;;;;;;;;;;;;;;-1:-1:-1;;;;;17335:5:0;;:16;;:44;;;;;;;;;;;;;;17078:6;17335:5;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;17335:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17335:44:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17335:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17258:121;;;;;;;;;;;;;;;;;;;;;;;;;17396:10;:22;17407:10;-1:-1:-1;;;;;17396:22:0;-1:-1:-1;;;;;17396:22:0;;;;;;;;;;;;:33;17419:9;17396:33;;;;;;;;;;;:41;;;;;;;;;;;;:49;;17441:4;17396:49;;;:101;;;;-1:-1:-1;17460:10:0;17449:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:39;;;;;;;;:48;17396:101;17388:110;;;;;;;;17526:10;17515:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:41;:58;;;;:41;;:58;:87;;;;;17594:8;17577:25;;:13;:25;;;17515:87;17507:96;;;;;;;;17631:10;17620:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;17667:22;;;17620:69;17612:78;;;;;;17718:10;17707:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:45;;;:61;;;;:45;;:61;17699:70;;;;;;17797:10;17786:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;:57;;;;:43;;;;;:57;17778:66;;;;;;17872:10;17861:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:44;;;:59;;;;:44;;;;;:59;17853:68;;;;;;17939:12;16976:983;-1:-1:-1;;;;;;;;;16976:983:0:o;10687:91::-;1810:5;;-1:-1:-1;;;;;1810:5:0;1796:10;:19;1788:28;;;;;;10754:16;;;;:6;;:16;;;;;:::i;:::-;;10687:91;:::o;4127:31::-;;;-1:-1:-1;;;;;4127:31:0;;:::o;10596:83::-;1810:5;;-1:-1:-1;;;;;1810:5:0;1796:10;:19;1788:28;;;;;;10659:12;;;;:4;;:12;;;;;:::i;4872:30::-;;;;:::o;6721:345::-;6765:24;6813:18;6935:15;2437:1;2421:13;:11;:13::i;:::-;:17;2413:26;;;;;;6792:10;6765:37;;6834:13;:11;:13::i;:::-;-1:-1:-1;;;;;6858:28:0;;;;;;:10;:28;;;;;:66;;4324:7;6901:22;;6858:66;;;6813:34;-1:-1:-1;6953:44:0;6869:16;6813:34;6953:14;:44::i;:::-;6935:62;;7020:16;-1:-1:-1;;;;;7013:45:0;;7038:10;7050:7;7013:45;;;;;;;;;;;;;;;;;;;;;;;;6721:345;;;:::o;4524:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6299:155::-;6345:7;6365:28;6385:7;6365:19;:28::i;:::-;6411:35;6426:10;6438:7;6411:14;:35::i;7786:1567::-;7860:24;8044:27;8145:20;8308:19;8514:18;8619:17;8892:22;2353:1;2336:14;2345:4;2336:8;:14::i;:::-;:18;2328:27;;;;;;7887:10;7948:37;;;;:19;:37;;;;;;;;;7987:24;:42;;;;;;;7887:10;;-1:-1:-1;7935:95:0;;:12;:95::i;:::-;7916:114;;;7908:123;;;;;;8074:58;8087:39;8100:15;8117:8;;8087:12;:39::i;8074:58::-;8044:88;;8168:68;8181:50;8194:19;8215:15;;8181:12;:50::i;8168:68::-;8247:5;;8262:18;;;8247:48;;;-1:-1:-1;;;;;8247:48:0;;-1:-1:-1;;;;;8262:18:0;;;8247:48;;;;;;;;;;;;;;8145:91;;-1:-1:-1;8247:5:0;;;;:14;;:48;;;;;;;;;;;;;;;:5;;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8247:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8247:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8377:14:0;;8330:68;;8343:49;;8356:19;;8343:12;:49::i;8330:68::-;8409:18;:33;;;;;;8453:5;;8468:19;;8453:48;;;-1:-1:-1;;;;;8453:48:0;;-1:-1:-1;;;;;8468:19:0;;;8453:48;;;;;;;;;;;;8308:90;;-1:-1:-1;8453:5:0;;;:14;;:48;;;;;;;;;;;;;;;8409:18;8453:5;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8453:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8453:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8535:73:0;;-1:-1:-1;8548:19:0;8569:38;8582:12;8595:11;8569:12;:38::i;:::-;8535:12;:73::i;:::-;8514:94;;8639:50;8652:15;8669:19;8639:12;:50::i;:::-;8619:70;;8717:43;8730:12;;8744:15;8717:12;:43::i;:::-;8702:12;:58;-1:-1:-1;;;;;8824:37:0;;;;;;:19;:37;;;;;;8811:68;;8863:15;8811:12;:68::i;:::-;-1:-1:-1;;;;;8771:37:0;;;;;;:19;:37;;;;;;;;:108;;;;8927:15;;8998:10;:28;;;;;;:47;;8927:33;;;4324:7;8964:21;;8927:59;8998:47;;;;;;9062:12;;8927:59;;-1:-1:-1;;9058:137:0;;;9113:70;9126:15;;9170:12;;4324:7;9144:10;:22;9143:39;;;;;;9113:70;9095:15;:88;9058:137;9212:55;;;;;;;;9247:1;;-1:-1:-1;;;;;9212:55:0;;;-1:-1:-1;;;;;;;;;;;9212:55:0;;;;;;;;9283:62;;;;;;;;;;;;9341:3;9283:62;;;;;;-1:-1:-1;;;;;9283:62:0;;;;;;;;;;;;;7786:1567;;;;;;;;:::o;7074:267::-;7137:10;7110:24;7189:37;;;:19;:37;;;;;;;;;7228:24;:42;;;;;;7176:95;;7189:37;7176:12;:95::i;:::-;7158:113;;7296:1;7286:7;:11;7282:30;;;7299:13;7304:7;7299:4;:13::i;:::-;7323:10;:8;:10::i;4909:32::-;;;;:::o;1836:178::-;1810:5;;-1:-1:-1;;;;;1810:5:0;1796:10;:19;1788:28;;;;;;-1:-1:-1;;;;;1913:22:0;;;;1905:31;;;;;;1969:5;;;1948:37;;-1:-1:-1;;;;;1948:37:0;;;;1969:5;;;1948:37;;;1992:5;:16;;-1:-1:-1;;1992:16:0;-1:-1:-1;;;;;1992:16:0;;;;;;;;;;1836:178::o;17967:1949::-;18063:19;18387:16;18609:15;18690:21;18766:19;18794:22;19653:19;18085:48;18095:11;18108:13;18123:9;18085;:48::i;:::-;18063:70;-1:-1:-1;18148:17:0;;;;18144:233;;;18232:5;;;;;;;;;-1:-1:-1;;;;;18232:5:0;-1:-1:-1;;;;;18232:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18232:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18232:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18232:18:0;18188:10;18177:22;;;;:10;18232:18;18177:22;;;;;;;:33;;;;;;;;:45;;:74;;;;;;;;-1:-1:-1;;18177:74:0;;;;;;;;;18144:233;;;18318:10;18307:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:45;;:60;;-1:-1:-1;;18307:60:0;;;;;;;;;18144:233;18406:5;;:30;;;;;;18430:4;18406:30;;;;;;-1:-1:-1;;;;;18406:5:0;;;;:15;;:30;;;;;;;;;;;;;;;:5;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18406:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18406:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18406:30:0;18447:5;;:42;;;;;;;;;;;;;;;;;;;;;18406:30;;-1:-1:-1;;;;;;18447:5:0;;;;:14;;:42;;;;;:5;;:42;;;;;;;;:5;;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;18447:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;18563:10:0;18552:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:39;;:46;;-1:-1:-1;;18552:46:0;;;;;18640:5;;:30;;;;;18664:4;18640:30;;;;;;18627:54;;-1:-1:-1;;;;;;18640:5:0;;;;;-1:-1:-1;18640:15:0;;:30;;;;;18552:22;18640:30;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18640:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18640:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18640:30:0;18672:8;18627:12;:54::i;:::-;18725:10;18714:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;18609:72;;-1:-1:-1;18714:43:0;-1:-1:-1;18831:24:0;;;18827:739;;18882:36;18895:13;18910:7;18882:12;:36::i;:::-;18868:50;;18944:39;18957:12;;18971:11;18944:12;:39::i;:::-;18929:12;:54;19061:10;19041:31;;;;:19;:31;;;;;;19028:58;;19074:11;19028:12;:58::i;:::-;19014:10;18994:31;;;;:19;:31;;;;;;;;:92;;;;19125:15;;19166:10;:22;;;;;:41;;19125:29;;;19166:41;;;;;;19218:25;;;:48;;;;;;;19282:45;;;;;;;19125:29;;-1:-1:-1;18994:31:0;;-1:-1:-1;;;;;;;;;;;19282:45:0;;;;;;;;;;18827:739;;;19357:13;19347:7;:23;19343:223;;;19397:36;19410:7;19419:13;19397:12;:36::i;:::-;19383:50;;19458:39;19473:10;19485:11;19458:14;:39::i;:::-;19508:25;;;:48;;;;;;19444:53;-1:-1:-1;19343:223:0;19596:46;19609:17;;19628:13;19596:12;:46::i;:::-;19576:17;:66;-1:-1:-1;19687:10:0;19675:23;;;;:11;:23;;;;;;;;19707:18;;;:23;;-1:-1:-1;;19707:23:0;;;19793:24;:36;;;;;;;19780:65;;19831:13;19780:12;:65::i;:::-;19766:10;19741:36;;;;:24;:36;;;;;;;;;:104;;;;19861:47;;;;;;;;;;;19904:3;19861:47;;;;;19766:10;;19861:47;;;;;;;;;;17967:1949;;;;;;;;;;:::o;52:174::-;110:9;132:6;;128:37;;;-1:-1:-1;156:1:0;149:8;;128:37;-1:-1:-1;175:5:0;;;179:1;175;:5;194;;;;;;;;:10;187:18;;;232:92;290:7;317:1;313;:5;;;;;;;;;232:92;-1:-1:-1;;;232:92:0:o;330:113::-;388:7;411:6;;;;404:14;;;;-1:-1:-1;432:5:0;;;330:113::o;449:127::-;529:5;;;548:6;;;;541:14;;;5766:169;5839:5;;:54;;;;;;5858:10;5839:54;;;;5878:4;5839:54;;;;;;;;;;;;-1:-1:-1;;;;;5839:5:0;;;;:18;;:54;;;;;;;;;;;;;;;:5;;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;5839:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5839:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5839:54:0;:62;;5897:4;5839:62;5831:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5766:169;:::o;13674:1924::-;13776:7;13796:19;13980:27;14079:20;14242:19;14448:18;14553:23;14637:12;15263:22;2148:15;;2141:3;:22;;2133:31;;;;;;;;-1:-1:-1;;;;;13818:29:0;;;;;;:11;:29;;;;;13864:14;;13818:29;;-1:-1:-1;13864:19:0;13860:65;;;13900:11;:13;;;;;;13860:65;13937:30;;;;;;14050:9;;14010:56;;14023:37;;13955:12;;14023;:37::i;14010:56::-;13980:86;;14102:68;14115:50;14128:19;14149:15;;14115:12;:50::i;14102:68::-;14181:5;;14196:18;;;14181:48;;;-1:-1:-1;;;;;14181:48:0;;-1:-1:-1;;;;;14196:18:0;;;14181:48;;;;;;;;;;;;;;14079:91;;-1:-1:-1;14181:5:0;;;;:14;;:48;;;;;;;;;;;;;;;:5;;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;14181:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14181:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;14311:14:0;;14264:68;;14277:49;;14290:19;;14277:12;:49::i;14264:68::-;14343:18;:33;;;;;;14387:5;;14402:19;;14387:48;;;-1:-1:-1;;;;;14387:48:0;;-1:-1:-1;;;;;14402:19:0;;;14387:48;;;;;;;;;;;;14242:90;;-1:-1:-1;14387:5:0;;;:14;;:48;;;;;;;;;;;;;;;14343:18;14387:5;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;14387:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14387:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14469:73:0;;-1:-1:-1;14482:19:0;14503:38;14516:11;14528:12;14503;:38::i;14469:73::-;14448:94;;14579:47;14592:12;14606:19;14579:12;:47::i;:::-;14553:73;;4324:7;14652:10;:22;14637:37;;14713:1;14695:15;:19;:81;;;;-1:-1:-1;14764:12:0;;14718:43;14731:15;14764:12;14718;:43::i;:::-;:58;14695:81;14687:90;;;;;;;;14809:1;14794:12;;:16;14790:340;;;14842:43;14855:12;;14869:15;14842:12;:43::i;:::-;14827:12;:58;;;4324:7;14920:22;;:37;;;;;;;14900:15;:58;;14920:37;;;;14900:58;;;;;15040:12;;4324:7;15015:22;;:37;;;;;;;;14996:15;:57;14988:4;:66;14980:4;:75;14973:82;;14790:340;;;15088:12;:30;;;14790:340;-1:-1:-1;;;;;15195:37:0;;;;;;:19;:37;;;;;;15182:68;;15234:15;15182:12;:68::i;:::-;-1:-1:-1;;;;;15142:37:0;;;;;;:19;:37;;;;;;;;:108;;;;15298:15;;15350:10;:28;;;;;:47;;15298:33;;;:40;;;15350:47;;;;;15415:55;;;;;;;15298:40;;-1:-1:-1;15142:37:0;;;;-1:-1:-1;;;;;;;;;;;15415:55:0;;;;;;;;;15486:69;;;;;;;;;;;;15551:3;15486:69;;;;;;-1:-1:-1;;;;;15486:69:0;;;;;;;;;;;;;-1:-1:-1;15575:15:0;;13674:1924;-1:-1:-1;;;;;;;;;13674:1924:0:o;2023:17896::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2023:17896:0;;;;-1:-1:-1;2023:17896:0;;;;;;;;;;;;;;

Swarm Source

bzzr://a172c5afc30e06aefd000d05543aec96278590d98ba80558c41dc6b7cff18286
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.