ETH Price: $3,880.37 (+1.18%)

Contract

0xb9595da1C6ecfeCF4766fa8587BF63b951bAab5D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw130143662021-08-13 3:24:261217 days ago1628825066IN
0xb9595da1...951bAab5D
0 ETH0.0026654941.3191222
Withdraw130143092021-08-13 3:10:271217 days ago1628824227IN
0xb9595da1...951bAab5D
0 ETH0.0061663737.88186207
Withdraw By User114475382020-12-13 23:18:401460 days ago1607901520IN
0xb9595da1...951bAab5D
0 ETH0.0077549620.15
Withdraw By User100360542020-05-10 3:32:231677 days ago1589081543IN
0xb9595da1...951bAab5D
0 ETH0.0126183339
Deposit Eth99869442020-05-02 13:16:581685 days ago1588425418IN
0xb9595da1...951bAab5D
0.38 ETH0.0133680710
Deposit Token99869342020-05-02 13:14:371685 days ago1588425277IN
0xb9595da1...951bAab5D
0 ETH0.0221421710
Withdraw By User99227692020-04-22 14:22:011695 days ago1587565321IN
0xb9595da1...951bAab5D
0 ETH0.0055268518.7
Set Award Rankin...97333882020-03-24 9:29:421724 days ago1585042182IN
0xb9595da1...951bAab5D
0 ETH0.001952042.9
Set Award Rankin...97250912020-03-23 2:37:481725 days ago1584931068IN
0xb9595da1...951bAab5D
0 ETH0.000673121
Set Award Rankin...97143792020-03-21 10:08:471727 days ago1584785327IN
0xb9595da1...951bAab5D
0 ETH0.000673131
Withdraw By User97133012020-03-21 6:00:021727 days ago1584770402IN
0xb9595da1...951bAab5D
0 ETH0.001866766
Set Award Rankin...96863452020-03-17 2:24:341731 days ago1584411874IN
0xb9595da1...951bAab5D
0 ETH0.002692484
Set Award Rankin...96863372020-03-17 2:23:221731 days ago1584411802IN
0xb9595da1...951bAab5D
0 ETH0.003365665
Set Award Rankin...96780012020-03-15 19:27:591733 days ago1584300479IN
0xb9595da1...951bAab5D
0 ETH0.000673121
Withdraw By User96624092020-03-13 9:39:501735 days ago1584092390IN
0xb9595da1...951bAab5D
0 ETH0.0059510717.4
Deposit Eth96622712020-03-13 9:09:491735 days ago1584090589IN
0xb9595da1...951bAab5D
0.03789 ETH0.0223294118.75
Set Award Rankin...96474952020-03-11 2:17:061737 days ago1583893026IN
0xb9595da1...951bAab5D
0 ETH0.000673131
Set Award Rankin...96423972020-03-10 7:29:301738 days ago1583825370IN
0xb9595da1...951bAab5D
0 ETH0.002019363
Set Award Rankin...96347182020-03-09 2:54:041739 days ago1583722444IN
0xb9595da1...951bAab5D
0 ETH0.001346242
Set Award Rankin...96345282020-03-09 2:15:391739 days ago1583720139IN
0xb9595da1...951bAab5D
0 ETH0.002019393
Set Award Rankin...96345202020-03-09 2:14:151739 days ago1583720055IN
0xb9595da1...951bAab5D
0 ETH0.002019363
Set Award Rankin...96152562020-03-06 3:43:511742 days ago1583466231IN
0xb9595da1...951bAab5D
0 ETH0.001076991.6
Set Award Rankin...96085042020-03-05 2:23:361743 days ago1583375016IN
0xb9595da1...951bAab5D
0 ETH0.000673121
Set Award Rankin...96021112020-03-04 2:58:171744 days ago1583290697IN
0xb9595da1...951bAab5D
0 ETH0.001076991.6
Set Award Rankin...96021052020-03-04 2:57:451744 days ago1583290665IN
0xb9595da1...951bAab5D
0 ETH0.000673121
View all transactions

Latest 15 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
99869442020-05-02 13:16:581685 days ago1588425418
0xb9595da1...951bAab5D
0.38 ETH
96622712020-03-13 9:09:491735 days ago1584090589
0xb9595da1...951bAab5D
0.03789 ETH
95029532020-02-17 21:01:371760 days ago1581973297
0xb9595da1...951bAab5D
0.3984027 ETH
95004022020-02-17 11:38:091760 days ago1581939489
0xb9595da1...951bAab5D
0.01 ETH
94998432020-02-17 9:34:051760 days ago1581932045
0xb9595da1...951bAab5D
0.1027598 ETH
94995122020-02-17 8:16:201760 days ago1581927380
0xb9595da1...951bAab5D
0.0041549 ETH
94219242020-02-05 9:56:161772 days ago1580896576
0xb9595da1...951bAab5D
0.5413827 ETH
94151442020-02-04 8:54:201773 days ago1580806460
0xb9595da1...951bAab5D
0.5509933 ETH
94142292020-02-04 5:37:031773 days ago1580794623
0xb9595da1...951bAab5D
0.6 ETH
94095482020-02-03 12:20:161774 days ago1580732416
0xb9595da1...951bAab5D
6.52 ETH
94095222020-02-03 12:15:331774 days ago1580732133
0xb9595da1...951bAab5D
6.513 ETH
93953632020-02-01 8:07:151776 days ago1580544435
0xb9595da1...951bAab5D
0.5642019 ETH
93950932020-02-01 7:08:071776 days ago1580540887
0xb9595da1...951bAab5D
0.59 ETH
93943192020-02-01 4:17:481776 days ago1580530668
0xb9595da1...951bAab5D
0.0562525 ETH
93840592020-01-30 14:26:571778 days ago1580394417
0xb9595da1...951bAab5D
0.01 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TOMORROWPRICE

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.4.26;

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

}
library SafeMath {

    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0); // Solidity only automatically asserts when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two numbers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}
interface ERC20 {
    function totalSupply() external view returns (uint supply);
    function balanceOf(address _owner) external view returns (uint balance);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint _value) external returns (bool success);
    function approve(address _spender, uint _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint remaining);
    function decimals() external view returns(uint digits);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}
contract ProxyKyberSwap {

    function executeSwap(
        ERC20 srcToken,
        uint srcQty,
        ERC20 destToken,
        address destAddress,
        uint maxDestAmount,
        uint typeSwap
    ) public payable ;
    function getConversionRates(
        ERC20 srcToken,
        uint srcQty,
        ERC20 destToken
    ) public view returns (uint, uint, uint _proccessAmount);
}
contract CPProxy {
    function mint(uint256 mintAmount) public;
    function redeemUnderlying(uint256 redeemAmount) public returns (uint);
    function redeem(uint256 redeemTokens) public returns (uint);
    function exchangeRateStored() public view returns (uint);
}
contract TOMORROWPRICE is Ownable{
    using SafeMath for uint256;
    ProxyKyberSwap public proxyKyberSwap = ProxyKyberSwap(0xd28FC4D54112cD4ccE743542AFA7cd6A724FCf7A);
    ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
    ERC20 constant internal DAI_TOKEN_ADDRESS = ERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F);
    ERC20 constant internal cDAI_TOKEN_ADDRESS = ERC20(address(0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643));
    CPProxy public CPProxyContract = CPProxy(address(0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643));
    
    address public ceo = address(0x2076A228E6eB670fd1C604DE574d555476520DB7);
    // address public ceo = address(0x3456dd41c8fF0671fFEB6B7b3eA674A2daD5324C);
    mapping(address => uint256) public usersBalance;
    struct partner {
        uint256 totalDeposit;
        uint256 totalCDAI;
        mapping(address => uint256) users;
    }
    struct award {
        bool isSet;
        uint256 totalAmount;
        address[] members;
    }
    struct awardRanking {
        bool isSet;
        uint256 totalAmount;
        address[] members;
        uint[] percens;
    }
    mapping(uint256 => award) public awards;
    uint public currentAward;
    mapping(uint256 => awardRanking) public awardRankings;
    // mapping(uint256 => awardpartner) public awardpartners;
    uint256 public totalDeposit;
    uint256 public totalAward;
    uint256 public minAward = 100 ether;
    uint256 public maxAward = 1000 ether;
    uint256 public seeResultFee = 1 ether;
    uint256[] public seeResultFeePercent = [7000, 3000];
    uint256 public totalAwardSystem;
    uint256 public totalAwardRanking;
    uint256 public totalAwardPartner;
    uint[] public percenRanking = [200, 100, 50, 20, 20, 20, 20, 20, 20, 20];
    mapping(address => partner) public partners;
    address[] public partnerArr;
    uint public partnerPercent = 2500;
    uint public latestDatePartnerAward;
    uint public periodPartnerAward =  604800; // 604800; 7 ngay;
    // Events
    event _deposit(address _sender, uint256 _numDAI);
    event _withdraw(address _sender, uint256 _numDAI);
    event _setAward(uint256 _awardId, address[] _members, uint256 _userAward);
    event _setAwardRanking(uint256 _awardId, address[] _members, uint[] _amounts);
    event _setAwardPartner(uint256 _weekId, address _partner, uint256 _amounts);
    event _pay2seeResult(address _sender, address _user, uint256 _userAmount, uint256 _sysAmount);
    modifier onlyCeo() {
        require(msg.sender == ceo);
        _;
    }
    modifier onlyManager() {
        require(msg.sender == owner || msg.sender == ceo);
        _;
    }

    /**
     * @dev Contract constructor
     */
    constructor() public {}
    function getConversionRates(
        ERC20 _srcToken,
        uint srcQty,
        ERC20 destToken
    ) public view returns (uint, uint, uint _proccessAmount) {
        return proxyKyberSwap.getConversionRates(_srcToken, srcQty, destToken);
    }
    function config(uint256 _minAward, uint256 _maxAward) public onlyManager{
        minAward = _minAward;
        maxAward = _maxAward;
    }
    function configPercenRanking( uint[] _percenRanking) public onlyManager{
        percenRanking = _percenRanking;
    }
    function configSeeResultFee(uint256 _seeResultFee, uint[] _seeResultFeePercent) public onlyManager{
        seeResultFee = _seeResultFee;
        seeResultFeePercent = _seeResultFeePercent;
    }
    function configPartner(uint _partnerPercent, address[] _partners, uint _periodPartnerAward) public onlyManager{
        partnerPercent = _partnerPercent;
        partnerArr = _partners;
        periodPartnerAward = _periodPartnerAward;
    }

    function depositEth(address _partner) public payable {
        uint256 minConversionRate;
        (minConversionRate,,) = proxyKyberSwap.getConversionRates(ETH_TOKEN_ADDRESS, msg.value, DAI_TOKEN_ADDRESS);
        uint256 processAmount = msg.value <= 1 ether ? minConversionRate : minConversionRate.mul(msg.value).div(1 ether);
        proxyKyberSwap.executeSwap.value(msg.value)(
            ETH_TOKEN_ADDRESS,
            msg.value,
            DAI_TOKEN_ADDRESS,
            address(this),
            processAmount,
            0
        );
        uint256 _numDAI = DAI_TOKEN_ADDRESS.balanceOf(address(this));
        processCP(_numDAI, _partner);
    }
    function depositDai(uint256 _numDAI, address _partner) public {
        require(DAI_TOKEN_ADDRESS.transferFrom(msg.sender, address(this), _numDAI));
        processCP(_numDAI, _partner);
    }
    function depositToken(
        ERC20 srcToken,
        uint srcQty, address _partner) public {
        require(srcToken != DAI_TOKEN_ADDRESS);
        uint256 minConversionRate;
        uint256 decimal = 10**srcToken.decimals();
        (minConversionRate,,) = proxyKyberSwap.getConversionRates(srcToken, srcQty, DAI_TOKEN_ADDRESS);
        uint256 processAmount = srcQty <= decimal ? minConversionRate : minConversionRate.mul(srcQty).div(decimal);
        require(srcToken.transferFrom(msg.sender, address(this), srcQty));
        srcToken.approve(address(proxyKyberSwap), srcQty);
        proxyKyberSwap.executeSwap(
            srcToken,
            srcQty,
            DAI_TOKEN_ADDRESS,
            address(this),
            processAmount,
            1
        );
        uint256 _numDAI = DAI_TOKEN_ADDRESS.balanceOf(address(this));
        processCP(_numDAI, _partner);
    }
    function processCP(uint256 _numDAI, address _partner) internal{
        DAI_TOKEN_ADDRESS.approve(address(CPProxyContract), _numDAI);
        CPProxyContract.mint(_numDAI);
        updateBalance(_numDAI, _partner);
    }
    function updateBalance(uint256 _numDAI, address _partner) internal {
        usersBalance[msg.sender] = usersBalance[msg.sender].add(_numDAI);
        totalDeposit = totalDeposit.add(_numDAI);
        if(_partner != address(0)) {
            partners[_partner].totalDeposit = partners[_partner].totalDeposit.add(_numDAI);
            partners[_partner].totalCDAI = partners[_partner].totalCDAI.add(DAI2cDAI(_numDAI));
        }
        emit _deposit(msg.sender, _numDAI);
    }
    function exchangeRateStored() public view returns (uint){
        return CPProxyContract.exchangeRateStored();
    }
    function getPartnerArr() public view returns (address[] _partners){
        return partnerArr;
    }
    function getPSeeResultFeePercent() public view returns (uint[] _seeResultFeePercen){
        return seeResultFeePercent;
    }
    function getPercenRanking() public view returns (uint[] _percenRanking){
        return percenRanking;
    }
    function DAI2cDAI(uint256 _numDAI) public view returns (uint256){
        return _numDAI.mul(10**18).div(exchangeRateStored());
    }
    function cDAI2DAI(uint256 _numcDAI) public view returns (uint256){
        return _numcDAI.mul(exchangeRateStored()).div(10**18);
    }
    function balanceOfcDai() public view returns (uint256){
        return cDAI_TOKEN_ADDRESS.balanceOf(address(this));
    }
    function balanceOfDai() public view returns (uint256){
        return balanceOfcDai().mul(exchangeRateStored()).div(10**18);
    }
    function withdrawByUser(uint _numDAI, address _partner) public {
        require(usersBalance[msg.sender] >= _numDAI);
        uint CPResult = CPProxyContract.redeem(DAI2cDAI(_numDAI));

        if(CPResult == 0) {
            DAI_TOKEN_ADDRESS.transfer(msg.sender, _numDAI);
            usersBalance[msg.sender] -= _numDAI;
            totalDeposit -= _numDAI;
            emit _withdraw(msg.sender, _numDAI);
        } else {
            uint CPResult1 = CPProxyContract.redeemUnderlying(DAI2cDAI(_numDAI));
            if(CPResult1 == 0) {
                DAI_TOKEN_ADDRESS.transfer(msg.sender, _numDAI);
                usersBalance[msg.sender] -= _numDAI;
                totalDeposit -= _numDAI;
                emit _withdraw(msg.sender, _numDAI);
            }
        }
        if(_partner != address(0)) {
            partners[_partner].totalDeposit = partners[_partner].totalDeposit.sub(_numDAI);
            partners[_partner].totalCDAI = partners[_partner].totalCDAI.sub(DAI2cDAI(_numDAI));
        }
    }
    function withdrawETHByUser(uint _numDAI, address _partner) public {
        require(usersBalance[msg.sender] >= _numDAI);
        uint CPResult = CPProxyContract.redeem(DAI2cDAI(_numDAI));

        if(CPResult == 0) {
            proccessWDToken(_numDAI, ETH_TOKEN_ADDRESS);
        } else {
            uint CPResult1 = CPProxyContract.redeemUnderlying(DAI2cDAI(_numDAI));
            if(CPResult1 == 0) {
                proccessWDToken(_numDAI, ETH_TOKEN_ADDRESS);
            }
        }
        if(_partner != address(0)) {
            partners[_partner].totalDeposit = partners[_partner].totalDeposit.sub(_numDAI);
            partners[_partner].totalCDAI = partners[_partner].totalCDAI.sub(DAI2cDAI(_numDAI));
        }
    }
    function withdrawTokenByUser(uint _numDAI, ERC20 destToken, address _partner) public {
        require(usersBalance[msg.sender] >= _numDAI);
        uint CPResult = CPProxyContract.redeem(DAI2cDAI(_numDAI));

        if(CPResult == 0) {
            proccessWDToken(_numDAI, destToken);
        } else {
            uint CPResult1 = CPProxyContract.redeemUnderlying(DAI2cDAI(_numDAI));
            if(CPResult1 == 0) {
                proccessWDToken(_numDAI, destToken);
            }
        }
        if(_partner != address(0)) {
            partners[_partner].totalDeposit = partners[_partner].totalDeposit.sub(_numDAI);
            partners[_partner].totalCDAI = partners[_partner].totalCDAI.sub(DAI2cDAI(_numDAI));
        }
    }
    function proccessWDToken(uint _numDAI, ERC20 destToken) internal {
        uint256 minConversionRate;
        (minConversionRate,,) = proxyKyberSwap.getConversionRates(DAI_TOKEN_ADDRESS, _numDAI, destToken);
        uint256 processAmount = _numDAI <= 1 ether ? minConversionRate : minConversionRate.mul(_numDAI).div(1 ether);
        DAI_TOKEN_ADDRESS.approve(address(proxyKyberSwap), _numDAI);
        proxyKyberSwap.executeSwap.value(msg.value)(
            DAI_TOKEN_ADDRESS,
            _numDAI,
            destToken,
            msg.sender,
            processAmount,
            1
        );
        usersBalance[msg.sender] -= _numDAI;
        totalDeposit -= _numDAI;
        emit _withdraw(msg.sender, _numDAI);
    }
    function __withdraw(uint256 amount) internal {
        require(address(this).balance >= amount);
        if(amount > 0) {
            msg.sender.transfer(amount);
        }
    }
    function withdraw(uint256 _ethAmount, ERC20[] memory _tokens, uint256[] memory _tokenAdmounts) public onlyCeo {
        require(_tokens.length == _tokenAdmounts.length);
        __withdraw(_ethAmount);
        for(uint256 i = 0; i < _tokens.length; i++) {
            ERC20 erc20 = ERC20(_tokens[i]);
            erc20.transfer(msg.sender, _tokenAdmounts[i]);
        }

    }
    function setCeo(address _ceo) public onlyCeo{
        ceo = _ceo;
    }
    function checkInterest() public view returns(uint256){
        uint256 interest = balanceOfDai().sub(totalDeposit);
        uint256 commission;
        for(uint8 i; i < partnerArr.length; i++){
            uint256 interest1 = cDAI2DAI(partners[i].totalCDAI).sub(partners[i].totalDeposit);
            commission += interest1.sub(interest1.mul(partnerPercent).div(10000));

        }
        return interest.sub(commission);
    }
    function setAward(uint256 _awardId, address[] _members) public onlyCeo{
        require(!awards[_awardId].isSet && _awardId > 0);
        uint256 _amount = currentAward == 0 ? minAward : (_awardId - currentAward) * minAward;
        _amount = _amount < maxAward ? _amount : maxAward;
        if(checkInterest() < _amount) {
            require(DAI_TOKEN_ADDRESS.transferFrom(msg.sender, address(this), _amount), "not enough DAI balance");
            DAI_TOKEN_ADDRESS.approve(address(CPProxyContract), _amount);
            CPProxyContract.mint(_amount);
        }

        totalDeposit += _amount;
        totalAward += _amount;
        for(uint256 i = 0; i< _members.length; i++) {
            usersBalance[_members[i]] += _amount.div(_members.length);
        }

        awards[_awardId] = award(true, _amount, _members);
        currentAward = _awardId;
        emit _setAward(_awardId, _members, _amount);
    }
    function getAward(uint256 _awardId) public view returns(bool isSet, uint256 totalAmount, address[] members) {
        return (awards[_awardId].isSet, awards[_awardId].totalAmount, awards[_awardId].members);
    }
    function setAwardRanking(uint256 _awardId, address[] _members) public onlyCeo{
        // decimal = 10000
        require(!awardRankings[_awardId].isSet && _members.length <= percenRanking.length, "_awardId ready seted or wrong member list");
        uint256 interest = balanceOfDai().sub(totalDeposit);
        uint256 total;
        for(uint256 i = 0; i< _members.length; i++) {
            uint256 amount = interest.mul(percenRanking[i]).div(10000);
            usersBalance[_members[i]] += amount;
            total += amount;
        }
        totalDeposit += total;
        totalAwardRanking += total;
        awardRankings[_awardId] = awardRanking(true, total, _members, percenRanking);
        emit _setAwardRanking(_awardId, _members, percenRanking);
    }
    function setAwardPartner(uint256 _weekId) public onlyCeo{
        // decimal = 10000
        require(latestDatePartnerAward == 0 || _weekId - latestDatePartnerAward >= periodPartnerAward);
        require(_weekId < now);

        for(uint i; i < partnerArr.length; i++){
            address a = partnerArr[i];
            uint256 interest = cDAI2DAI(partners[a].totalCDAI).sub(partners[a].totalDeposit);
            uint256 profit = interest.mul(partnerPercent).div(10000);
            usersBalance[a] = usersBalance[a].add(profit);
            totalAwardPartner = totalAwardPartner.add(profit);
            partners[a].totalCDAI = DAI2cDAI(partners[a].totalDeposit);
            emit _setAwardPartner(_weekId, a, profit);

        }
        latestDatePartnerAward = _weekId;
    }
    function getAwardRanking(uint256 _awardId) public view returns(bool isSet, uint256 totalAmount, address[] members) {
        return (awards[_awardId].isSet, awards[_awardId].totalAmount, awards[_awardId].members);
    }
    function checkAwardPartner(address _partner) public view returns(uint256 _totalDeposit, uint256 _totalCDAI, uint256 _interest) {
        return (partners[_partner].totalDeposit, partners[_partner].totalCDAI, cDAI2DAI(partners[_partner].totalCDAI).sub(partners[_partner].totalDeposit));
    }
    function pay2seeResult(address _user) public {
        require(DAI_TOKEN_ADDRESS.transferFrom(msg.sender, address(this), seeResultFee), "not enough DAI balance");
        uint256 sysAmount = seeResultFee.mul(seeResultFeePercent[0]).div(10000);
        uint256 userAmount = seeResultFee.mul(seeResultFeePercent[1]).div(10000);
        DAI_TOKEN_ADDRESS.transfer(ceo, sysAmount);
        DAI_TOKEN_ADDRESS.transfer(_user, userAmount);
        emit _pay2seeResult(msg.sender, _user, userAmount, sysAmount);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_awardId","type":"uint256"}],"name":"getAward","outputs":[{"name":"isSet","type":"bool"},{"name":"totalAmount","type":"uint256"},{"name":"members","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"seeResultFeePercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_srcToken","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"destToken","type":"address"}],"name":"getConversionRates","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"_proccessAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_numDAI","type":"uint256"}],"name":"DAI2cDAI","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"percenRanking","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_numcDAI","type":"uint256"}],"name":"cDAI2DAI","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ethAmount","type":"uint256"},{"name":"_tokens","type":"address[]"},{"name":"_tokenAdmounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_percenRanking","type":"uint256[]"}],"name":"configPercenRanking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"awardRankings","outputs":[{"name":"isSet","type":"bool"},{"name":"totalAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proxyKyberSwap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"seeResultFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_weekId","type":"uint256"}],"name":"setAwardPartner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"partnerPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_partnerPercent","type":"uint256"},{"name":"_partners","type":"address[]"},{"name":"_periodPartnerAward","type":"uint256"}],"name":"configPartner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"usersBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CPProxyContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfDai","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_numDAI","type":"uint256"},{"name":"_partner","type":"address"}],"name":"withdrawETHByUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalAwardPartner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPartnerArr","outputs":[{"name":"_partners","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_numDAI","type":"uint256"},{"name":"destToken","type":"address"},{"name":"_partner","type":"address"}],"name":"withdrawTokenByUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"periodPartnerAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPercenRanking","outputs":[{"name":"_percenRanking","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ceo","type":"address"}],"name":"setCeo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_seeResultFee","type":"uint256"},{"name":"_seeResultFeePercent","type":"uint256[]"}],"name":"configSeeResultFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPSeeResultFeePercent","outputs":[{"name":"_seeResultFeePercen","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ceo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"partners","outputs":[{"name":"totalDeposit","type":"uint256"},{"name":"totalCDAI","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAwardSystem","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAwardRanking","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkInterest","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_awardId","type":"uint256"},{"name":"_members","type":"address[]"}],"name":"setAward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_awardId","type":"uint256"},{"name":"_members","type":"address[]"}],"name":"setAwardRanking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcToken","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"_partner","type":"address"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"latestDatePartnerAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_partner","type":"address"}],"name":"depositEth","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_minAward","type":"uint256"},{"name":"_maxAward","type":"uint256"}],"name":"config","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfcDai","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_numDAI","type":"uint256"},{"name":"_partner","type":"address"}],"name":"depositDai","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_partner","type":"address"}],"name":"checkAwardPartner","outputs":[{"name":"_totalDeposit","type":"uint256"},{"name":"_totalCDAI","type":"uint256"},{"name":"_interest","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"partnerArr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_numDAI","type":"uint256"},{"name":"_partner","type":"address"}],"name":"withdrawByUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"pay2seeResult","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_awardId","type":"uint256"}],"name":"getAwardRanking","outputs":[{"name":"isSet","type":"bool"},{"name":"totalAmount","type":"uint256"},{"name":"members","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"awards","outputs":[{"name":"isSet","type":"bool"},{"name":"totalAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sender","type":"address"},{"indexed":false,"name":"_numDAI","type":"uint256"}],"name":"_deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sender","type":"address"},{"indexed":false,"name":"_numDAI","type":"uint256"}],"name":"_withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_awardId","type":"uint256"},{"indexed":false,"name":"_members","type":"address[]"},{"indexed":false,"name":"_userAward","type":"uint256"}],"name":"_setAward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_awardId","type":"uint256"},{"indexed":false,"name":"_members","type":"address[]"},{"indexed":false,"name":"_amounts","type":"uint256[]"}],"name":"_setAwardRanking","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_weekId","type":"uint256"},{"indexed":false,"name":"_partner","type":"address"},{"indexed":false,"name":"_amounts","type":"uint256"}],"name":"_setAwardPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sender","type":"address"},{"indexed":false,"name":"_user","type":"address"},{"indexed":false,"name":"_userAmount","type":"uint256"},{"indexed":false,"name":"_sysAmount","type":"uint256"}],"name":"_pay2seeResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405273d28fc4d54112cd4cce743542afa7cd6a724fcf7a600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735d3a536e4d6dbd6114cc1ead35777bab948e3643600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732076a228e6eb670fd1c604de574d555476520db7600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555068056bc75e2d63100000600a55683635c9adc5dea00000600b55670de0b6b3a7640000600c556040805190810160405280611b5861ffff168152602001610bb861ffff16815250600d9060026200015c92919062000240565b506101406040519081016040528060c860ff168152602001606460ff168152602001603260ff168152602001601460ff168152602001601460ff168152602001601460ff168152602001601460ff168152602001601460ff168152602001601460ff168152602001601460ff16815250601190600a620001de92919062000298565b506109c460145562093a80601655348015620001f957600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000317565b82805482825590600052602060002090810192821562000285579160200282015b8281111562000284578251829061ffff1690559160200191906001019062000261565b5b509050620002949190620002ef565b5090565b828054828255906000526020600020908101928215620002dc579160200282015b82811115620002db578251829060ff16905591602001919060010190620002b9565b5b509050620002eb9190620002ef565b5090565b6200031491905b8082111562000310576000816000905550600101620002f6565b5090565b90565b615ede80620003276000396000f30060806040526004361061027d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305989e9d146102825780630698dd9a146103165780630aea8188146103575780631190de5d146103e657806315a0ac1814610427578063182df0f5146104685780631fc0fc031461049357806325b34c1d146104be5780632c9f31d1146104ff5780633827868a1461052a5780633ae8c6d0146105dd578063476e50451461064357806349f40d861461068f5780634b3ef181146106e65780635305466d1461071157806353d5ec941461073e578063557de8ab1461076957806358324335146107e35780635933fde81461083a5780635d969ee41461089157806364abb518146108bc57806365961f10146109095780636751afa81461093457806369301dd2146109a05780636ba77ade14610a0d57806386a693b914610a385780638897519814610aa45780638d2b10d914610ae75780638da5cb5b14610b575780638f371fe414610bae578063908921fc14610c1a57806395c3365214610c71578063997668e514610ccf5780639a18fd2514610cfa5780639a52b33914610d255780639c59b07014610d505780639d3180da14610dc05780639d57558214610e30578063a83a0cb014610e9d578063ad9d4ba314610ec8578063b0771ab014610efe578063be3647df14610f35578063c1733c6c14610f60578063c4b3da1414610fad578063c65f560c14611012578063c998512f1461107f578063cc28eca5146110cc578063dd15603f1461110f578063ea599cb31461113a578063eebb62df14611165578063f2fde38b146111f9578063f6153ccd1461123c578063fc5a5b6314611267575b600080fd5b34801561028e57600080fd5b506102ad600480360381019080803590602001909291905050506112b3565b604051808415151515815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156103005780820151818401526020810190506102e5565b5050505090500194505050505060405180910390f35b34801561032257600080fd5b506103416004803603810190808035906020019092919050505061139e565b6040518082815260200191505060405180910390f35b34801561036357600080fd5b506103c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c1565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103f257600080fd5b506104116004803603810190808035906020019092919050505061151d565b6040518082815260200191505060405180910390f35b34801561043357600080fd5b506104526004803603810190808035906020019092919050505061155a565b6040518082815260200191505060405180910390f35b34801561047457600080fd5b5061047d61157d565b6040518082815260200191505060405180910390f35b34801561049f57600080fd5b506104a8611645565b6040518082815260200191505060405180910390f35b3480156104ca57600080fd5b506104e96004803603810190808035906020019092919050505061164b565b6040518082815260200191505060405180910390f35b34801561050b57600080fd5b50610514611688565b6040518082815260200191505060405180910390f35b34801561053657600080fd5b506105db60048036038101908080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061168e565b005b3480156105e957600080fd5b5061064160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611838565b005b34801561064f57600080fd5b5061066e60048036038101908080359060200190929190505050611905565b60405180831515151581526020018281526020019250505060405180910390f35b34801561069b57600080fd5b506106a4611936565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106f257600080fd5b506106fb61195c565b6040518082815260200191505060405180910390f35b34801561071d57600080fd5b5061073c60048036038101908080359060200190929190505050611962565b005b34801561074a57600080fd5b50610753611cd9565b6040518082815260200191505060405180910390f35b34801561077557600080fd5b506107e1600480360381019080803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050611cdf565b005b3480156107ef57600080fd5b50610824600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dbc565b6040518082815260200191505060405180910390f35b34801561084657600080fd5b5061084f611dd4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089d57600080fd5b506108a6611dfa565b6040518082815260200191505060405180910390f35b3480156108c857600080fd5b5061090760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e3c565b005b34801561091557600080fd5b5061091e612209565b6040518082815260200191505060405180910390f35b34801561094057600080fd5b5061094961220f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561098c578082015181840152602081019050610971565b505050509050019250505060405180910390f35b3480156109ac57600080fd5b50610a0b60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061229d565b005b348015610a1957600080fd5b50610a22612643565b6040518082815260200191505060405180910390f35b348015610a4457600080fd5b50610a4d612649565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a90578082015181840152602081019050610a75565b505050509050019250505060405180910390f35b348015610ab057600080fd5b50610ae5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126a1565b005b348015610af357600080fd5b50610b556004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612741565b005b348015610b6357600080fd5b50610b6c612816565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bba57600080fd5b50610bc361283b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c06578082015181840152602081019050610beb565b505050509050019250505060405180910390f35b348015610c2657600080fd5b50610c2f612893565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c7d57600080fd5b50610cb2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128b9565b604051808381526020018281526020019250505060405180910390f35b348015610cdb57600080fd5b50610ce46128dd565b6040518082815260200191505060405180910390f35b348015610d0657600080fd5b50610d0f6128e3565b6040518082815260200191505060405180910390f35b348015610d3157600080fd5b50610d3a6128e9565b6040518082815260200191505060405180910390f35b348015610d5c57600080fd5b50610dbe6004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612a03565b005b348015610dcc57600080fd5b50610e2e6004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612ffc565b005b348015610e3c57600080fd5b50610e9b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133f1565b005b348015610ea957600080fd5b50610eb2613b0a565b6040518082815260200191505060405180910390f35b610efc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b10565b005b348015610f0a57600080fd5b50610f336004803603810190808035906020019092919080359060200190929190505050613f4d565b005b348015610f4157600080fd5b50610f4a614012565b6040518082815260200191505060405180910390f35b348015610f6c57600080fd5b50610fab60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614103565b005b348015610fb957600080fd5b50610fee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614242565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561101e57600080fd5b5061103d60048036038101908080359060200190929190505050614379565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561108b57600080fd5b506110ca60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506143b7565b005b3480156110d857600080fd5b5061110d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614abe565b005b34801561111b57600080fd5b50611124614f9b565b6040518082815260200191505060405180910390f35b34801561114657600080fd5b5061114f614fa1565b6040518082815260200191505060405180910390f35b34801561117157600080fd5b5061119060048036038101908080359060200190929190505050614fa7565b604051808415151515815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156111e35780820151818401526020810190506111c8565b5050505090500194505050505060405180910390f35b34801561120557600080fd5b5061123a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615092565b005b34801561124857600080fd5b506112516151e7565b6040518082815260200191505060405180910390f35b34801561127357600080fd5b50611292600480360381019080803590602001909291905050506151ed565b60405180831515151581526020018281526020019250505060405180910390f35b60008060606005600085815260200190815260200160002060000160009054906101000a900460ff166005600086815260200190815260200160002060010154600560008781526020019081526020016000206002018080548060200260200160405190810160405280929190818152602001828054801561138a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611340575b505050505090509250925092509193909250565b600d818154811015156113ad57fe5b906000526020600020016000915090505481565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea81888787876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050506040513d60608110156114e957600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505092509250925093509350939050565b600061155361152a61157d565b611545670de0b6b3a76400008561521e90919063ffffffff16565b61525c90919063ffffffff16565b9050919050565b60118181548110151561156957fe5b906000526020600020016000915090505481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561160557600080fd5b505af1158015611619573d6000803e3d6000fd5b505050506040513d602081101561162f57600080fd5b8101908080519060200190929190505050905090565b600a5481565b6000611681670de0b6b3a764000061167361166461157d565b8561521e90919063ffffffff16565b61525c90919063ffffffff16565b9050919050565b600b5481565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ed57600080fd5b825184511415156116fd57600080fd5b61170685615286565b600091505b835182101561183157838281518110151561172257fe5b9060200190602002015190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33858581518110151561175957fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117e857600080fd5b505af11580156117fc573d6000803e3d6000fd5b505050506040513d602081101561181257600080fd5b810190808051906020019092919050505050818060010192505061170b565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118e05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156118eb57600080fd5b8060119080519060200190611901929190615c9c565b5050565b60076020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119c457600080fd5b600060155414806119db5750601654601554860310155b15156119e657600080fd5b42851015156119f457600080fd5b5b601380549050841015611ccb57601384815481101515611a1157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250611add601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611acf601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461164b565b61530090919063ffffffff16565b9150611b08612710611afa6014548561521e90919063ffffffff16565b61525c90919063ffffffff16565b9050611b5c81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461532190919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bb48160105461532190919063ffffffff16565b601081905550611c05601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461151d565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507fa81bea12d2bf0067a27b1183c43d807a844ab087e081d843ff7cf24d5f8f9230858483604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a183806001019450506119f5565b846015819055505050505050565b60145481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d875750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d9257600080fd5b826014819055508160139080519060200190611daf929190615ce9565b5080601681905550505050565b60046020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e37670de0b6b3a7640000611e29611e1361157d565b611e1b614012565b61521e90919063ffffffff16565b61525c90919063ffffffff16565b905090565b60008083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611e8d57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75611ed48661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611f2657600080fd5b505af1158015611f3a573d6000803e3d6000fd5b505050506040513d6020811015611f5057600080fd5b810190808051906020019092919050505091506000821415611f8f57611f8a8473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee615342565b61208e565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852a12e3611fd68661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561202857600080fd5b505af115801561203c573d6000803e3d6000fd5b505050506040513d602081101561205257600080fd5b81019080805190602001909291905050509050600081141561208d5761208c8473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee615342565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156122035761211984601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506121bc61216b8561151d565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50505050565b60105481565b6060601380548060200260200160405190810160405280929190818152602001828054801561229357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612249575b5050505050905090565b60008084600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156122ee57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a756123358761151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b505050506040513d60208110156123b157600080fd5b8101908080519060200190929190505050915060008214156123dc576123d78585615342565b6124c7565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852a12e36124238761151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561247557600080fd5b505af1158015612489573d6000803e3d6000fd5b505050506040513d602081101561249f57600080fd5b8101908080519060200190929190505050905060008114156124c6576124c58585615342565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561263c5761255285601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506125f56125a48661151d565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5050505050565b60165481565b6060601180548060200260200160405190810160405280929190818152602001828054801561269757602002820191906000526020600020905b815481526020019060010190808311612683575b5050505050905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126fd57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806127e95750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127f457600080fd5b81600c8190555080600d9080519060200190612811929190615c9c565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d80548060200260200160405190810160405280929190818152602001828054801561288957602002820191906000526020600020905b815481526020019060010190808311612875575b5050505050905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090508060000154908060010154905082565b600e5481565b600f5481565b600080600080600061290d6008546128ff611dfa565b61530090919063ffffffff16565b93505b6013805490508260ff1610156129e757612999601260008460ff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461298b601260008660ff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461164b565b61530090919063ffffffff16565b90506129d66129c76127106129b96014548561521e90919063ffffffff16565b61525c90919063ffffffff16565b8261530090919063ffffffff16565b830192508180600101925050612910565b6129fa838561530090919063ffffffff16565b94505050505090565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a6257600080fd5b6005600085815260200190815260200160002060000160009054906101000a900460ff16158015612a935750600084115b1515612a9e57600080fd5b600060065414612ab657600a54600654850302612aba565b600a545b9150600b548210612acd57600b54612acf565b815b915081612ada6128e9565b1015612e3957736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612bcb57600080fd5b505af1158015612bdf573d6000803e3d6000fd5b505050506040513d6020811015612bf557600080fd5b81019080805190602001909291905050501515612c7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6e6f7420656e6f756768204441492062616c616e63650000000000000000000081525060200191505060405180910390fd5b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b505050506040513d6020811015612d7d57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015612e2057600080fd5b505af1158015612e34573d6000803e3d6000fd5b505050505b8160086000828254019250508190555081600960008282540192505081905550600090505b8251811015612eeb57612e7b83518361525c90919063ffffffff16565b600460008584815181101515612e8d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508080600101915050612e5e565b606060405190810160405280600115158152602001838152602001848152506005600086815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002019080519060200190612f63929190615d73565b50905050836006819055507fcd0901585263044ea7561ee2451d98c19b9be8b66b78bd05e84f8a286b9b627c8484846040518084815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015612fe1578082015181840152602081019050612fc6565b5050505090500194505050505060405180910390a150505050565b600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561305e57600080fd5b6007600087815260200190815260200160002060000160009054906101000a900460ff161580156130955750601180549050855111155b151561312f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f5f61776172644964207265616479207365746564206f722077726f6e67206d6581526020017f6d626572206c697374000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61314b60085461313d611dfa565b61530090919063ffffffff16565b9350600091505b84518210156132135761319b61271061318d60118581548110151561317357fe5b90600052602060002001548761521e90919063ffffffff16565b61525c90919063ffffffff16565b9050806004600087858151811015156131b057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080830192508180600101925050613152565b8260086000828254019250508190555082600f6000828254019250508190555060806040519081016040528060011515815260200184815260200186815260200160118054806020026020016040519081016040528092919081815260200182805480156132a057602002820191906000526020600020905b81548152602001906001019080831161328c575b50505050508152506007600088815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002019080519060200190613301929190615d73565b50606082015181600301908051906020019061331e929190615dfd565b509050507f2904c0a60ae1c2840a14f9e87c7dfd52a7560c37da82bf9b8c151550cf5d42fb86866011604051808481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613394578082015181840152602081019050613379565b5050505090500183810382528481815481526020019150805480156133d857602002820191906000526020600020905b8154815260200190600101908083116133c4575b50509550505050505060405180910390a1505050505050565b600080600080736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415151561344657600080fd5b8673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156134aa57600080fd5b505af11580156134be573d6000803e3d6000fd5b505050506040513d60208110156134d457600080fd5b8101908080519060200190929190505050600a0a9250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea81888888736b175474e89094c44da98b954eedeac495271d0f6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b1580156135f757600080fd5b505af115801561360b573d6000803e3d6000fd5b505050506040513d606081101561362157600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050905050809450508286111561367f5761367a8361366c888761521e90919063ffffffff16565b61525c90919063ffffffff16565b613681565b835b91508673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561375a57600080fd5b505af115801561376e573d6000803e3d6000fd5b505050506040513d602081101561378457600080fd5b810190808051906020019092919050505015156137a057600080fd5b8673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561386557600080fd5b505af1158015613879573d6000803e3d6000fd5b505050506040513d602081101561388f57600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638196213f8888736b175474e89094c44da98b954eedeac495271d0f308760016040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b1580156139f357600080fd5b505af1158015613a07573d6000803e3d6000fd5b50505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613aba57600080fd5b505af1158015613ace573d6000803e3d6000fd5b505050506040513d6020811015613ae457600080fd5b81019080805190602001909291905050509050613b01818661583c565b50505050505050565b60155481565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea818873eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34736b175474e89094c44da98b954eedeac495271d0f6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b158015613c3657600080fd5b505af1158015613c4a573d6000803e3d6000fd5b505050506040513d6060811015613c6057600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505090505080935050670de0b6b3a7640000341115613cce57613cc9670de0b6b3a7640000613cbb348661521e90919063ffffffff16565b61525c90919063ffffffff16565b613cd0565b825b9150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638196213f3473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34736b175474e89094c44da98b954eedeac495271d0f308860006040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200196505050505050506000604051808303818588803b158015613e3857600080fd5b505af1158015613e4c573d6000803e3d6000fd5b5050505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613f0057600080fd5b505af1158015613f14573d6000803e3d6000fd5b505050506040513d6020811015613f2a57600080fd5b81019080805190602001909291905050509050613f47818561583c565b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613ff55750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561400057600080fd5b81600a8190555080600b819055505050565b6000735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156140c357600080fd5b505af11580156140d7573d6000803e3d6000fd5b505050506040513d60208110156140ed57600080fd5b8101908080519060200190929190505050905090565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156141ee57600080fd5b505af1158015614202573d6000803e3d6000fd5b505050506040513d602081101561421857600080fd5b8101908080519060200190929190505050151561423457600080fd5b61423e828261583c565b5050565b6000806000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461436c601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461435e601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461164b565b61530090919063ffffffff16565b9250925092509193909250565b60138181548110151561438857fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561440857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a7561444f8661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156144a157600080fd5b505af11580156144b5573d6000803e3d6000fd5b505050506040513d60208110156144cb57600080fd5b8101908080519060200190929190505050915060008214156146a757736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561459e57600080fd5b505af11580156145b2573d6000803e3d6000fd5b505050506040513d60208110156145c857600080fd5b81019080805190602001909291905050505083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550836008600082825403925050819055507fb790a77b394b6a40e0c2ff48c57386d011b921ff87f3d625985330ac29ab1b643385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1614943565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852a12e36146ee8661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561474057600080fd5b505af1158015614754573d6000803e3d6000fd5b505050506040513d602081101561476a57600080fd5b81019080805190602001909291905050509050600081141561494257736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561483d57600080fd5b505af1158015614851573d6000803e3d6000fd5b505050506040513d602081101561486757600080fd5b81019080805190602001909291905050505083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550836008600082825403925050819055507fb790a77b394b6a40e0c2ff48c57386d011b921ff87f3d625985330ac29ab1b643385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515614ab8576149ce84601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550614a71614a208561151d565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50505050565b600080736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330600c546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b505050506040513d6020811015614bd857600080fd5b81019080805190602001909291905050501515614c5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6e6f7420656e6f756768204441492062616c616e63650000000000000000000081525060200191505060405180910390fd5b614ca0612710614c92600d6000815481101515614c7657fe5b9060005260206000200154600c5461521e90919063ffffffff16565b61525c90919063ffffffff16565b9150614ce5612710614cd7600d6001815481101515614cbb57fe5b9060005260206000200154600c5461521e90919063ffffffff16565b61525c90919063ffffffff16565b9050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614dc057600080fd5b505af1158015614dd4573d6000803e3d6000fd5b505050506040513d6020811015614dea57600080fd5b810190808051906020019092919050505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614eb357600080fd5b505af1158015614ec7573d6000803e3d6000fd5b505050506040513d6020811015614edd57600080fd5b8101908080519060200190929190505050507f349bc4ca55f9bb463aa6d77727809c4bdd873f568307bc3a99b082f6e45cc6cd33848385604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a1505050565b60065481565b60095481565b60008060606005600085815260200190815260200160002060000160009054906101000a900460ff166005600086815260200190815260200160002060010154600560008781526020019081526020016000206002018080548060200260200160405190810160405280929190818152602001828054801561507e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311615034575b505050505090509250925092509193909250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156150ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561512957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60008060008414156152335760009150615255565b828402905082848281151561524457fe5b0414151561525157600080fd5b8091505b5092915050565b60008060008311151561526e57600080fd5b828481151561527957fe5b0490508091505092915050565b803073ffffffffffffffffffffffffffffffffffffffff1631101515156152ac57600080fd5b60008111156152fd573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156152fb573d6000803e3d6000fd5b505b50565b60008083831115151561531257600080fd5b82840390508091505092915050565b600080828401905083811015151561533857600080fd5b8091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea8188736b175474e89094c44da98b954eedeac495271d0f86866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b15801561545257600080fd5b505af1158015615466573d6000803e3d6000fd5b505050506040513d606081101561547c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505090505080925050670de0b6b3a76400008411156154ea576154e5670de0b6b3a76400006154d7868561521e90919063ffffffff16565b61525c90919063ffffffff16565b6154ec565b815b9050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156155c757600080fd5b505af11580156155db573d6000803e3d6000fd5b505050506040513d60208110156155f157600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638196213f34736b175474e89094c44da98b954eedeac495271d0f8787338760016040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200196505050505050506000604051808303818588803b15801561575557600080fd5b505af1158015615769573d6000803e3d6000fd5b505050505083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550836008600082825403925050819055507fb790a77b394b6a40e0c2ff48c57386d011b921ff87f3d625985330ac29ab1b643385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b505050506040513d602081101561593f57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156159e257600080fd5b505af11580156159f6573d6000803e3d6000fd5b50505050615a048282615a08565b5050565b615a5a82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461532190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615ab28260085461532190919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515615c2d57615b4382601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461532190919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550615be6615b958361151d565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461532190919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b7f6da1339ceea6e3dbf7ead04517d05e02f98ab75cd4698142e7eeaa32ea1714b73383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b828054828255906000526020600020908101928215615cd8579160200282015b82811115615cd7578251825591602001919060010190615cbc565b5b509050615ce59190615e4a565b5090565b828054828255906000526020600020908101928215615d62579160200282015b82811115615d615782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190615d09565b5b509050615d6f9190615e6f565b5090565b828054828255906000526020600020908101928215615dec579160200282015b82811115615deb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190615d93565b5b509050615df99190615e6f565b5090565b828054828255906000526020600020908101928215615e39579160200282015b82811115615e38578251825591602001919060010190615e1d565b5b509050615e469190615e4a565b5090565b615e6c91905b80821115615e68576000816000905550600101615e50565b5090565b90565b615eaf91905b80821115615eab57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101615e75565b5090565b905600a165627a7a72305820755686001ab1431318f40936cb48a586b95a1afefb57a1b6709a2835d95ee06d0029

Deployed Bytecode

0x60806040526004361061027d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305989e9d146102825780630698dd9a146103165780630aea8188146103575780631190de5d146103e657806315a0ac1814610427578063182df0f5146104685780631fc0fc031461049357806325b34c1d146104be5780632c9f31d1146104ff5780633827868a1461052a5780633ae8c6d0146105dd578063476e50451461064357806349f40d861461068f5780634b3ef181146106e65780635305466d1461071157806353d5ec941461073e578063557de8ab1461076957806358324335146107e35780635933fde81461083a5780635d969ee41461089157806364abb518146108bc57806365961f10146109095780636751afa81461093457806369301dd2146109a05780636ba77ade14610a0d57806386a693b914610a385780638897519814610aa45780638d2b10d914610ae75780638da5cb5b14610b575780638f371fe414610bae578063908921fc14610c1a57806395c3365214610c71578063997668e514610ccf5780639a18fd2514610cfa5780639a52b33914610d255780639c59b07014610d505780639d3180da14610dc05780639d57558214610e30578063a83a0cb014610e9d578063ad9d4ba314610ec8578063b0771ab014610efe578063be3647df14610f35578063c1733c6c14610f60578063c4b3da1414610fad578063c65f560c14611012578063c998512f1461107f578063cc28eca5146110cc578063dd15603f1461110f578063ea599cb31461113a578063eebb62df14611165578063f2fde38b146111f9578063f6153ccd1461123c578063fc5a5b6314611267575b600080fd5b34801561028e57600080fd5b506102ad600480360381019080803590602001909291905050506112b3565b604051808415151515815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156103005780820151818401526020810190506102e5565b5050505090500194505050505060405180910390f35b34801561032257600080fd5b506103416004803603810190808035906020019092919050505061139e565b6040518082815260200191505060405180910390f35b34801561036357600080fd5b506103c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c1565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103f257600080fd5b506104116004803603810190808035906020019092919050505061151d565b6040518082815260200191505060405180910390f35b34801561043357600080fd5b506104526004803603810190808035906020019092919050505061155a565b6040518082815260200191505060405180910390f35b34801561047457600080fd5b5061047d61157d565b6040518082815260200191505060405180910390f35b34801561049f57600080fd5b506104a8611645565b6040518082815260200191505060405180910390f35b3480156104ca57600080fd5b506104e96004803603810190808035906020019092919050505061164b565b6040518082815260200191505060405180910390f35b34801561050b57600080fd5b50610514611688565b6040518082815260200191505060405180910390f35b34801561053657600080fd5b506105db60048036038101908080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061168e565b005b3480156105e957600080fd5b5061064160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611838565b005b34801561064f57600080fd5b5061066e60048036038101908080359060200190929190505050611905565b60405180831515151581526020018281526020019250505060405180910390f35b34801561069b57600080fd5b506106a4611936565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106f257600080fd5b506106fb61195c565b6040518082815260200191505060405180910390f35b34801561071d57600080fd5b5061073c60048036038101908080359060200190929190505050611962565b005b34801561074a57600080fd5b50610753611cd9565b6040518082815260200191505060405180910390f35b34801561077557600080fd5b506107e1600480360381019080803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050611cdf565b005b3480156107ef57600080fd5b50610824600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dbc565b6040518082815260200191505060405180910390f35b34801561084657600080fd5b5061084f611dd4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089d57600080fd5b506108a6611dfa565b6040518082815260200191505060405180910390f35b3480156108c857600080fd5b5061090760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e3c565b005b34801561091557600080fd5b5061091e612209565b6040518082815260200191505060405180910390f35b34801561094057600080fd5b5061094961220f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561098c578082015181840152602081019050610971565b505050509050019250505060405180910390f35b3480156109ac57600080fd5b50610a0b60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061229d565b005b348015610a1957600080fd5b50610a22612643565b6040518082815260200191505060405180910390f35b348015610a4457600080fd5b50610a4d612649565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a90578082015181840152602081019050610a75565b505050509050019250505060405180910390f35b348015610ab057600080fd5b50610ae5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126a1565b005b348015610af357600080fd5b50610b556004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612741565b005b348015610b6357600080fd5b50610b6c612816565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bba57600080fd5b50610bc361283b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c06578082015181840152602081019050610beb565b505050509050019250505060405180910390f35b348015610c2657600080fd5b50610c2f612893565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c7d57600080fd5b50610cb2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128b9565b604051808381526020018281526020019250505060405180910390f35b348015610cdb57600080fd5b50610ce46128dd565b6040518082815260200191505060405180910390f35b348015610d0657600080fd5b50610d0f6128e3565b6040518082815260200191505060405180910390f35b348015610d3157600080fd5b50610d3a6128e9565b6040518082815260200191505060405180910390f35b348015610d5c57600080fd5b50610dbe6004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612a03565b005b348015610dcc57600080fd5b50610e2e6004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612ffc565b005b348015610e3c57600080fd5b50610e9b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133f1565b005b348015610ea957600080fd5b50610eb2613b0a565b6040518082815260200191505060405180910390f35b610efc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b10565b005b348015610f0a57600080fd5b50610f336004803603810190808035906020019092919080359060200190929190505050613f4d565b005b348015610f4157600080fd5b50610f4a614012565b6040518082815260200191505060405180910390f35b348015610f6c57600080fd5b50610fab60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614103565b005b348015610fb957600080fd5b50610fee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614242565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561101e57600080fd5b5061103d60048036038101908080359060200190929190505050614379565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561108b57600080fd5b506110ca60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506143b7565b005b3480156110d857600080fd5b5061110d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614abe565b005b34801561111b57600080fd5b50611124614f9b565b6040518082815260200191505060405180910390f35b34801561114657600080fd5b5061114f614fa1565b6040518082815260200191505060405180910390f35b34801561117157600080fd5b5061119060048036038101908080359060200190929190505050614fa7565b604051808415151515815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156111e35780820151818401526020810190506111c8565b5050505090500194505050505060405180910390f35b34801561120557600080fd5b5061123a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615092565b005b34801561124857600080fd5b506112516151e7565b6040518082815260200191505060405180910390f35b34801561127357600080fd5b50611292600480360381019080803590602001909291905050506151ed565b60405180831515151581526020018281526020019250505060405180910390f35b60008060606005600085815260200190815260200160002060000160009054906101000a900460ff166005600086815260200190815260200160002060010154600560008781526020019081526020016000206002018080548060200260200160405190810160405280929190818152602001828054801561138a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611340575b505050505090509250925092509193909250565b600d818154811015156113ad57fe5b906000526020600020016000915090505481565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea81888787876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050506040513d60608110156114e957600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505092509250925093509350939050565b600061155361152a61157d565b611545670de0b6b3a76400008561521e90919063ffffffff16565b61525c90919063ffffffff16565b9050919050565b60118181548110151561156957fe5b906000526020600020016000915090505481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561160557600080fd5b505af1158015611619573d6000803e3d6000fd5b505050506040513d602081101561162f57600080fd5b8101908080519060200190929190505050905090565b600a5481565b6000611681670de0b6b3a764000061167361166461157d565b8561521e90919063ffffffff16565b61525c90919063ffffffff16565b9050919050565b600b5481565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ed57600080fd5b825184511415156116fd57600080fd5b61170685615286565b600091505b835182101561183157838281518110151561172257fe5b9060200190602002015190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33858581518110151561175957fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117e857600080fd5b505af11580156117fc573d6000803e3d6000fd5b505050506040513d602081101561181257600080fd5b810190808051906020019092919050505050818060010192505061170b565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118e05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156118eb57600080fd5b8060119080519060200190611901929190615c9c565b5050565b60076020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119c457600080fd5b600060155414806119db5750601654601554860310155b15156119e657600080fd5b42851015156119f457600080fd5b5b601380549050841015611ccb57601384815481101515611a1157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250611add601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611acf601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461164b565b61530090919063ffffffff16565b9150611b08612710611afa6014548561521e90919063ffffffff16565b61525c90919063ffffffff16565b9050611b5c81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461532190919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bb48160105461532190919063ffffffff16565b601081905550611c05601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461151d565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507fa81bea12d2bf0067a27b1183c43d807a844ab087e081d843ff7cf24d5f8f9230858483604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a183806001019450506119f5565b846015819055505050505050565b60145481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d875750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d9257600080fd5b826014819055508160139080519060200190611daf929190615ce9565b5080601681905550505050565b60046020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e37670de0b6b3a7640000611e29611e1361157d565b611e1b614012565b61521e90919063ffffffff16565b61525c90919063ffffffff16565b905090565b60008083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611e8d57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75611ed48661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611f2657600080fd5b505af1158015611f3a573d6000803e3d6000fd5b505050506040513d6020811015611f5057600080fd5b810190808051906020019092919050505091506000821415611f8f57611f8a8473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee615342565b61208e565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852a12e3611fd68661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561202857600080fd5b505af115801561203c573d6000803e3d6000fd5b505050506040513d602081101561205257600080fd5b81019080805190602001909291905050509050600081141561208d5761208c8473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee615342565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156122035761211984601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506121bc61216b8561151d565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50505050565b60105481565b6060601380548060200260200160405190810160405280929190818152602001828054801561229357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612249575b5050505050905090565b60008084600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156122ee57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a756123358761151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b505050506040513d60208110156123b157600080fd5b8101908080519060200190929190505050915060008214156123dc576123d78585615342565b6124c7565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852a12e36124238761151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561247557600080fd5b505af1158015612489573d6000803e3d6000fd5b505050506040513d602081101561249f57600080fd5b8101908080519060200190929190505050905060008114156124c6576124c58585615342565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561263c5761255285601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506125f56125a48661151d565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5050505050565b60165481565b6060601180548060200260200160405190810160405280929190818152602001828054801561269757602002820191906000526020600020905b815481526020019060010190808311612683575b5050505050905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126fd57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806127e95750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127f457600080fd5b81600c8190555080600d9080519060200190612811929190615c9c565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d80548060200260200160405190810160405280929190818152602001828054801561288957602002820191906000526020600020905b815481526020019060010190808311612875575b5050505050905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090508060000154908060010154905082565b600e5481565b600f5481565b600080600080600061290d6008546128ff611dfa565b61530090919063ffffffff16565b93505b6013805490508260ff1610156129e757612999601260008460ff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461298b601260008660ff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461164b565b61530090919063ffffffff16565b90506129d66129c76127106129b96014548561521e90919063ffffffff16565b61525c90919063ffffffff16565b8261530090919063ffffffff16565b830192508180600101925050612910565b6129fa838561530090919063ffffffff16565b94505050505090565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a6257600080fd5b6005600085815260200190815260200160002060000160009054906101000a900460ff16158015612a935750600084115b1515612a9e57600080fd5b600060065414612ab657600a54600654850302612aba565b600a545b9150600b548210612acd57600b54612acf565b815b915081612ada6128e9565b1015612e3957736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612bcb57600080fd5b505af1158015612bdf573d6000803e3d6000fd5b505050506040513d6020811015612bf557600080fd5b81019080805190602001909291905050501515612c7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6e6f7420656e6f756768204441492062616c616e63650000000000000000000081525060200191505060405180910390fd5b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b505050506040513d6020811015612d7d57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015612e2057600080fd5b505af1158015612e34573d6000803e3d6000fd5b505050505b8160086000828254019250508190555081600960008282540192505081905550600090505b8251811015612eeb57612e7b83518361525c90919063ffffffff16565b600460008584815181101515612e8d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508080600101915050612e5e565b606060405190810160405280600115158152602001838152602001848152506005600086815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002019080519060200190612f63929190615d73565b50905050836006819055507fcd0901585263044ea7561ee2451d98c19b9be8b66b78bd05e84f8a286b9b627c8484846040518084815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015612fe1578082015181840152602081019050612fc6565b5050505090500194505050505060405180910390a150505050565b600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561305e57600080fd5b6007600087815260200190815260200160002060000160009054906101000a900460ff161580156130955750601180549050855111155b151561312f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f5f61776172644964207265616479207365746564206f722077726f6e67206d6581526020017f6d626572206c697374000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61314b60085461313d611dfa565b61530090919063ffffffff16565b9350600091505b84518210156132135761319b61271061318d60118581548110151561317357fe5b90600052602060002001548761521e90919063ffffffff16565b61525c90919063ffffffff16565b9050806004600087858151811015156131b057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080830192508180600101925050613152565b8260086000828254019250508190555082600f6000828254019250508190555060806040519081016040528060011515815260200184815260200186815260200160118054806020026020016040519081016040528092919081815260200182805480156132a057602002820191906000526020600020905b81548152602001906001019080831161328c575b50505050508152506007600088815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002019080519060200190613301929190615d73565b50606082015181600301908051906020019061331e929190615dfd565b509050507f2904c0a60ae1c2840a14f9e87c7dfd52a7560c37da82bf9b8c151550cf5d42fb86866011604051808481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613394578082015181840152602081019050613379565b5050505090500183810382528481815481526020019150805480156133d857602002820191906000526020600020905b8154815260200190600101908083116133c4575b50509550505050505060405180910390a1505050505050565b600080600080736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415151561344657600080fd5b8673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156134aa57600080fd5b505af11580156134be573d6000803e3d6000fd5b505050506040513d60208110156134d457600080fd5b8101908080519060200190929190505050600a0a9250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea81888888736b175474e89094c44da98b954eedeac495271d0f6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b1580156135f757600080fd5b505af115801561360b573d6000803e3d6000fd5b505050506040513d606081101561362157600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050905050809450508286111561367f5761367a8361366c888761521e90919063ffffffff16565b61525c90919063ffffffff16565b613681565b835b91508673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561375a57600080fd5b505af115801561376e573d6000803e3d6000fd5b505050506040513d602081101561378457600080fd5b810190808051906020019092919050505015156137a057600080fd5b8673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561386557600080fd5b505af1158015613879573d6000803e3d6000fd5b505050506040513d602081101561388f57600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638196213f8888736b175474e89094c44da98b954eedeac495271d0f308760016040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b1580156139f357600080fd5b505af1158015613a07573d6000803e3d6000fd5b50505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613aba57600080fd5b505af1158015613ace573d6000803e3d6000fd5b505050506040513d6020811015613ae457600080fd5b81019080805190602001909291905050509050613b01818661583c565b50505050505050565b60155481565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea818873eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34736b175474e89094c44da98b954eedeac495271d0f6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b158015613c3657600080fd5b505af1158015613c4a573d6000803e3d6000fd5b505050506040513d6060811015613c6057600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505090505080935050670de0b6b3a7640000341115613cce57613cc9670de0b6b3a7640000613cbb348661521e90919063ffffffff16565b61525c90919063ffffffff16565b613cd0565b825b9150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638196213f3473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34736b175474e89094c44da98b954eedeac495271d0f308860006040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200196505050505050506000604051808303818588803b158015613e3857600080fd5b505af1158015613e4c573d6000803e3d6000fd5b5050505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613f0057600080fd5b505af1158015613f14573d6000803e3d6000fd5b505050506040513d6020811015613f2a57600080fd5b81019080805190602001909291905050509050613f47818561583c565b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613ff55750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561400057600080fd5b81600a8190555080600b819055505050565b6000735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156140c357600080fd5b505af11580156140d7573d6000803e3d6000fd5b505050506040513d60208110156140ed57600080fd5b8101908080519060200190929190505050905090565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156141ee57600080fd5b505af1158015614202573d6000803e3d6000fd5b505050506040513d602081101561421857600080fd5b8101908080519060200190929190505050151561423457600080fd5b61423e828261583c565b5050565b6000806000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461436c601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461435e601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461164b565b61530090919063ffffffff16565b9250925092509193909250565b60138181548110151561438857fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561440857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a7561444f8661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156144a157600080fd5b505af11580156144b5573d6000803e3d6000fd5b505050506040513d60208110156144cb57600080fd5b8101908080519060200190929190505050915060008214156146a757736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561459e57600080fd5b505af11580156145b2573d6000803e3d6000fd5b505050506040513d60208110156145c857600080fd5b81019080805190602001909291905050505083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550836008600082825403925050819055507fb790a77b394b6a40e0c2ff48c57386d011b921ff87f3d625985330ac29ab1b643385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1614943565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852a12e36146ee8661151d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561474057600080fd5b505af1158015614754573d6000803e3d6000fd5b505050506040513d602081101561476a57600080fd5b81019080805190602001909291905050509050600081141561494257736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561483d57600080fd5b505af1158015614851573d6000803e3d6000fd5b505050506040513d602081101561486757600080fd5b81019080805190602001909291905050505083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550836008600082825403925050819055507fb790a77b394b6a40e0c2ff48c57386d011b921ff87f3d625985330ac29ab1b643385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515614ab8576149ce84601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550614a71614a208561151d565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461530090919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50505050565b600080736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330600c546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b505050506040513d6020811015614bd857600080fd5b81019080805190602001909291905050501515614c5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6e6f7420656e6f756768204441492062616c616e63650000000000000000000081525060200191505060405180910390fd5b614ca0612710614c92600d6000815481101515614c7657fe5b9060005260206000200154600c5461521e90919063ffffffff16565b61525c90919063ffffffff16565b9150614ce5612710614cd7600d6001815481101515614cbb57fe5b9060005260206000200154600c5461521e90919063ffffffff16565b61525c90919063ffffffff16565b9050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614dc057600080fd5b505af1158015614dd4573d6000803e3d6000fd5b505050506040513d6020811015614dea57600080fd5b810190808051906020019092919050505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614eb357600080fd5b505af1158015614ec7573d6000803e3d6000fd5b505050506040513d6020811015614edd57600080fd5b8101908080519060200190929190505050507f349bc4ca55f9bb463aa6d77727809c4bdd873f568307bc3a99b082f6e45cc6cd33848385604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a1505050565b60065481565b60095481565b60008060606005600085815260200190815260200160002060000160009054906101000a900460ff166005600086815260200190815260200160002060010154600560008781526020019081526020016000206002018080548060200260200160405190810160405280929190818152602001828054801561507e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311615034575b505050505090509250925092509193909250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156150ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561512957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60008060008414156152335760009150615255565b828402905082848281151561524457fe5b0414151561525157600080fd5b8091505b5092915050565b60008060008311151561526e57600080fd5b828481151561527957fe5b0490508091505092915050565b803073ffffffffffffffffffffffffffffffffffffffff1631101515156152ac57600080fd5b60008111156152fd573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156152fb573d6000803e3d6000fd5b505b50565b60008083831115151561531257600080fd5b82840390508091505092915050565b600080828401905083811015151561533857600080fd5b8091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aea8188736b175474e89094c44da98b954eedeac495271d0f86866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050606060405180830381600087803b15801561545257600080fd5b505af1158015615466573d6000803e3d6000fd5b505050506040513d606081101561547c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505090505080925050670de0b6b3a76400008411156154ea576154e5670de0b6b3a76400006154d7868561521e90919063ffffffff16565b61525c90919063ffffffff16565b6154ec565b815b9050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156155c757600080fd5b505af11580156155db573d6000803e3d6000fd5b505050506040513d60208110156155f157600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638196213f34736b175474e89094c44da98b954eedeac495271d0f8787338760016040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200196505050505050506000604051808303818588803b15801561575557600080fd5b505af1158015615769573d6000803e3d6000fd5b505050505083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550836008600082825403925050819055507fb790a77b394b6a40e0c2ff48c57386d011b921ff87f3d625985330ac29ab1b643385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b505050506040513d602081101561593f57600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156159e257600080fd5b505af11580156159f6573d6000803e3d6000fd5b50505050615a048282615a08565b5050565b615a5a82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461532190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615ab28260085461532190919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515615c2d57615b4382601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461532190919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550615be6615b958361151d565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461532190919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b7f6da1339ceea6e3dbf7ead04517d05e02f98ab75cd4698142e7eeaa32ea1714b73383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b828054828255906000526020600020908101928215615cd8579160200282015b82811115615cd7578251825591602001919060010190615cbc565b5b509050615ce59190615e4a565b5090565b828054828255906000526020600020908101928215615d62579160200282015b82811115615d615782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190615d09565b5b509050615d6f9190615e6f565b5090565b828054828255906000526020600020908101928215615dec579160200282015b82811115615deb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190615d93565b5b509050615df99190615e6f565b5090565b828054828255906000526020600020908101928215615e39579160200282015b82811115615e38578251825591602001919060010190615e1d565b5b509050615e469190615e4a565b5090565b615e6c91905b80821115615e68576000816000905550600101615e50565b5090565b90565b615eaf91905b80821115615eab57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101615e75565b5090565b905600a165627a7a72305820755686001ab1431318f40936cb48a586b95a1afefb57a1b6709a2835d95ee06d0029

Deployed Bytecode Sourcemap

4000:15546:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16693:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16693:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16693:214:0;;;;;;;;;;;;;;;;;;;5579:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5579:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6809:253;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6809:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10791:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10791:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5753:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5753:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10309:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10309:118:0;;;;;;;;;;;;;;;;;;;;;;;5450:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5450:35:0;;;;;;;;;;;;;;;;;;;;;;;10932:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10932:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5492:36:0;;;;;;;;;;;;;;;;;;;;;;;14838:384;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14838:384:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7216:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5261:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5261:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4073:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4073:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5535:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5535:37:0;;;;;;;;;;;;;;;;;;;;;;;17698:797;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17698:797:0;;;;;;;;;;;;;;;;;;;;;;;;;;5916:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5916:33:0;;;;;;;;;;;;;;;;;;;;;;;7546:245;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7546:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4754:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4487:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4487:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11204:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11204:132:0;;;;;;;;;;;;;;;;;;;;;;;12389:748;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12389:748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5714:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5714:32:0;;;;;;;;;;;;;;;;;;;;;;;10433:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10433:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10433:102:0;;;;;;;;;;;;;;;;;13143:751;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13143:751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5997:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5997:40:0;;;;;;;;;;;;;;;;;;;;;;;10675:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10675:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10675:110:0;;;;;;;;;;;;;;;;;15228:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15228:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7342:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7342:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10541:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10541:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10541:128:0;;;;;;;;;;;;;;;;;4593:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4593:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5832:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5832:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5637:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5637:31:0;;;;;;;;;;;;;;;;;;;;;;;5675:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5675:32:0;;;;;;;;;;;;;;;;;;;;;;;15307:438;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15307:438:0;;;;;;;;;;;;;;;;;;;;;;;15751:936;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15751:936:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16913:779;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16913:779:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8678:904;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8678:904:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5956:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5956:34:0;;;;;;;;;;;;;;;;;;;;;;;7799:672;;;;;;;;;;;;;;;;;;;;;;;;;;;;7068:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7068:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11075:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11075:123:0;;;;;;;;;;;;;;;;;;;;;;;8477:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8477:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18728:293;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18728:293:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5882:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5882:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11342:1041;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11342:1041:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19027:516;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19027:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5230:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5230:24:0;;;;;;;;;;;;;;;;;;;;;;;5418:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5418:25:0;;;;;;;;;;;;;;;;;;;;;;;18501:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18501:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18501:221:0;;;;;;;;;;;;;;;;;;;713:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;713:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5384:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5384:27:0;;;;;;;;;;;;;;;;;;;;;;;5184:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5184:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16693:214;16749:10;16761:19;16782:17;16820:6;:16;16827:8;16820:16;;;;;;;;;;;:22;;;;;;;;;;;;16844:6;:16;16851:8;16844:16;;;;;;;;;;;:28;;;16874:6;:16;16881:8;16874:16;;;;;;;;;;;:24;;16812:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16693:214;;;;;:::o;5579:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6809:253::-;6939:4;6945;6951:20;6991:14;;;;;;;;;;;:33;;;7025:9;7036:6;7044:9;6991:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6991:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6991:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6991:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6984:70;;;;;;6809:253;;;;;;;:::o;10791:135::-;10847:7;10873:45;10897:20;:18;:20::i;:::-;10873:19;10885:6;10873:7;:11;;:19;;;;:::i;:::-;:23;;:45;;;;:::i;:::-;10866:52;;10791:135;;;:::o;5753:72::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10309:118::-;10360:4;10383:15;;;;;;;;;;;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10383:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10383:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10383:36:0;;;;;;;;;;;;;;;;10376:43;;10309:118;:::o;5450:35::-;;;;:::o;10932:137::-;10989:7;11015:46;11054:6;11015:34;11028:20;:18;:20::i;:::-;11015:8;:12;;:34;;;;:::i;:::-;:38;;:46;;;;:::i;:::-;11008:53;;10932:137;;;:::o;5492:36::-;;;;:::o;14838:384::-;15055:9;15110:11;6587:3;;;;;;;;;;;6573:17;;:10;:17;;;6565:26;;;;;;;;14985:14;:21;14967:7;:14;:39;14959:48;;;;;;;;15018:22;15029:10;15018;:22::i;:::-;15067:1;15055:13;;15051:162;15074:7;:14;15070:1;:18;15051:162;;;15130:7;15138:1;15130:10;;;;;;;;;;;;;;;;;;15110:31;;15156:5;:14;;;15171:10;15183:14;15198:1;15183:17;;;;;;;;;;;;;;;;;;15156:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15156:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15156:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15156:45:0;;;;;;;;;;;;;;;;;15090:3;;;;;;;15051:162;;;14838:384;;;;;:::o;7216:120::-;6673:5;;;;;;;;;;;6659:19;;:10;:19;;;:40;;;;6696:3;;;;;;;;;;;6682:17;;:10;:17;;;6659:40;6651:49;;;;;;;;7314:14;7298:13;:30;;;;;;;;;;;;:::i;:::-;;7216:120;:::o;5261:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4073:97::-;;;;;;;;;;;;;:::o;5535:37::-;;;;:::o;17698:797::-;17937:6;17987:9;18027:16;18122:14;6587:3;;;;;;;;;;;6573:17;;:10;:17;;;6565:26;;;;;;;;17827:1;17801:22;;:27;:85;;;;17868:18;;17842:22;;17832:7;:32;:54;;17801:85;17793:94;;;;;;;;17916:3;17906:7;:13;17898:22;;;;;;;;17933:512;17949:10;:17;;;;17945:1;:21;17933:512;;;17999:10;18010:1;17999:13;;;;;;;;;;;;;;;;;;;;;;;;;;;17987:25;;18046:61;18082:8;:11;18091:1;18082:11;;;;;;;;;;;;;;;:24;;;18046:31;18055:8;:11;18064:1;18055:11;;;;;;;;;;;;;;;:21;;;18046:8;:31::i;:::-;:35;;:61;;;;:::i;:::-;18027:80;;18139:39;18172:5;18139:28;18152:14;;18139:8;:12;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;18122:56;;18211:27;18231:6;18211:12;:15;18224:1;18211:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;18193:12;:15;18206:1;18193:15;;;;;;;;;;;;;;;:45;;;;18273:29;18295:6;18273:17;;:21;;:29;;;;:::i;:::-;18253:17;:49;;;;18341:34;18350:8;:11;18359:1;18350:11;;;;;;;;;;;;;;;:24;;;18341:8;:34::i;:::-;18317:8;:11;18326:1;18317:11;;;;;;;;;;;;;;;:21;;:58;;;;18395:36;18412:7;18421:1;18424:6;18395:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17968:3;;;;;;;17933:512;;;18480:7;18455:22;:32;;;;17698:797;;;;;:::o;5916:33::-;;;;:::o;7546:245::-;6673:5;;;;;;;;;;;6659:19;;:10;:19;;;:40;;;;6696:3;;;;;;;;;;;6682:17;;:10;:17;;;6659:40;6651:49;;;;;;;;7684:15;7667:14;:32;;;;7723:9;7710:10;:22;;;;;;;;;;;;:::i;:::-;;7764:19;7743:18;:40;;;;7546:245;;;:::o;4754:47::-;;;;;;;;;;;;;;;;;:::o;4487:93::-;;;;;;;;;;;;;:::o;11204:132::-;11249:7;11275:53;11321:6;11275:41;11295:20;:18;:20::i;:::-;11275:15;:13;:15::i;:::-;:19;;:41;;;;:::i;:::-;:45;;:53;;;;:::i;:::-;11268:60;;11204:132;:::o;12389:748::-;12521:13;12700:14;12502:7;12474:12;:24;12487:10;12474:24;;;;;;;;;;;;;;;;:35;;12466:44;;;;;;;;12537:15;;;;;;;;;;;:22;;;12560:17;12569:7;12560:8;:17::i;:::-;12537:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12537:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12537:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12537:41:0;;;;;;;;;;;;;;;;12521:57;;12606:1;12594:8;:13;12591:300;;;12624:43;12640:7;4227:42;12624:15;:43::i;:::-;12591:300;;;12717:15;;;;;;;;;;;:32;;;12750:17;12759:7;12750:8;:17::i;:::-;12717:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12717:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12717:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12717:51:0;;;;;;;;;;;;;;;;12700:68;;12799:1;12786:9;:14;12783:97;;;12821:43;12837:7;4227:42;12821:15;:43::i;:::-;12783:97;12591:300;12924:1;12904:22;;:8;:22;;;;12901:229;;;12977:44;13013:7;12977:8;:18;12986:8;12977:18;;;;;;;;;;;;;;;:31;;;:35;;:44;;;;:::i;:::-;12943:8;:18;12952:8;12943:18;;;;;;;;;;;;;;;:31;;:78;;;;13067:51;13100:17;13109:7;13100:8;:17::i;:::-;13067:8;:18;13076:8;13067:18;;;;;;;;;;;;;;;:28;;;:32;;:51;;;;:::i;:::-;13036:8;:18;13045:8;13036:18;;;;;;;;;;;;;;;:28;;:82;;;;12901:229;12389:748;;;;:::o;5714:32::-;;;;:::o;10433:102::-;10479:19;10517:10;10510:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10433:102;:::o;13143:751::-;13294:13;13465:14;13275:7;13247:12;:24;13260:10;13247:24;;;;;;;;;;;;;;;;:35;;13239:44;;;;;;;;13310:15;;;;;;;;;;;:22;;;13333:17;13342:7;13333:8;:17::i;:::-;13310:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13310:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13310:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13310:41:0;;;;;;;;;;;;;;;;13294:57;;13379:1;13367:8;:13;13364:284;;;13397:35;13413:7;13422:9;13397:15;:35::i;:::-;13364:284;;;13482:15;;;;;;;;;;;:32;;;13515:17;13524:7;13515:8;:17::i;:::-;13482:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13482:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13482:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13482:51:0;;;;;;;;;;;;;;;;13465:68;;13564:1;13551:9;:14;13548:89;;;13586:35;13602:7;13611:9;13586:15;:35::i;:::-;13548:89;13364:284;13681:1;13661:22;;:8;:22;;;;13658:229;;;13734:44;13770:7;13734:8;:18;13743:8;13734:18;;;;;;;;;;;;;;;:31;;;:35;;:44;;;;:::i;:::-;13700:8;:18;13709:8;13700:18;;;;;;;;;;;;;;;:31;;:78;;;;13824:51;13857:17;13866:7;13857:8;:17::i;:::-;13824:8;:18;13833:8;13824:18;;;;;;;;;;;;;;;:28;;;:32;;:51;;;;:::i;:::-;13793:8;:18;13802:8;13793:18;;;;;;;;;;;;;;;:28;;:82;;;;13658:229;13143:751;;;;;:::o;5997:40::-;;;;:::o;10675:110::-;10724:21;10764:13;10757:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10675:110;:::o;15228:73::-;6587:3;;;;;;;;;;;6573:17;;:10;:17;;;6565:26;;;;;;;;15289:4;15283:3;;:10;;;;;;;;;;;;;;;;;;15228:73;:::o;7342:198::-;6673:5;;;;;;;;;;;6659:19;;:10;:19;;;:40;;;;6696:3;;;;;;;;;;;6682:17;;:10;:17;;;6659:40;6651:49;;;;;;;;7466:13;7451:12;:28;;;;7512:20;7490:19;:42;;;;;;;;;;;;:::i;:::-;;7342:198;;:::o;52:20::-;;;;;;;;;;;;;:::o;10541:128::-;10597:26;10642:19;10635:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10541:128;:::o;4593:72::-;;;;;;;;;;;;;:::o;5832:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5637:31::-;;;;:::o;5675:32::-;;;;:::o;15307:438::-;15352:7;15371:16;15433:18;15466:7;15517:17;15390:32;15409:12;;15390:14;:12;:14::i;:::-;:18;;:32;;;;:::i;:::-;15371:51;;15462:234;15479:10;:17;;;;15475:1;:21;;;15462:234;;;15537:61;15573:8;:11;15582:1;15573:11;;;;;;;;;;;;;;;:24;;;15537:31;15546:8;:11;15555:1;15546:11;;;;;;;;;;;;;;;:21;;;15537:8;:31::i;:::-;:35;;:61;;;;:::i;:::-;15517:81;;15627:55;15641:40;15675:5;15641:29;15655:14;;15641:9;:13;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;15627:9;:13;;:55;;;;:::i;:::-;15613:69;;;;15498:3;;;;;;;15462:234;;;15713:24;15726:10;15713:8;:12;;:24;;;;:::i;:::-;15706:31;;15307:438;;;;;:::o;15751:936::-;15891:15;16406:9;6587:3;;;;;;;;;;;6573:17;;:10;:17;;;6565:26;;;;;;;;15841:6;:16;15848:8;15841:16;;;;;;;;;;;:22;;;;;;;;;;;;15840:23;:39;;;;;15878:1;15867:8;:12;15840:39;15832:48;;;;;;;;15925:1;15909:12;;:17;:67;;15968:8;;15952:12;;15941:8;:23;15940:36;15909:67;;;15929:8;;15909:67;15891:85;;16007:8;;15997:7;:18;:39;;16028:8;;15997:39;;;16018:7;15997:39;15987:49;;16068:7;16050:15;:13;:15::i;:::-;:25;16047:277;;;4327:42;16100:30;;;16131:10;16151:4;16158:7;16100:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16100:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16100:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16100:66:0;;;;;;;;;;;;;;;;16092:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4327:42;16208:25;;;16242:15;;;;;;;;;;;16260:7;16208:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16208:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16208:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16208:60:0;;;;;;;;;;;;;;;;;16283:15;;;;;;;;;;;:20;;;16304:7;16283:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16283:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16283:29:0;;;;16047:277;16352:7;16336:12;;:23;;;;;;;;;;;16384:7;16370:10;;:21;;;;;;;;;;;16418:1;16406:13;;16402:128;16424:8;:15;16421:1;:18;16402:128;;;16490:28;16502:8;:15;16490:7;:11;;:28;;;;:::i;:::-;16461:12;:25;16474:8;16483:1;16474:11;;;;;;;;;;;;;;;;;;16461:25;;;;;;;;;;;;;;;;:57;;;;;;;;;;;16441:3;;;;;;;16402:128;;;16561:30;;;;;;;;;16567:4;16561:30;;;;;;16573:7;16561:30;;;;16582:8;16561:30;;;16542:6;:16;16549:8;16542:16;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;16617:8;16602:12;:23;;;;16641:38;16651:8;16661;16671:7;16641:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16641:38:0;;;;;;;;;;;;;;;;;;;15751:936;;;;:::o;16913:779::-;17167:16;17229:13;17257:9;17312:14;6587:3;;;;;;;;;;;6573:17;;:10;:17;;;6565:26;;;;;;;;17038:13;:23;17052:8;17038:23;;;;;;;;;;;:29;;;;;;;;;;;;17037:30;:73;;;;;17090:13;:20;;;;17071:8;:15;:39;;17037:73;17029:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17186:32;17205:12;;17186:14;:12;:14::i;:::-;:18;;:32;;;;:::i;:::-;17167:51;;17269:1;17257:13;;17253:209;17275:8;:15;17272:1;:18;17253:209;;;17329:41;17364:5;17329:30;17342:13;17356:1;17342:16;;;;;;;;;;;;;;;;;;17329:8;:12;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;17312:58;;17414:6;17385:12;:25;17398:8;17407:1;17398:11;;;;;;;;;;;;;;;;;;17385:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;17444:6;17435:15;;;;17292:3;;;;;;;17253:209;;;17488:5;17472:12;;:21;;;;;;;;;;;17525:5;17504:17;;:26;;;;;;;;;;;17567:50;;;;;;;;;17580:4;17567:50;;;;;;17586:5;17567:50;;;;17593:8;17567:50;;;;17603:13;17567:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17541:13;:23;17555:8;17541:23;;;;;;;;;;;:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;17633:51;17650:8;17660;17670:13;17633:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17633:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16913:779;;;;;;:::o;8678:904::-;8833:25;8869:15;9026:21;9475:15;4327:42;8792:29;;:8;:29;;;;8784:38;;;;;;;;8891:8;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8891:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8891:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8891:19:0;;;;;;;;;;;;;;;;8887:2;:23;8869:41;;8945:14;;;;;;;;;;;:33;;;8979:8;8989:6;4327:42;8945:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8945:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8945:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8945:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8921:94;;;;;;;9060:7;9050:6;:17;;:82;;9090:42;9124:7;9090:29;9112:6;9090:17;:21;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;9050:82;;;9070:17;9050:82;9026:106;;9151:8;:21;;;9173:10;9193:4;9200:6;9151:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9151:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9151:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9151:56:0;;;;;;;;;;;;;;;;9143:65;;;;;;;;9219:8;:16;;;9244:14;;;;;;;;;;;9261:6;9219:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9219:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9219:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9219:49:0;;;;;;;;;;;;;;;;;9279:14;;;;;;;;;;;:26;;;9320:8;9343:6;4327:42;9404:4;9424:13;9452:1;9279:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9279:185:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9279:185:0;;;;4327:42;9493:27;;;9529:4;9493:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9493:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9493:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9493:42:0;;;;;;;;;;;;;;;;9475:60;;9546:28;9556:7;9565:8;9546:9;:28::i;:::-;8678:904;;;;;;;:::o;5956:34::-;;;;:::o;7799:672::-;7863:25;8016:21;8364:15;7923:14;;;;;;;;;;;:33;;;4227:42;7976:9;4327:42;7923:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7923:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7923:82:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7923:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7899:106;;;;;;;8053:7;8040:9;:20;;:88;;8083:45;8120:7;8083:32;8105:9;8083:17;:21;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;8040:88;;;8063:17;8040:88;8016:112;;8139:14;;;;;;;;;;;:26;;;8172:9;4227:42;8229:9;4327:42;8293:4;8313:13;8341:1;8139:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8139:214:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8139:214:0;;;;;4327:42;8382:27;;;8418:4;8382:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8382:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8382:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8382:42:0;;;;;;;;;;;;;;;;8364:60;;8435:28;8445:7;8454:8;8435:9;:28::i;:::-;7799:672;;;;:::o;7068:142::-;6673:5;;;;;;;;;;;6659:19;;:10;:19;;;:40;;;;6696:3;;;;;;;;;;;6682:17;;:10;:17;;;6659:40;6651:49;;;;;;;;7162:9;7151:8;:20;;;;7193:9;7182:8;:20;;;;7068:142;;:::o;11075:123::-;11121:7;4436:42;11147:28;;;11184:4;11147:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11147:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11147:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11147:43:0;;;;;;;;;;;;;;;;11140:50;;11075:123;:::o;8477:195::-;4327:42;8558:30;;;8589:10;8609:4;8616:7;8558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8558:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8558:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8558:66:0;;;;;;;;;;;;;;;;8550:75;;;;;;;;8636:28;8646:7;8655:8;8636:9;:28::i;:::-;8477:195;;:::o;18728:293::-;18793:21;18816:18;18836:17;18874:8;:18;18883:8;18874:18;;;;;;;;;;;;;;;:31;;;18907:8;:18;18916:8;18907:18;;;;;;;;;;;;;;;:28;;;18937:75;18980:8;:18;18989:8;18980:18;;;;;;;;;;;;;;;:31;;;18937:38;18946:8;:18;18955:8;18946:18;;;;;;;;;;;;;;;:28;;;18937:8;:38::i;:::-;:42;;:75;;;;:::i;:::-;18866:147;;;;;;18728:293;;;;;:::o;5882:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11342:1041::-;11471:13;11792:14;11452:7;11424:12;:24;11437:10;11424:24;;;;;;;;;;;;;;;;:35;;11416:44;;;;;;;;11487:15;;;;;;;;;;;:22;;;11510:17;11519:7;11510:8;:17::i;:::-;11487:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11487:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11487:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11487:41:0;;;;;;;;;;;;;;;;11471:57;;11556:1;11544:8;:13;11541:596;;;4327:42;11574:26;;;11601:10;11613:7;11574:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11574:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11574:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11574:47:0;;;;;;;;;;;;;;;;;11664:7;11636:12;:24;11649:10;11636:24;;;;;;;;;;;;;;;;:35;;;;;;;;;;;11702:7;11686:12;;:23;;;;;;;;;;;11729:30;11739:10;11751:7;11729:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;11541:596;;;11809:15;;;;;;;;;;;:32;;;11842:17;11851:7;11842:8;:17::i;:::-;11809:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11809:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11809:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11809:51:0;;;;;;;;;;;;;;;;11792:68;;11891:1;11878:9;:14;11875:251;;;4327:42;11913:26;;;11940:10;11952:7;11913:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11913:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11913:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11913:47:0;;;;;;;;;;;;;;;;;12007:7;11979:12;:24;11992:10;11979:24;;;;;;;;;;;;;;;;:35;;;;;;;;;;;12049:7;12033:12;;:23;;;;;;;;;;;12080:30;12090:10;12102:7;12080:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;11875:251;11541:596;12170:1;12150:22;;:8;:22;;;;12147:229;;;12223:44;12259:7;12223:8;:18;12232:8;12223:18;;;;;;;;;;;;;;;:31;;;:35;;:44;;;;:::i;:::-;12189:8;:18;12198:8;12189:18;;;;;;;;;;;;;;;:31;;:78;;;;12313:51;12346:17;12355:7;12346:8;:17::i;:::-;12313:8;:18;12322:8;12313:18;;;;;;;;;;;;;;;:28;;;:32;;:51;;;;:::i;:::-;12282:8;:18;12291:8;12282:18;;;;;;;;;;;;;;;:28;;:82;;;;12147:229;11342:1041;;;;:::o;19027:516::-;19200:17;19282:18;4327:42;19091:30;;;19122:10;19142:4;19149:12;;19091:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19091:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19091:71:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19091:71:0;;;;;;;;;;;;;;;;19083:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19220:51;19265:5;19220:40;19237:19;19257:1;19237:22;;;;;;;;;;;;;;;;;;19220:12;;:16;;:40;;;;:::i;:::-;:44;;:51;;;;:::i;:::-;19200:71;;19303:51;19348:5;19303:40;19320:19;19340:1;19320:22;;;;;;;;;;;;;;;;;;19303:12;;:16;;:40;;;;:::i;:::-;:44;;:51;;;;:::i;:::-;19282:72;;4327:42;19365:26;;;19392:3;;;;;;;;;;;19397:9;19365:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19365:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19365:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19365:42:0;;;;;;;;;;;;;;;;;4327;19418:26;;;19445:5;19452:10;19418:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19418:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19418:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19418:45:0;;;;;;;;;;;;;;;;;19479:56;19494:10;19506:5;19513:10;19525:9;19479:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19027:516;;;:::o;5230:24::-;;;;:::o;5418:25::-;;;;:::o;18501:221::-;18564:10;18576:19;18597:17;18635:6;:16;18642:8;18635:16;;;;;;;;;;;:22;;;;;;;;;;;;18659:6;:16;18666:8;18659:16;;;;;;;;;;;:28;;;18689:6;:16;18696:8;18689:16;;;;;;;;;;;:24;;18627:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18501:221;;;;;:::o;713:192::-;510:5;;;;;;;;;;;496:19;;:10;:19;;;488:28;;;;;;;;814:1;794:22;;:8;:22;;;;786:31;;;;;;;;861:8;833:37;;854:5;;;;;;;;;;;833:37;;;;;;;;;;;;889:8;881:5;;:16;;;;;;;;;;;;;;;;;;713:192;:::o;5384:27::-;;;;:::o;5184:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1012:433::-;1070:7;1369:9;1319:1;1314;:6;1310:47;;;1344:1;1337:8;;;;1310:47;1385:1;1381;:5;1369:17;;1414:1;1409;1405;:5;;;;;;;;:10;1397:19;;;;;;;;1436:1;1429:8;;1012:433;;;;;;:::o;1568:294::-;1626:7;1729:9;1658:1;1654;:5;1646:14;;;;;;;;1745:1;1741;:5;;;;;;;;1729:17;;1853:1;1846:8;;1568:294;;;;;:::o;14649:183::-;14738:6;14721:4;14713:21;;;:31;;14705:40;;;;;;;;14768:1;14759:6;:10;14756:69;;;14786:10;:19;;:27;14806:6;14786:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14786:27:0;14756:69;14649:183;:::o;1988:150::-;2046:7;2092:9;2079:1;2074;:6;;2066:15;;;;;;;;2108:1;2104;:5;2092:17;;2129:1;2122:8;;1988:150;;;;;:::o;2214:::-;2272:7;2292:9;2308:1;2304;:5;2292:17;;2333:1;2328;:6;;2320:15;;;;;;;;2355:1;2348:8;;2214:150;;;;;:::o;13900:743::-;13976:25;14119:21;14036:14;;;;;;;;;;;:33;;;4327:42;14089:7;14098:9;14036:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14036:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14036:72:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14036:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14012:96;;;;;;;14154:7;14143;:18;;:84;;14184:43;14219:7;14184:30;14206:7;14184:17;:21;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;14143:84;;;14164:17;14143:84;14119:108;;4327:42;14238:25;;;14272:14;;;;;;;;;;;14289:7;14238:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14238:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14238:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14238:59:0;;;;;;;;;;;;;;;;;14308:14;;;;;;;;;;;:26;;;14341:9;4327:42;14398:7;14420:9;14444:10;14469:13;14497:1;14308:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14308:201:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14308:201:0;;;;;14548:7;14520:12;:24;14533:10;14520:24;;;;;;;;;;;;;;;;:35;;;;;;;;;;;14582:7;14566:12;;:23;;;;;;;;;;;14605:30;14615:10;14627:7;14605:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;13900:743;;;;:::o;9588:224::-;4327:42;9661:25;;;9695:15;;;;;;;;;;;9713:7;9661:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9661:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9661:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9661:60:0;;;;;;;;;;;;;;;;;9732:15;;;;;;;;;;;:20;;;9753:7;9732:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9732:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9732:29:0;;;;9772:32;9786:7;9795:8;9772:13;:32::i;:::-;9588:224;;:::o;9818:485::-;9923:37;9952:7;9923:12;:24;9936:10;9923:24;;;;;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;9896:12;:24;9909:10;9896:24;;;;;;;;;;;;;;;:64;;;;9986:25;10003:7;9986:12;;:16;;:25;;;;:::i;:::-;9971:12;:40;;;;10045:1;10025:22;;:8;:22;;;;10022:229;;;10098:44;10134:7;10098:8;:18;10107:8;10098:18;;;;;;;;;;;;;;;:31;;;:35;;:44;;;;:::i;:::-;10064:8;:18;10073:8;10064:18;;;;;;;;;;;;;;;:31;;:78;;;;10188:51;10221:17;10230:7;10221:8;:17::i;:::-;10188:8;:18;10197:8;10188:18;;;;;;;;;;;;;;;:28;;;:32;;:51;;;;:::i;:::-;10157:8;:18;10166:8;10157:18;;;;;;;;;;;;;;;:28;;:82;;;;10022:229;10266:29;10275:10;10287:7;10266:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;9818:485;;:::o;4000:15546::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://755686001ab1431318f40936cb48a586b95a1afefb57a1b6709a2835d95ee06d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.