Amoy Testnet

Token

DWC (DWC)
ERC-20

Overview

Max Total Supply

32,500,000 DWC

Holders

16

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,948.824402361611627214 DWC
0xf39e56bdb5bec866ec5788f79cff1132be85b8aa
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
DWCChina

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at amoy.polygonscan.com on 2024-12-13
*/

// SPDX-License-Identifier: UNLISCENSED
pragma solidity ^0.6.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract DWCChina  {
    IERC20 public dai;
    string public name = "DWC";
    string public symbol = "DWC";
    uint256 public totalSupply =32500000*10**18; // 325 lakh tokens
    uint8 public decimals = 18;
    struct User {
        uint id;        
        address referrer;
        uint partnersCount;        
        uint256 teamCount;    
        address[] directIds;    
        uint256 totalDeposit;  
        uint256 lastDeposit;
        uint256 directBusiness; 
        uint256 reward;
        uint256 levelincome;
        uint256 roraltyincome;
        uint256 maturityincome;
        uint256 totalreward;
        uint256 totalwithdraw;     
         
    }
    struct OrderInfo {
        uint256 amount; 
        uint256 holdingbonus;
        uint256 deposit_time;
        uint256 freeze_time;
        uint256 reward_time;
        bool ishelp;
        bool isactive;
        bool isdai;
        uint256 dayRewardPercents;
        uint256 withdraw_time;
        uint withno;
    }
    struct Rank
    {
        uint id;
        uint activedirect;
        uint activeteam;
    }
    struct UserRank
    {
        uint rank;
    }
    struct UserCapping
    {
        uint256 totalCapping;
        uint256 useCapping;
    }
    mapping(address => User) public users;
    mapping(address => UserRank) public userranks;
    mapping(address => UserCapping) public userscapping;
    mapping(address => OrderInfo[]) public orderInfos;
    mapping(uint=>Rank) public map_ranks;
    uint256 private constant minDeposit = 50e18;
    uint256 private constant  maxDeposit=5000e18;
    uint256 public liquidityPool_tokenAmount;
    uint256 public liquidityPool_daiAmount;
    uint256 public _burnToken;
    address public id1=0x9Ed2CFa3ebdE315FdbfC60859f093E07a52d131f;
    address public communityHoldingFund=0x7e1dF73df40F15Ba5252327D5f618aC359f994eb;
    address public dwctokenPool=0x2Ea5819ed9AC1DB76EA7d8bB73DF1b2Ba1369904;    
    address public liquidityPool=0x2f1Fd2E230E0c91924ee4eE00D47f5a9992414D7;
    address public extraPool=0x55A75F66afd736DB915E84e209BA1C3C95e9d380;
    address public creater;
    address[5] public feewallet=[0xEa33CB8211A73e1cbcDEaA0a613A070DF2ADb3B1,0xf00c7cbDea8d7f0Cc5FFA5e7c46D96188dc74732,0x0b7b31458fdF2F14c88B00602CC990C74ccE3b75,0x95ACf6b6e689293EB67a3D2396Cd03115DBC87D0,0x1E313b8B0fBc14cfa26dCdB8fe4eD4B73b4aE922];
    uint256[5] private feePercents = [300,50,50,50,50];
    address public withdrawfee=0x38d51F8F961e764A659BbC0c95fFc0156f45f754;
    uint public lastUserId = 2;
    uint256 private constant referDepth = 21;
    uint256 private constant interval=5*60;
    uint256 private constant timeStepdaily=interval;
    uint256 private timeLiquidityLock;
    uint256 private dayRewardPercents = 1;
    uint256[21] private levelPercents = [500,200,100,50,25,25,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20];
    uint256[21] private levelwPercents = [1000,100,100,100,100,100,100,100,100,100,100,50,50,50,50,50,50,50,50,50,50];
    uint256[21] private levelRank = [0,1,1,2,2,3,3,3,4,4,5,5,5,5,5,6,6,6,6,6,6];
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner,address indexed _spender,uint256 _value);

    event Deposit(address indexed addr, uint256 amount, uint256 token);
    event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);   
    event Transaction(address indexed user,address indexed from,uint256 value, uint8 level,uint8 Type);
    event Withdraw(address indexed user,uint256 value);
    event Swap(address indexed user,uint256 token,uint256 value);
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;    
     
    constructor(address _daiAddr) public {
        creater=msg.sender;
        dai = IERC20(_daiAddr);   
        balanceOf[dwctokenPool] =100000*10**18;
        balanceOf[communityHoldingFund] =32290000*10**18;
        balanceOf[liquidityPool] =10000*10**18;
        balanceOf[extraPool] =100000*10**18;
        emit Transfer(address(0), dwctokenPool, 100000*10**18);
        emit Transfer(address(0), communityHoldingFund, 32290000*10**18);
        emit Transfer(address(0), liquidityPool, 10000*10**18);
        emit Transfer(address(0), extraPool, 100000*10**18);
        User memory user = User({
            id: 1,            
            referrer: address(0),
            partnersCount: 0,
            teamCount: 0,
            directIds:new address[](0),
            directBusiness:0,
            totalDeposit:500e18,
            lastDeposit:500e18,
            reward:0,
            levelincome:0,
            roraltyincome:0,
            maturityincome:0,
            totalreward:0,
            totalwithdraw:0
            
        }); 
        users[id1] = user;
        userranks[id1].rank = 6;
        userscapping[id1].totalCapping =500e18; 
        orderInfos[id1].push(OrderInfo(
            500e18, 
            0,
            block.timestamp, 
            block.timestamp+15*interval, 
            block.timestamp,
            false,
            true,true,100,block.timestamp+20*interval,3
        ));
        map_ranks[1] = Rank({id:1,activedirect:2,activeteam:0}); 
        map_ranks[2] = Rank({id:2,activedirect:1,activeteam:5}); 
        map_ranks[3] = Rank({id:3,activedirect:2,activeteam:10}); 
        map_ranks[4] = Rank({id:4,activedirect:3,activeteam:13}); 
        map_ranks[5] = Rank({id:5,activedirect:4,activeteam:15}); 
        map_ranks[6] = Rank({id:6,activedirect:5,activeteam:18});
        liquidityPool_tokenAmount=10000e18;
        liquidityPool_daiAmount=10000e18;
        timeLiquidityLock=block.timestamp;
    } 
    function register(address referrerAddress) external  {        
        registration(msg.sender, referrerAddress);
    }
    function registration(address userAddress, address referrerAddress) private {
        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");
        User memory user = User({
            id: lastUserId,            
            referrer: referrerAddress,
            partnersCount: 0,
            teamCount: 0,
            directIds:new address[](0),
            directBusiness:0,
            totalDeposit:0,
            lastDeposit:0,
            reward:0,
            levelincome:0,
            roraltyincome:0,
            maturityincome:0,
            totalreward:0,
            totalwithdraw:0
        });        
        users[userAddress] = user;
        users[userAddress].referrer = referrerAddress;
        lastUserId++;        
        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    function deposit(uint256 _amount) external {
        dai.transferFrom(msg.sender,address(this),_amount);
        _amount=_amount*2;
        require(_amount >= users[msg.sender].lastDeposit && _amount >= minDeposit && _amount%minDeposit == 0 && _amount <= maxDeposit, "less than min");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        inactivedHolding(msg.sender);  
        _deposit(msg.sender,_amount);
    }
    
    function depositdwc(uint256 _amount) external {
        uint256 _token=_daiToTokens(_amount);
        _transfer(msg.sender,communityHoldingFund,_token);
        _amount=_amount*2;
        require(_amount >= users[msg.sender].lastDeposit && _amount >= minDeposit && _amount%minDeposit == 0 && _amount <= maxDeposit, "less than min");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        inactivedHolding(msg.sender);  
        _depositdwc(msg.sender,_amount);
    }
    function deposit2(uint rewardindex) external {
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        inactivedHolding(msg.sender); 
        bool _flag=false; 
        OrderInfo storage order = orderInfos[msg.sender][rewardindex];		 
		if(!order.ishelp)
        {
			if(block.timestamp>=order.freeze_time && block.timestamp<order.freeze_time+2*interval) { 
                _flag=true;
		    }
			else {
                _flag=false;
            }
            dai.transferFrom(msg.sender, address(this), order.amount/2);
            orderInfos[msg.sender][rewardindex].ishelp=true;
            uint256 _token=_daiToTokens(order.amount/2);
            liquidityPool_daiAmount+=order.amount/2;
            if(balanceOf[dwctokenPool]>=_token) {
                liquidityPool_tokenAmount+=_token*90/100;        
                _transfer(dwctokenPool,communityHoldingFund, _token*10/100); 
                _transfer(dwctokenPool,liquidityPool, _token*90/100);
            }
            else {
                liquidityPool_tokenAmount-=_token;  
                _transfer(liquidityPool,communityHoldingFund, _token);
            }
            if(!_flag){
                order.reward_time=block.timestamp;
                order.withdraw_time=block.timestamp+20*interval;
                order.isactive=true;
            }
		}
    }
   
    function _deposit(address userAddress,uint256 _amount) private {        
        
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);            
            _updateTeamNum(msg.sender,1);
        }  
        else {
            _updateTeamNum(msg.sender,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;
        uint256 _rate=coinRate();
        uint256 _token=_daiToTokens(_amount/2);
        liquidityPool_daiAmount+=_amount/2;
        if(balanceOf[dwctokenPool]>=_token) {
            liquidityPool_tokenAmount+=_token*90/100;        
            _transfer(dwctokenPool,communityHoldingFund, _token*10/100); 
            _transfer(dwctokenPool,liquidityPool, _token*90/100);
        }
        else {
            liquidityPool_tokenAmount-=_token;  
            _transfer(liquidityPool,communityHoldingFund, _token);
        }
        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp, 
            block.timestamp+15*interval, 
            block.timestamp,
            false,
            true,
            true,100,block.timestamp+20*interval,3
        ));
        for(uint i=0;i<5;i++)
        {
            _transfer(communityHoldingFund,feewallet[i], _token*2*feePercents[i]/10000); 
        }
        _distributelevelreward(userAddress,_amount,_rate); 
        _distributeroyaltyreward(userAddress,_amount,_rate);        
        emit Deposit(userAddress,_amount,_token*2);
        
    }
    function _depositdwc(address userAddress,uint256 _amount) private {        
        
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);
            _updateTeamNum(msg.sender,1);
        }  
        else {
            _updateTeamNum(msg.sender,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;  
        uint256 _rate=coinRate();        
        uint256 _token=_daiToTokens(_amount/2);

        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp, 
            block.timestamp+15*interval, 
            block.timestamp,
            false,
            true,
            false,100,block.timestamp+20*interval,3
        ));
        for(uint i=0;i<5;i++)
        {
            _transfer(communityHoldingFund,feewallet[i], _token*2*feePercents[i]/10000); 
        } 
        _distributelevelreward(userAddress,_amount,_rate); 
        _distributeroyaltyreward(userAddress,_amount,_rate);        
        emit Deposit(userAddress,_amount,_token*2);
        
    }
    function _distributelevelreward(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        for(uint8 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(userranks[upline].rank>=levelRank[i])
                {
                    if(users[upline].totalDeposit>0)
                    {                        
                        uint256 reward=_amount*levelPercents[i]/10000;                        
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].levelincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),2); 
                        }
                    }
                }
                upline = users[upline].referrer;                
            }else{
                break;
            }
        }
    }
    function _distributeroyaltyreward(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        uint levelranks=0;
        uint isbreak=0;
        uint256 differentincome=0;
        uint256 secondlevelincome=0;
        for(uint8 i = 0; i < 50; i++){            
            if(upline != address(0)){
                if(userranks[upline].rank==5 || userranks[upline].rank==6) {
                    if(levelranks==0)
                    {
                        if(userranks[upline].rank==6) {                   
                            differentincome=2;
                            secondlevelincome=1;
                            levelranks=5;
                        }
                        else {
                            differentincome=1;
                            secondlevelincome=2;
                            levelranks=6;
                        }
                    }
                    else {
                        if(userranks[upline].rank==levelranks) {                   
                            differentincome=secondlevelincome;
                            isbreak=1;                        
                        }
                    }
                    if(differentincome>0){
                        uint256 reward=_amount*differentincome/100;  
                        differentincome=0;                      
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].roraltyincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),3); 
                        }
                        if(isbreak==1 || upline == id1) break;
                    }
                }
                upline = users[upline].referrer;    
                        
            }else{
                break;
            }
        }
    }
    function _distributelevelwithdraw(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        for(uint8 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(userranks[upline].rank>=levelRank[i])
                {
                    if(users[upline].totalDeposit>0)
                    {                        
                        uint256 reward=_amount*levelwPercents[i]/10000;                        
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].maturityincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),4); 
                        }
                    }
                }
                upline = users[upline].referrer;                
            }else{
                break;
            }
        }
    }
    function _calLevelNow(address _user) private {        
        uint256 totaldirect  = users[_user].partnersCount;
        uint256 directBusiness  = users[_user].directBusiness;
        uint currentRank = userranks[_user].rank;
        if(currentRank>=1 && currentRank<6){            
            uint nextRank = currentRank+1;
            (, uint256 otherTeam) = getTeamCount(_user);
            uint activedirect=getActiveCount(_user,1);
            if(activedirect>=map_ranks[nextRank].activedirect && otherTeam>=map_ranks[nextRank].activeteam){
                userranks[_user].rank = nextRank;
            }
            
        }else if(totaldirect>=map_ranks[1].activedirect && directBusiness>=1000e18 && currentRank==0){
            userranks[_user].rank=1;
        }
    }
    function getTeamCount(address _user) public view returns(uint256, uint256){        
        uint256 maxTeam;
        uint256 otherTeam;
        uint256 totalTeam;
        for(uint256 i = 0; i < users[_user].directIds.length; i++){
            uint256 userTotalTeam =users[users[_user].directIds[i]].teamCount+1;            
            totalTeam+=userTotalTeam;
            if(userTotalTeam > maxTeam){
                maxTeam = userTotalTeam;
            }
        }
        otherTeam = totalTeam-maxTeam;
        return(maxTeam, otherTeam);
    }
    function getActiveCount(address _user,uint _rank) public view returns(uint256){        
        uint256 activedirect=0;
        for(uint256 i = 0; i < users[_user].directIds.length; i++){
            if(userranks[users[_user].directIds[i]].rank >= _rank){
                activedirect += 1;
            }
        }
        return activedirect;
    }
    function _updateTeamNum(address _user,uint isnew) private {
        address upline = users[_user].referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(isnew==1)
                    users[upline].teamCount = users[upline].teamCount+1;
                _calLevelNow(upline);
                if(upline == id1) break;
                upline = users[upline].referrer;
            }else{
                break;
            }
        }
    }
	
    function _daiToTokens(uint256 _daiamount) public view returns(uint256)
    {
        return _daiamount*1e18/coinRate();      
    }
    function _tokensTodai(uint _tokenAmount) public view returns(uint)
    {
        return _tokenAmount*coinRate()/1e18;
    }
    
    function coinRate() public view returns(uint)
    {
        return liquidityPool_daiAmount*1e18/liquidityPool_tokenAmount;
    }
    function maxPayoutOf(address _user) external returns(uint256) {    
        inactivedHolding(_user);    
        if(userranks[_user].rank==0 || userranks[_user].rank==1)
            return (userscapping[_user].totalCapping*2-userscapping[_user].useCapping);
        else if(userranks[_user].rank==2 || userranks[_user].rank==3)
            return (userscapping[_user].totalCapping*3-userscapping[_user].useCapping);
        else if(userranks[_user].rank==4 || userranks[_user].rank==5)
            return (userscapping[_user].totalCapping*4-userscapping[_user].useCapping);
        else 
            return (userscapping[_user].totalCapping*5-userscapping[_user].useCapping);
    }
    function inactivedHolding(address _user) public {
        for(uint256 i = 0; i < orderInfos[_user].length; i++){
    	    OrderInfo storage order = orderInfos[_user][i];
            if(!order.ishelp && order.isactive)
            {
    	    	if(block.timestamp>order.freeze_time+2*interval)
    	        {
    	    	    order.isactive=false;
                }  
    	    }
        }   
    }     
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }    
    function getOrderLength(address _user) external view returns(uint256) {
        return orderInfos[_user].length;
    }  
    function dailyPayoutOf(address _user,uint rewardindex) private returns(uint256) {
        
		uint256 reward=0;
        OrderInfo storage order = orderInfos[_user][rewardindex];
        uint256 _remainingCapping = this.maxPayoutOf(_user);             
        if(_remainingCapping>0)
        {
            uint period=(order.withdraw_time - order.reward_time) / timeStepdaily;
            if(period>200)
            period=200;
            uint256 dailypayout =(order.amount*order.dayRewardPercents*period / 10000)-order.holdingbonus; 
            if(_remainingCapping<dailypayout){
                dailypayout = _remainingCapping;                            
            }
            if(dailypayout>0)
            { 
                reward=dailypayout;
            }                    
        }
        else {
            order.isactive=true;
        }
		return (reward);
    }
    function rewardWithdraw(uint rewardindex) public
    {
		OrderInfo storage order = orderInfos[msg.sender][rewardindex];
		if(order.isactive && order.ishelp && order.withdraw_time<block.timestamp){
            (uint256 dailypayout)=dailyPayoutOf(msg.sender,rewardindex); 
            uint256 _rate=coinRate();
		    users[msg.sender].reward +=dailypayout;
		    users[msg.sender].totalreward +=dailypayout;
            userscapping[msg.sender].useCapping +=dailypayout;
            emit Transaction(msg.sender,msg.sender,dailypayout,1,1); 
			order.withdraw_time+=(order.withno)*10*interval;    
            order.withno+=1;
            order.holdingbonus+=dailypayout;              
            users[msg.sender].totalwithdraw+=dailypayout;
            uint256 _payout=dailypayout*1e18/_rate;
            _transfer(communityHoldingFund,msg.sender,_payout);
            _transfer(communityHoldingFund,withdrawfee,_payout*3/100);
            _distributelevelwithdraw(msg.sender,dailypayout,_rate);
            
            emit Withdraw(msg.sender,dailypayout);
		}
    }
    function tokenSwap(uint256 _tokenAmount) public
    {
        require(msg.sender != dwctokenPool && msg.sender != communityHoldingFund && msg.sender != liquidityPool,"Access Denied");
        uint256 _dai;
		require(balanceOf[msg.sender]>=_tokenAmount, "Insufficient token balance!"); 
        uint256 deduction=_tokenAmount*2/100;
        if((_burnToken+deduction)>10000000e18){
            deduction=10000000e18-_burnToken;
        }
        if(deduction>0){      
            uint256 tokenAmount=_tokenAmount-deduction; 
            _dai=_tokensTodai(tokenAmount);
            liquidityPool_tokenAmount+=tokenAmount;
            liquidityPool_daiAmount-=_dai;
            _dai=_tokensTodai(tokenAmount);
            _transfer(msg.sender,liquidityPool,tokenAmount);
            dai.transfer(msg.sender, _dai); 
            _burnToken+=deduction;
            _burn(msg.sender,deduction);
            emit Transfer(msg.sender,address(0), deduction);
        }
        else {
            _dai=_tokensTodai(_tokenAmount);
            liquidityPool_tokenAmount+=_tokenAmount;
            liquidityPool_daiAmount-=_dai;
            _dai=_tokensTodai(_tokenAmount);
            _transfer(msg.sender,liquidityPool,_tokenAmount);
            dai.transfer(msg.sender, _dai);            
        }
        emit Swap(msg.sender,_tokenAmount,_dai);
    }
    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(msg.sender != dwctokenPool && msg.sender != communityHoldingFund && msg.sender != liquidityPool,"Access Denied");
        _transfer(msg.sender,_to,_value);
        return true;
    }
    function _transfer(address _from,address _to, uint256 _value) internal {
        require(balanceOf[_from] >= _value);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(_from, _to, _value);
    }
    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }    
    function transferFrom(address _from,address _to,uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);
        _transfer(msg.sender,_to,_value);
        allowance[_from][msg.sender] -= _value;
        return true;
    }
    
    function burn(uint256 amount,address account) public returns (bool) {
        if (msg.sender != dwctokenPool) {revert("Access Denied");}
        _burn(account, amount);
        return true;
    }
    function _burn(address account, uint256 amount) internal virtual 
    {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = balanceOf[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        require(totalSupply>=amount, "Invalid amount of tokens!");
        balanceOf[account] = accountBalance - amount;        
        totalSupply -= amount;
    }
    function migrate(address userAddress,address referrerAddress) external  {   
        require(msg.sender == creater, "Not Authorized");
        registration(userAddress, referrerAddress);
    }
    function _depositmigrate(address userAddress,uint256 _amount) external {        
        require(msg.sender == creater, "Not Authorized");
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);            
            _updateTeamNum(msg.sender,1);
        }  
        else {
            _updateTeamNum(msg.sender,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;
    
        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp, 
            block.timestamp+15*interval, 
            block.timestamp,
            false,
            true,
            true,100,block.timestamp+20*interval,3
        ));       
        emit Deposit(userAddress,_amount,_amount);
        
    }
    function _depositmigrate2(address userAddress,uint rewardindex) external {
        require(msg.sender == creater, "Not Authorized");
        require(isUserExists(userAddress), "user is not exists. Register first.");
        inactivedHolding(userAddress); 
        bool _flag=false; 
        OrderInfo storage order = orderInfos[userAddress][rewardindex];		 
		if(!order.ishelp)
        {
			if(block.timestamp>=order.freeze_time && block.timestamp<order.freeze_time+2*interval) { 
                _flag=true;
		    }
			else {
                _flag=false;
            }
            orderInfos[userAddress][rewardindex].ishelp=true;
            if(!_flag){
                order.reward_time=block.timestamp;
                order.withdraw_time=block.timestamp+20*interval;
                order.isactive=true;
            }
		}
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_daiAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"userId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referrerId","type":"uint256"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Type","type":"uint8"}],"name":"Transaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_burnToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_daiamount","type":"uint256"}],"name":"_daiToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_depositmigrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"_depositmigrate2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"_tokensTodai","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityHoldingFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creater","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"deposit2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositdwc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dwctokenPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feewallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_rank","type":"uint256"}],"name":"getActiveCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getOrderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTeamCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"id1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"inactivedHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool_daiAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool_tokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_ranks","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"activedirect","type":"uint256"},{"internalType":"uint256","name":"activeteam","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"maxPayoutOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderInfos","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"holdingbonus","type":"uint256"},{"internalType":"uint256","name":"deposit_time","type":"uint256"},{"internalType":"uint256","name":"freeze_time","type":"uint256"},{"internalType":"uint256","name":"reward_time","type":"uint256"},{"internalType":"bool","name":"ishelp","type":"bool"},{"internalType":"bool","name":"isactive","type":"bool"},{"internalType":"bool","name":"isdai","type":"bool"},{"internalType":"uint256","name":"dayRewardPercents","type":"uint256"},{"internalType":"uint256","name":"withdraw_time","type":"uint256"},{"internalType":"uint256","name":"withno","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"rewardWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"tokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userranks","outputs":[{"internalType":"uint256","name":"rank","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"partnersCount","type":"uint256"},{"internalType":"uint256","name":"teamCount","type":"uint256"},{"internalType":"uint256","name":"totalDeposit","type":"uint256"},{"internalType":"uint256","name":"lastDeposit","type":"uint256"},{"internalType":"uint256","name":"directBusiness","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"levelincome","type":"uint256"},{"internalType":"uint256","name":"roraltyincome","type":"uint256"},{"internalType":"uint256","name":"maturityincome","type":"uint256"},{"internalType":"uint256","name":"totalreward","type":"uint256"},{"internalType":"uint256","name":"totalwithdraw","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userscapping","outputs":[{"internalType":"uint256","name":"totalCapping","type":"uint256"},{"internalType":"uint256","name":"useCapping","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawfee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60c0604052600360808190526244574360e81b60a090815262000026916001919062000bcc565b506040805180820190915260038082526244574360e81b6020909201918252620000539160029162000bcc565b506a1ae22487c1042af08000006003556004805460ff19166012179055600d80546001600160a01b0319908116739ed2cfa3ebde315fdbfc60859f093e07a52d131f17909155600e80548216737e1df73df40f15ba5252327d5f618ac359f994eb179055600f80548216732ea5819ed9ac1db76ea7d8bb73df1b2ba1369904179055601080548216732f1fd2e230e0c91924ee4ee00d47f5a9992414d7179055601180549091167355a75f66afd736db915e84e209ba1c3c95e9d3801790556040805160a08101825273ea33cb8211a73e1cbcdeaa0a613a070df2adb3b1815273f00c7cbdea8d7f0cc5ffa5e7c46d96188dc747326020820152730b7b31458fdf2f14c88b00602cc990c74cce3b75918101919091527395acf6b6e689293eb67a3d2396cd03115dbc87d06060820152731e313b8b0fbc14cfa26dcdb8fe4ed4b73b4ae9226080820152620001ad90601390600562000c51565b506040805160a08101825261012c8152603260208201819052918101829052606081018290526080810191909152620001eb90601890600562000caa565b50601d80546001600160a01b0319167338d51f8f961e764a659bbc0c95ffc0156f45f7541790556002601e5560016020908155604080516102a0810182526101f4815260c8928101929092526064908201526032606082015260196080820181905260a0820152601460c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082018190526102608201819052610280820152620002d890602190601562000ce1565b50604080516102a0810182526103e88152606460208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526032610160820181905261018082018190526101a082018190526101c082018190526101e0820181905261020082018190526102208201819052610240820181905261026082018190526102808201526200039490603690601562000ce1565b50604080516102a08101825260008152600160208201819052918101919091526002606082018190526080820152600360a0820181905260c0820181905260e08201526004610100820181905261012082015260056101408201819052610160820181905261018082018190526101a082018190526101c082015260066101e0820181905261020082018190526102208201819052610240820181905261026082018190526102808201526200044f90604b90601562000d17565b503480156200045d57600080fd5b506040516200468f3803806200468f833981810160405260208110156200048357600080fd5b5051601280546001600160a01b03199081163317909155600080546001600160a01b0380851691909316178155600f80548316825260606020908152604080842069152d02c7e14af680000090819055600e54861685528185206a1ab5ac685077da5140000090556010548616855281852069021e19e0c9bab24000009055601154861685528185208190559254815193845290519416936000805160206200466f8339815191529281900390910190a3600e54604080516a1ab5ac685077da51400000815290516001600160a01b03909216916000916000805160206200466f833981519152919081900360200190a36010546040805169021e19e0c9bab2400000815290516001600160a01b03909216916000916000805160206200466f833981519152919081900360200190a36011546040805169152d02c7e14af6800000815290516001600160a01b03909216916000916000805160206200466f833981519152919081900360200190a3620005fc62000d4d565b604051806101c001604052806001815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b03811180156200064557600080fd5b5060405190808252806020026020018201604052801562000670578160200160208202803683370190505b508152681b1ae4d6e2ef500000602080830182905260408084019290925260006060808501829052608080860183905260a0860183905260c0860183905260e086018390526101008601839052610120909501829052600d546001600160a01b039081168352600584529184902086518155868401516001820180546001600160a01b031916919094161790925592850151600282015591840151600383015591830151805193945084939192620007319260048501929091019062000dc5565b5060a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d01559050506006806000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060000181905550681b1ae4d6e2ef50000060076000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000018190555060086000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020604051806101600160405280681b1ae4d6e2ef50000081526020016000815260200142815260200161012c600f02420181526020014281526020016000151581526020016001151581526020016001151581526020016064815260200161012c6014024201815260200160038152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff02191690831515021790555061010082015181600601556101208201518160070155610140820151816008015550506040518060600160405280600181526020016002815260200160008152506009600060018152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060028152602001600181526020016005815250600960006002815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505060405180606001604052806003815260200160028152602001600a815250600960006003815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505060405180606001604052806004815260200160038152602001600d815250600960006004815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505060405180606001604052806005815260200160048152602001600f8152506009600060058152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060068152602001600581526020016012815250600960006006815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505069021e19e0c9bab2400000600a8190555069021e19e0c9bab2400000600b8190555042601f81905550505062000e54565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000c0f57805160ff191683800117855562000c3f565b8280016001018555821562000c3f579182015b8281111562000c3f57825182559160200191906001019062000c22565b5062000c4d92915062000e1c565b5090565b826005810192821562000c9c579160200282015b8281111562000c9c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000c65565b5062000c4d92915062000e33565b826005810192821562000c3f579160200282015b8281111562000c3f578251829061ffff1690559160200191906001019062000cbe565b826015810192821562000c3f579160200282018281111562000c3f578251829061ffff1690559160200191906001019062000cbe565b826015810192821562000c3f579160200282015b8281111562000c3f578251829060ff1690559160200191906001019062000d2b565b604051806101c001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b82805482825590600052602060002090810192821562000c9c579160200282018281111562000c9c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000c65565b5b8082111562000c4d576000815560010162000e1d565b5b8082111562000c4d5780546001600160a01b031916815560010162000e34565b61380b8062000e646000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c8063517999bc1161015c578063a87430ba116100ce578063dd62ed3e11610087578063dd62ed3e14610875578063de6b8a2e146108a3578063f4b9fa75146108c9578063f571545b146108d1578063fa96bd9c146108d9578063fcd3533c146108ff5761028a565b8063a87430ba1461074e578063a9059cbb146107e1578063b6b55f251461080d578063b842f3b61461082a578063b906bf7f14610847578063d9f01b7d1461084f5761028a565b806371c757ec1161012057806371c757ec1461069f5780637fe0c526146106de5780639351a77a1461070a57806395d89b41146107125780639d154deb1461071a578063a8365d16146107465761028a565b8063517999bc146105c657806358cbcb7c146105ce57806360a1cbd7146105eb578063665a11ca1461067157806370a08231146106795761028a565b806323b872dd116102005780634420e486116101b95780634420e4861461053c57806345653a6d146105625780634bdf3bf21461056a5780634c0cc366146105905780634d79348a14610598578063509222cd146105a05761028a565b806323b872dd146104715780632d20cb7e146104a75780632f057729146104d3578063313ce567146104f0578063348d44871461050e57806338c87f1a146105165761028a565b80631068361f116102525780631068361f146103da57806310d931011461040a57806318160ddd1461042757806320bdc7c71461042f578063222f6182146104375780632280b7a8146104545761028a565b806302fd7a031461028f57806306fdde03146102be578063095ea7b31461033b57806309be84681461037b5780630f322373146103b6575b600080fd5b6102ac600480360360208110156102a557600080fd5b503561092b565b60408051918252519081900360200190f35b6102c6610950565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103005781810151838201526020016102e8565b50505050905090810190601f16801561032d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103676004803603604081101561035157600080fd5b506001600160a01b0381351690602001356109dd565b604080519115158252519081900360200190f35b6103986004803603602081101561039157600080fd5b5035610a43565b60408051938452602084019290925282820152519081900360600190f35b6103be610a64565b604080516001600160a01b039092168252519081900360200190f35b610408600480360360408110156103f057600080fd5b506001600160a01b0381358116916020013516610a73565b005b6103be6004803603602081101561042057600080fd5b5035610ad1565b6102ac610aee565b6102ac610af4565b6104086004803603602081101561044d57600080fd5b5035610afa565b6104086004803603602081101561046a57600080fd5b5035610d76565b6103676004803603606081101561048757600080fd5b506001600160a01b038135811691602081013590911690604001356110a5565b610408600480360360408110156104bd57600080fd5b506001600160a01b038135169060200135611114565b610408600480360360208110156104e957600080fd5b503561129c565b6104f86113b6565b6040805160ff9092168252519081900360200190f35b6102ac6113bf565b6104086004803603602081101561052c57600080fd5b50356001600160a01b03166113c5565b6104086004803603602081101561055257600080fd5b50356001600160a01b0316611469565b6103be611476565b6102ac6004803603602081101561058057600080fd5b50356001600160a01b0316611485565b6102ac6115fe565b6102ac611604565b610367600480360360208110156105b657600080fd5b50356001600160a01b031661160a565b6103be611627565b6102ac600480360360208110156105e457600080fd5b5035611636565b6106176004803603604081101561060157600080fd5b506001600160a01b038135169060200135611652565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945291151560a0880152151560c0870152151560e086015261010085015261012084015261014083015251908190036101600190f35b6103be6116ce565b6102ac6004803603602081101561068f57600080fd5b50356001600160a01b03166116dd565b6106c5600480360360208110156106b557600080fd5b50356001600160a01b03166116ef565b6040805192835260208301919091528051918290030190f35b6102ac600480360360408110156106f457600080fd5b506001600160a01b03813516906020013561179e565b6103be611835565b6102c6611844565b6104086004803603604081101561073057600080fd5b506001600160a01b03813516906020013561189c565b6103be611bea565b6107746004803603602081101561076457600080fd5b50356001600160a01b0316611bf9565b604080519d8e526001600160a01b03909c1660208e01528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b610367600480360360408110156107f757600080fd5b506001600160a01b038135169060200135611c6a565b6104086004803603602081101561082357600080fd5b5035611cff565b6104086004803603602081101561084057600080fd5b5035611e7a565b6103be612031565b6102ac6004803603602081101561086557600080fd5b50356001600160a01b0316612040565b6102ac6004803603604081101561088b57600080fd5b506001600160a01b0381358116916020013516612052565b6102ac600480360360208110156108b957600080fd5b50356001600160a01b031661206f565b6103be61208a565b6102ac612099565b6106c5600480360360208110156108ef57600080fd5b50356001600160a01b03166120b8565b6103676004803603604081101561091557600080fd5b50803590602001356001600160a01b03166120d1565b6000610935612099565b82670de0b6b3a7640000028161094757fe5b0490505b919050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505081565b3360008181526061602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60096020526000908152604090208054600182015460029092015490919083565b6011546001600160a01b031681565b6012546001600160a01b03163314610ac3576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b610acd828261212d565b5050565b60138160058110610ade57fe5b01546001600160a01b0316905081565b60035481565b600c5481565b610b033361160a565b610b3e5760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b610b47336113c5565b336000908152600860205260408120805482919084908110610b6557fe5b60009182526020909120600990910201600581015490915060ff16610d715780600301544210158015610b9f575060038101546102580142105b15610bad5760019150610bb2565b600091505b600080548254604080516323b872dd60e01b815233600482015230602482015260029092046044830152516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050506040513d6020811015610c3b57600080fd5b505033600090815260086020526040902080546001919085908110610c5c57fe5b60009182526020822060099190910201600501805460ff1916921515929092179091558154610c8f906002905b0461092b565b8254600b805460029092049091019055600f546001600160a01b03166000908152606060205260409020549091508111610d2157600a80546064605a84028190049091018255600f54600e54610cfa936001600160a01b039283169392909116919085025b046123f6565b600f54601054610d1c916001600160a01b0390811691166064605a8502610cf4565b610d47565b600a80548290039055601054600e54610d47916001600160a01b039081169116836123f6565b82610d6f57426004830181905561177001600783015560058201805461ff0019166101001790555b505b505050565b600f546001600160a01b03163314801590610d9c5750600e546001600160a01b03163314155b8015610db357506010546001600160a01b03163314155b610df4576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b33600090815260606020526040812054821115610e58576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015290519081900360640190fd5b600c5460646002840204906a084595161401484a0000009082011115610e8a5750600c546a084595161401484a000000035b8015610fa457808303610e9c81611636565b600a805483019055600b805482900390559250610eb881611636565b601054909350610ed39033906001600160a01b0316836123f6565b600080546040805163a9059cbb60e01b81523360048201526024810187905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050506040513d6020811015610f5257600080fd5b5050600c805483019055610f663383612487565b60408051838152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350611066565b610fad83611636565b600a805485019055600b805482900390559150610fc983611636565b601054909250610fe49033906001600160a01b0316856123f6565b600080546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b15801561103957600080fd5b505af115801561104d573d6000803e3d6000fd5b505050506040513d602081101561106357600080fd5b50505b6040805184815260208101849052815133927f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a758928290030190a2505050565b6001600160a01b03831660009081526061602090815260408083203384529091528120548211156110d557600080fd5b6110e03384846123f6565b506001600160a01b038316600090815260616020908152604080832033845290915290208054829003905560019392505050565b6012546001600160a01b03163314611164576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b61116d8261160a565b6111a85760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b6111b1826113c5565b6001600160a01b03821660009081526008602052604081208054829190849081106111d857fe5b60009182526020909120600990910201600581015490915060ff16610d6f5780600301544210158015611212575060038101546102580142105b156112205760019150611225565b600091505b6001600160a01b03841660009081526008602052604090208054600191908590811061124d57fe5b60009182526020909120600990910201600501805460ff191691151591909117905581610d6f57426004820181905561177001600782015560058101805461ff00191661010017905550505050565b60006112a78261092b565b600e549091506112c29033906001600160a01b0316836123f6565b3360009081526005602052604090206006015460029092029182108015906112f357506802b5e3af16b18800008210155b801561130857506802b5e3af16b18800008206155b801561131e575069010f0cf064dd592000008211155b61135f576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b6113683361160a565b6113a35760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b6113ac336113c5565b610acd33836125a7565b60045460ff1681565b601e5481565b60005b6001600160a01b038216600090815260086020526040902054811015610acd576001600160a01b038216600090815260086020526040812080548390811061140c57fe5b60009182526020909120600990910201600581015490915060ff1615801561143d57506005810154610100900460ff165b15611460576003810154610258014211156114605760058101805461ff00191690555b506001016113c8565b611473338261212d565b50565b6012546001600160a01b031681565b6000611490826113c5565b6001600160a01b03821660009081526006602052604090205415806114cd57506001600160a01b0382166000908152600660205260409020546001145b156114fb57506001600160a01b0381166000908152600760205260409020600181015490546002020361094b565b6001600160a01b0382166000908152600660205260409020546002148061153a57506001600160a01b0382166000908152600660205260409020546003145b1561156857506001600160a01b0381166000908152600760205260409020600181015490546003020361094b565b6001600160a01b038216600090815260066020526040902054600414806115a757506001600160a01b0382166000908152600660205260409020546005145b156115d557506001600160a01b0381166000908152600760205260409020600181015490546004020361094b565b506001600160a01b0381166000908152600760205260409020600181015490546005020361094b565b600b5481565b600a5481565b6001600160a01b0316600090815260056020526040902054151590565b600d546001600160a01b031681565b6000670de0b6b3a7640000611649612099565b83028161094757fe5b6008602052816000526040600020818154811061166b57fe5b600091825260209091206009909102018054600182015460028301546003840154600485015460058601546006870154600788015460089098015496995094975092959194909360ff80851694610100810482169462010000909104909116928b565b6010546001600160a01b031681565b60606020526000908152604090205481565b600080808080805b6001600160a01b03871660009081526005602052604090206004015481101561178f576001600160a01b0387166000908152600560208190526040822060040180548391908590811061174657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003015492830160019081019301905084811115611786578094505b506001016116f7565b50919350508290039050915091565b600080805b6001600160a01b03851660009081526005602052604090206004015481101561182d576001600160a01b0385166000908152600560205260408120600401805486926006929091859081106117f457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205410611825576001820191505b6001016117a3565b509392505050565b600f546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156109d55780601f106109aa576101008083540402835291602001916109d5565b6012546001600160a01b031633146118ec576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461198f576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b0319169286169290921790915561198a9033906128f1565b61199a565b61199a3360006128f1565b8160056000856001600160a01b03166001600160a01b03168152602001908152602001600020600501600082825401925050819055508160076000856001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825401925050819055508160056000856001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000846001600160a01b03166001600160a01b031681526020019081526020016000206040518061016001604052808481526020016000815260200142815260200161012c600f02420181526020014281526020016000151581526020016001151581526020016001151581526020016064815260200161012c6014024201815260200160038152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160060155610120820151816007015561014082015181600801555050826001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158384604051808381526020018281526020019250505060405180910390a2505050565b600e546001600160a01b031681565b60056020819052600091825260409091208054600182015460028301546003840154948401546006850154600786015460088701546009880154600a890154600b8a0154600c8b0154600d909b0154999b6001600160a01b039099169a97999697959694959394929391929091908d565b600f546000906001600160a01b03163314801590611c935750600e546001600160a01b03163314155b8015611caa57506010546001600160a01b03163314155b611ceb576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cf63384846123f6565b50600192915050565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015611d5a57600080fd5b505af1158015611d6e573d6000803e3d6000fd5b505050506040513d6020811015611d8457600080fd5b5050336000908152600560205260409020600601546002909102908110801590611db757506802b5e3af16b18800008110155b8015611dcc57506802b5e3af16b18800008106155b8015611de2575069010f0cf064dd592000008111155b611e23576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611e2c3361160a565b611e675760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b611e70336113c5565b61147333826129ae565b336000908152600860205260408120805483908110611e9557fe5b906000526020600020906009020190508060050160019054906101000a900460ff168015611ec75750600581015460ff165b8015611ed65750428160070154105b15610acd576000611ee73384612d1b565b90506000611ef3612099565b33600081815260056020908152604080832060088101805489019055600c01805488019055600782529182902060019081018054880190558251878152918201819052818301529051929350909182916000805160206137b6833981519152919081900360600190a3600883018054600785018054610bb8830201905560019081019091558301805483019055336000908152600560205260408120600d0180548401905581670de0b6b3a7640000840281611fab57fe5b600e549190049150611fc7906001600160a01b031633836123f6565b600e54601d54611fe9916001600160a01b039081169116606460038502610cf4565b611ff4338484612e59565b60408051848152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25050505050565b601d546001600160a01b031681565b60066020526000908152604090205481565b606160209081526000928352604080842090915290825290205481565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b031681565b6000600a54600b54670de0b6b3a764000002816120b257fe5b04905090565b6007602052600090815260409020805460019091015482565b600f546000906001600160a01b03163314612123576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cf68284612487565b6121368261160a565b15612176576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b61217f8161160a565b6121c6576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6121ce613653565b604051806101c00160405280601e548152602001836001600160a01b031681526020016000815260200160008152602001600067ffffffffffffffff8111801561221757600080fd5b50604051908082528060200260200182016040528015612241578160200160208202803683370190505b5081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090508060056000856001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003015560808201518160040190805190602001906123139291906136cb565b5060a082015160058281019190915560c0830151600683015560e0830151600783015561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a090920151600d909101556001600160a01b03848116600081815260209384526040808220600180820180546001600160a01b031916968a169687179055601e805490910190555484835291819020548151908152905191947f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a92918290030190a4505050565b6001600160a01b03831660009081526060602052604090205481111561241b57600080fd5b6001600160a01b03808416600081815260606020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050565b6001600160a01b0382166124cc5760405162461bcd60e51b81526004018080602001828103825260218152602001806137726021913960400191505060405180910390fd5b6001600160a01b038216600090815260606020526040902054818110156125245760405162461bcd60e51b81526004018080602001828103825260228152602001806137506022913960400191505060405180910390fd5b81600354101561257b576040805162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015290519081900360640190fd5b6001600160a01b0390921660009081526060602052604090209181900390915560038054919091039055565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461264a576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b031916928616929092179091556126459033906128f1565b612655565b6126553360006128f1565b6001600160a01b038316600090815260056020818152604080842090920180548601905560079052812080548401905561268d612099565b9050600061269c600285610c89565b90508360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b031681526020019081526020016000206040518061016001604052808681526020016000815260200142815260200161012c600f02420181526020014281526020016000151581526020016001151581526020016000151581526020016064815260200161012c6014024201815260200160038152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff021916908315150217905550610100820151816006015561012082015181600701556101408201518160080155505060005b600581101561288e57600e54612886906001600160a01b03166013836005811061285d57fe5b01546001600160a01b03166127106018856005811061287857fe5b0154866002020281610cf457fe5b600101612837565b5061289a858584613078565b6128a5858584613286565b6040805185815260028302602082015281516001600160a01b038816927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a25050505050565b6001600160a01b03808316600090815260056020526040812060010154909116905b6015811015610d6f576001600160a01b038216156129a1578260011415612957576001600160a01b0382166000908152600560205260409020600301805460010190555b6129608261351f565b600d546001600160a01b038381169116141561297b57610d6f565b6001600160a01b03918216600090815260056020526040902060010154909116906129a6565b610d6f565b600101612913565b6001600160a01b0380831660008181526005602081905260408083206001810154909516808452908320600701805487019055929091529190910154612a51576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612a4c9033906128f1565b612a5c565b612a5c3360006128f1565b6001600160a01b0383166000908152600560208181526040808420909201805486019055600790528120805484019055612a94612099565b90506000612aa3600285610c89565b600b805460028704019055600f546001600160a01b03166000908152606060205260409020549091508111612b2e57600a80546064605a84028190049091018255600f54600e54612b07936001600160a01b03928316939290911691908502610cf4565b600f54601054612b29916001600160a01b0390811691166064605a8502610cf4565b612b54565b600a80548290039055601054600e54612b54916001600160a01b039081169116836123f6565b8360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b031681526020019081526020016000206040518061016001604052808681526020016000815260200142815260200161012c600f02420181526020014281526020016000151581526020016001151581526020016001151581526020016064815260200161012c6014024201815260200160038152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff021916908315150217905550610100820151816006015561012082015181600701556101408201518160080155505060005b600581101561288e57600e54612d13906001600160a01b03166013836005811061285d57fe5b600101612ced565b6001600160a01b038216600090815260086020526040812080548291829185908110612d4357fe5b906000526020600020906009020190506000306001600160a01b0316634bdf3bf2876040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612da457600080fd5b505af1158015612db8573d6000803e3d6000fd5b505050506040513d6020811015612dce57600080fd5b505190508015612e3d57600061012c836004015484600701540381612def57fe5b04905060c8811115612dff575060c85b600083600101546127108386600601548760000154020281612e1d57fe5b0403905080831015612e2c5750815b8015612e36578094505b5050612e4f565b60058201805461ff0019166101001790555b5090949350505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015613071576001600160a01b0382161561306457604b8160ff1660158110612ea657fe5b01546001600160a01b0383166000908152600660205260409020541061303e576001600160a01b038216600090815260056020819052604090912001541561303e57600061271060368360ff1660158110612efd57fe5b0154860281612f0857fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050506040513d6020811015612f8657600080fd5b50519050801561303b5781811015612f9c578091505b6001600160a01b038085166000908152600560209081526040808320600b8101805488019055600c0180548701905560079091529020600101805484019055600e54612ff791168587670de0b6b3a7640000860281610cf457fe5b6040805183815260ff6001860116602082015260048183015290516001600160a01b03808a1692908716916000805160206137b68339815191529181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690613069565b613071565b600101612e7b565b5050505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015613071576001600160a01b0382161561306457604b8160ff16601581106130c557fe5b01546001600160a01b0383166000908152600660205260409020541061325d576001600160a01b038216600090815260056020819052604090912001541561325d57600061271060218360ff166015811061311c57fe5b015486028161312757fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561317b57600080fd5b505af115801561318f573d6000803e3d6000fd5b505050506040513d60208110156131a557600080fd5b50519050801561325a57818110156131bb578091505b6001600160a01b03808516600090815260056020908152604080832060098101805488019055600c0180548701905560079091529020600101805484019055600e5461321691168587670de0b6b3a7640000860281610cf457fe5b6040805183815260ff6001860116602082015260028183015290516001600160a01b03808a1692908716916000805160206137b68339815191529181900360600190a35b50505b6001600160a01b039182166000908152600560205260409020600101549091169060010161309a565b6001600160a01b0380841660009081526005602052604081206001015490911690808080805b60328160ff161015613514576001600160a01b03861615613507576001600160a01b0386166000908152600660205260409020546005148061330757506001600160a01b038616600090815260066020819052604090912054145b156134e15784613356576001600160a01b038616600090815260066020819052604090912054141561334457600292506001915060059450613351565b6001925060029150600694505b61337e565b6001600160a01b03861660009081526006602052604090205485141561337e57819250600193505b82156134e157604080516325ef9df960e11b81526001600160a01b038816600482015290516000946064908b02049185913091634bdf3bf291602480830192602092919082900301818787803b1580156133d757600080fd5b505af11580156133eb573d6000803e3d6000fd5b505050506040513d602081101561340157600080fd5b5051905080156134b65781811015613417578091505b6001600160a01b038089166000908152600560209081526040808320600a8101805488019055600c0180548701905560079091529020600101805484019055600e546134729116898b670de0b6b3a7640000860281610cf457fe5b6040805183815260ff6001860116602082015260038183015290516001600160a01b03808e1692908b16916000805160206137b68339815191529181900360600190a35b85600114806134d25750600d546001600160a01b038981169116145b156134de575050613514565b50505b6001600160a01b039586166000908152600560205260409020600101549095169461350c565b613514565b6001016132ac565b505050505050505050565b6001600160a01b0381166000908152600560209081526040808320600281015460079091015460069093529220546001811080159061355e5750600681105b156135e057600181016000613572866116ef565b915050600061358287600161179e565b60008481526009602052604090206001015490915081108015906135b757506000838152600960205260409020600201548210155b156135d8576001600160a01b03871660009081526006602052604090208390555b505050610d6f565b600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a375483108015906136245750683635c9adc5dea000008210155b801561362e575080155b15610d6f575050506001600160a01b0316600090815260066020526040902060019055565b604051806101c001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613720579160200282015b8281111561372057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136eb565b5061372c929150613730565b5090565b5b8082111561372c5780546001600160a01b031916815560010161373156fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737375736572206973206e6f74206578697374732e2052656769737465722066697273742ed37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb712a2646970667358221220a54d326fe5e2bbf513c803de706fd0dfdb208b43f13bfe59ae987d78ad3ff26464736f6c634300060c0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061028a5760003560e01c8063517999bc1161015c578063a87430ba116100ce578063dd62ed3e11610087578063dd62ed3e14610875578063de6b8a2e146108a3578063f4b9fa75146108c9578063f571545b146108d1578063fa96bd9c146108d9578063fcd3533c146108ff5761028a565b8063a87430ba1461074e578063a9059cbb146107e1578063b6b55f251461080d578063b842f3b61461082a578063b906bf7f14610847578063d9f01b7d1461084f5761028a565b806371c757ec1161012057806371c757ec1461069f5780637fe0c526146106de5780639351a77a1461070a57806395d89b41146107125780639d154deb1461071a578063a8365d16146107465761028a565b8063517999bc146105c657806358cbcb7c146105ce57806360a1cbd7146105eb578063665a11ca1461067157806370a08231146106795761028a565b806323b872dd116102005780634420e486116101b95780634420e4861461053c57806345653a6d146105625780634bdf3bf21461056a5780634c0cc366146105905780634d79348a14610598578063509222cd146105a05761028a565b806323b872dd146104715780632d20cb7e146104a75780632f057729146104d3578063313ce567146104f0578063348d44871461050e57806338c87f1a146105165761028a565b80631068361f116102525780631068361f146103da57806310d931011461040a57806318160ddd1461042757806320bdc7c71461042f578063222f6182146104375780632280b7a8146104545761028a565b806302fd7a031461028f57806306fdde03146102be578063095ea7b31461033b57806309be84681461037b5780630f322373146103b6575b600080fd5b6102ac600480360360208110156102a557600080fd5b503561092b565b60408051918252519081900360200190f35b6102c6610950565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103005781810151838201526020016102e8565b50505050905090810190601f16801561032d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103676004803603604081101561035157600080fd5b506001600160a01b0381351690602001356109dd565b604080519115158252519081900360200190f35b6103986004803603602081101561039157600080fd5b5035610a43565b60408051938452602084019290925282820152519081900360600190f35b6103be610a64565b604080516001600160a01b039092168252519081900360200190f35b610408600480360360408110156103f057600080fd5b506001600160a01b0381358116916020013516610a73565b005b6103be6004803603602081101561042057600080fd5b5035610ad1565b6102ac610aee565b6102ac610af4565b6104086004803603602081101561044d57600080fd5b5035610afa565b6104086004803603602081101561046a57600080fd5b5035610d76565b6103676004803603606081101561048757600080fd5b506001600160a01b038135811691602081013590911690604001356110a5565b610408600480360360408110156104bd57600080fd5b506001600160a01b038135169060200135611114565b610408600480360360208110156104e957600080fd5b503561129c565b6104f86113b6565b6040805160ff9092168252519081900360200190f35b6102ac6113bf565b6104086004803603602081101561052c57600080fd5b50356001600160a01b03166113c5565b6104086004803603602081101561055257600080fd5b50356001600160a01b0316611469565b6103be611476565b6102ac6004803603602081101561058057600080fd5b50356001600160a01b0316611485565b6102ac6115fe565b6102ac611604565b610367600480360360208110156105b657600080fd5b50356001600160a01b031661160a565b6103be611627565b6102ac600480360360208110156105e457600080fd5b5035611636565b6106176004803603604081101561060157600080fd5b506001600160a01b038135169060200135611652565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945291151560a0880152151560c0870152151560e086015261010085015261012084015261014083015251908190036101600190f35b6103be6116ce565b6102ac6004803603602081101561068f57600080fd5b50356001600160a01b03166116dd565b6106c5600480360360208110156106b557600080fd5b50356001600160a01b03166116ef565b6040805192835260208301919091528051918290030190f35b6102ac600480360360408110156106f457600080fd5b506001600160a01b03813516906020013561179e565b6103be611835565b6102c6611844565b6104086004803603604081101561073057600080fd5b506001600160a01b03813516906020013561189c565b6103be611bea565b6107746004803603602081101561076457600080fd5b50356001600160a01b0316611bf9565b604080519d8e526001600160a01b03909c1660208e01528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b610367600480360360408110156107f757600080fd5b506001600160a01b038135169060200135611c6a565b6104086004803603602081101561082357600080fd5b5035611cff565b6104086004803603602081101561084057600080fd5b5035611e7a565b6103be612031565b6102ac6004803603602081101561086557600080fd5b50356001600160a01b0316612040565b6102ac6004803603604081101561088b57600080fd5b506001600160a01b0381358116916020013516612052565b6102ac600480360360208110156108b957600080fd5b50356001600160a01b031661206f565b6103be61208a565b6102ac612099565b6106c5600480360360208110156108ef57600080fd5b50356001600160a01b03166120b8565b6103676004803603604081101561091557600080fd5b50803590602001356001600160a01b03166120d1565b6000610935612099565b82670de0b6b3a7640000028161094757fe5b0490505b919050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505081565b3360008181526061602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60096020526000908152604090208054600182015460029092015490919083565b6011546001600160a01b031681565b6012546001600160a01b03163314610ac3576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b610acd828261212d565b5050565b60138160058110610ade57fe5b01546001600160a01b0316905081565b60035481565b600c5481565b610b033361160a565b610b3e5760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b610b47336113c5565b336000908152600860205260408120805482919084908110610b6557fe5b60009182526020909120600990910201600581015490915060ff16610d715780600301544210158015610b9f575060038101546102580142105b15610bad5760019150610bb2565b600091505b600080548254604080516323b872dd60e01b815233600482015230602482015260029092046044830152516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050506040513d6020811015610c3b57600080fd5b505033600090815260086020526040902080546001919085908110610c5c57fe5b60009182526020822060099190910201600501805460ff1916921515929092179091558154610c8f906002905b0461092b565b8254600b805460029092049091019055600f546001600160a01b03166000908152606060205260409020549091508111610d2157600a80546064605a84028190049091018255600f54600e54610cfa936001600160a01b039283169392909116919085025b046123f6565b600f54601054610d1c916001600160a01b0390811691166064605a8502610cf4565b610d47565b600a80548290039055601054600e54610d47916001600160a01b039081169116836123f6565b82610d6f57426004830181905561177001600783015560058201805461ff0019166101001790555b505b505050565b600f546001600160a01b03163314801590610d9c5750600e546001600160a01b03163314155b8015610db357506010546001600160a01b03163314155b610df4576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b33600090815260606020526040812054821115610e58576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015290519081900360640190fd5b600c5460646002840204906a084595161401484a0000009082011115610e8a5750600c546a084595161401484a000000035b8015610fa457808303610e9c81611636565b600a805483019055600b805482900390559250610eb881611636565b601054909350610ed39033906001600160a01b0316836123f6565b600080546040805163a9059cbb60e01b81523360048201526024810187905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050506040513d6020811015610f5257600080fd5b5050600c805483019055610f663383612487565b60408051838152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350611066565b610fad83611636565b600a805485019055600b805482900390559150610fc983611636565b601054909250610fe49033906001600160a01b0316856123f6565b600080546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b15801561103957600080fd5b505af115801561104d573d6000803e3d6000fd5b505050506040513d602081101561106357600080fd5b50505b6040805184815260208101849052815133927f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a758928290030190a2505050565b6001600160a01b03831660009081526061602090815260408083203384529091528120548211156110d557600080fd5b6110e03384846123f6565b506001600160a01b038316600090815260616020908152604080832033845290915290208054829003905560019392505050565b6012546001600160a01b03163314611164576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b61116d8261160a565b6111a85760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b6111b1826113c5565b6001600160a01b03821660009081526008602052604081208054829190849081106111d857fe5b60009182526020909120600990910201600581015490915060ff16610d6f5780600301544210158015611212575060038101546102580142105b156112205760019150611225565b600091505b6001600160a01b03841660009081526008602052604090208054600191908590811061124d57fe5b60009182526020909120600990910201600501805460ff191691151591909117905581610d6f57426004820181905561177001600782015560058101805461ff00191661010017905550505050565b60006112a78261092b565b600e549091506112c29033906001600160a01b0316836123f6565b3360009081526005602052604090206006015460029092029182108015906112f357506802b5e3af16b18800008210155b801561130857506802b5e3af16b18800008206155b801561131e575069010f0cf064dd592000008211155b61135f576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b6113683361160a565b6113a35760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b6113ac336113c5565b610acd33836125a7565b60045460ff1681565b601e5481565b60005b6001600160a01b038216600090815260086020526040902054811015610acd576001600160a01b038216600090815260086020526040812080548390811061140c57fe5b60009182526020909120600990910201600581015490915060ff1615801561143d57506005810154610100900460ff165b15611460576003810154610258014211156114605760058101805461ff00191690555b506001016113c8565b611473338261212d565b50565b6012546001600160a01b031681565b6000611490826113c5565b6001600160a01b03821660009081526006602052604090205415806114cd57506001600160a01b0382166000908152600660205260409020546001145b156114fb57506001600160a01b0381166000908152600760205260409020600181015490546002020361094b565b6001600160a01b0382166000908152600660205260409020546002148061153a57506001600160a01b0382166000908152600660205260409020546003145b1561156857506001600160a01b0381166000908152600760205260409020600181015490546003020361094b565b6001600160a01b038216600090815260066020526040902054600414806115a757506001600160a01b0382166000908152600660205260409020546005145b156115d557506001600160a01b0381166000908152600760205260409020600181015490546004020361094b565b506001600160a01b0381166000908152600760205260409020600181015490546005020361094b565b600b5481565b600a5481565b6001600160a01b0316600090815260056020526040902054151590565b600d546001600160a01b031681565b6000670de0b6b3a7640000611649612099565b83028161094757fe5b6008602052816000526040600020818154811061166b57fe5b600091825260209091206009909102018054600182015460028301546003840154600485015460058601546006870154600788015460089098015496995094975092959194909360ff80851694610100810482169462010000909104909116928b565b6010546001600160a01b031681565b60606020526000908152604090205481565b600080808080805b6001600160a01b03871660009081526005602052604090206004015481101561178f576001600160a01b0387166000908152600560208190526040822060040180548391908590811061174657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003015492830160019081019301905084811115611786578094505b506001016116f7565b50919350508290039050915091565b600080805b6001600160a01b03851660009081526005602052604090206004015481101561182d576001600160a01b0385166000908152600560205260408120600401805486926006929091859081106117f457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205410611825576001820191505b6001016117a3565b509392505050565b600f546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156109d55780601f106109aa576101008083540402835291602001916109d5565b6012546001600160a01b031633146118ec576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08105d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461198f576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b0319169286169290921790915561198a9033906128f1565b61199a565b61199a3360006128f1565b8160056000856001600160a01b03166001600160a01b03168152602001908152602001600020600501600082825401925050819055508160076000856001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825401925050819055508160056000856001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000846001600160a01b03166001600160a01b031681526020019081526020016000206040518061016001604052808481526020016000815260200142815260200161012c600f02420181526020014281526020016000151581526020016001151581526020016001151581526020016064815260200161012c6014024201815260200160038152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160060155610120820151816007015561014082015181600801555050826001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158384604051808381526020018281526020019250505060405180910390a2505050565b600e546001600160a01b031681565b60056020819052600091825260409091208054600182015460028301546003840154948401546006850154600786015460088701546009880154600a890154600b8a0154600c8b0154600d909b0154999b6001600160a01b039099169a97999697959694959394929391929091908d565b600f546000906001600160a01b03163314801590611c935750600e546001600160a01b03163314155b8015611caa57506010546001600160a01b03163314155b611ceb576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cf63384846123f6565b50600192915050565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015611d5a57600080fd5b505af1158015611d6e573d6000803e3d6000fd5b505050506040513d6020811015611d8457600080fd5b5050336000908152600560205260409020600601546002909102908110801590611db757506802b5e3af16b18800008110155b8015611dcc57506802b5e3af16b18800008106155b8015611de2575069010f0cf064dd592000008111155b611e23576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611e2c3361160a565b611e675760405162461bcd60e51b81526004018080602001828103825260238152602001806137936023913960400191505060405180910390fd5b611e70336113c5565b61147333826129ae565b336000908152600860205260408120805483908110611e9557fe5b906000526020600020906009020190508060050160019054906101000a900460ff168015611ec75750600581015460ff165b8015611ed65750428160070154105b15610acd576000611ee73384612d1b565b90506000611ef3612099565b33600081815260056020908152604080832060088101805489019055600c01805488019055600782529182902060019081018054880190558251878152918201819052818301529051929350909182916000805160206137b6833981519152919081900360600190a3600883018054600785018054610bb8830201905560019081019091558301805483019055336000908152600560205260408120600d0180548401905581670de0b6b3a7640000840281611fab57fe5b600e549190049150611fc7906001600160a01b031633836123f6565b600e54601d54611fe9916001600160a01b039081169116606460038502610cf4565b611ff4338484612e59565b60408051848152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25050505050565b601d546001600160a01b031681565b60066020526000908152604090205481565b606160209081526000928352604080842090915290825290205481565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b031681565b6000600a54600b54670de0b6b3a764000002816120b257fe5b04905090565b6007602052600090815260409020805460019091015482565b600f546000906001600160a01b03163314612123576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cf68284612487565b6121368261160a565b15612176576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b61217f8161160a565b6121c6576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6121ce613653565b604051806101c00160405280601e548152602001836001600160a01b031681526020016000815260200160008152602001600067ffffffffffffffff8111801561221757600080fd5b50604051908082528060200260200182016040528015612241578160200160208202803683370190505b5081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090508060056000856001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003015560808201518160040190805190602001906123139291906136cb565b5060a082015160058281019190915560c0830151600683015560e0830151600783015561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a090920151600d909101556001600160a01b03848116600081815260209384526040808220600180820180546001600160a01b031916968a169687179055601e805490910190555484835291819020548151908152905191947f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a92918290030190a4505050565b6001600160a01b03831660009081526060602052604090205481111561241b57600080fd5b6001600160a01b03808416600081815260606020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050565b6001600160a01b0382166124cc5760405162461bcd60e51b81526004018080602001828103825260218152602001806137726021913960400191505060405180910390fd5b6001600160a01b038216600090815260606020526040902054818110156125245760405162461bcd60e51b81526004018080602001828103825260228152602001806137506022913960400191505060405180910390fd5b81600354101561257b576040805162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015290519081900360640190fd5b6001600160a01b0390921660009081526060602052604090209181900390915560038054919091039055565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461264a576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b031916928616929092179091556126459033906128f1565b612655565b6126553360006128f1565b6001600160a01b038316600090815260056020818152604080842090920180548601905560079052812080548401905561268d612099565b9050600061269c600285610c89565b90508360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b031681526020019081526020016000206040518061016001604052808681526020016000815260200142815260200161012c600f02420181526020014281526020016000151581526020016001151581526020016000151581526020016064815260200161012c6014024201815260200160038152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff021916908315150217905550610100820151816006015561012082015181600701556101408201518160080155505060005b600581101561288e57600e54612886906001600160a01b03166013836005811061285d57fe5b01546001600160a01b03166127106018856005811061287857fe5b0154866002020281610cf457fe5b600101612837565b5061289a858584613078565b6128a5858584613286565b6040805185815260028302602082015281516001600160a01b038816927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a25050505050565b6001600160a01b03808316600090815260056020526040812060010154909116905b6015811015610d6f576001600160a01b038216156129a1578260011415612957576001600160a01b0382166000908152600560205260409020600301805460010190555b6129608261351f565b600d546001600160a01b038381169116141561297b57610d6f565b6001600160a01b03918216600090815260056020526040902060010154909116906129a6565b610d6f565b600101612913565b6001600160a01b0380831660008181526005602081905260408083206001810154909516808452908320600701805487019055929091529190910154612a51576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612a4c9033906128f1565b612a5c565b612a5c3360006128f1565b6001600160a01b0383166000908152600560208181526040808420909201805486019055600790528120805484019055612a94612099565b90506000612aa3600285610c89565b600b805460028704019055600f546001600160a01b03166000908152606060205260409020549091508111612b2e57600a80546064605a84028190049091018255600f54600e54612b07936001600160a01b03928316939290911691908502610cf4565b600f54601054612b29916001600160a01b0390811691166064605a8502610cf4565b612b54565b600a80548290039055601054600e54612b54916001600160a01b039081169116836123f6565b8360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b031681526020019081526020016000206040518061016001604052808681526020016000815260200142815260200161012c600f02420181526020014281526020016000151581526020016001151581526020016001151581526020016064815260200161012c6014024201815260200160038152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff021916908315150217905550610100820151816006015561012082015181600701556101408201518160080155505060005b600581101561288e57600e54612d13906001600160a01b03166013836005811061285d57fe5b600101612ced565b6001600160a01b038216600090815260086020526040812080548291829185908110612d4357fe5b906000526020600020906009020190506000306001600160a01b0316634bdf3bf2876040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612da457600080fd5b505af1158015612db8573d6000803e3d6000fd5b505050506040513d6020811015612dce57600080fd5b505190508015612e3d57600061012c836004015484600701540381612def57fe5b04905060c8811115612dff575060c85b600083600101546127108386600601548760000154020281612e1d57fe5b0403905080831015612e2c5750815b8015612e36578094505b5050612e4f565b60058201805461ff0019166101001790555b5090949350505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015613071576001600160a01b0382161561306457604b8160ff1660158110612ea657fe5b01546001600160a01b0383166000908152600660205260409020541061303e576001600160a01b038216600090815260056020819052604090912001541561303e57600061271060368360ff1660158110612efd57fe5b0154860281612f0857fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050506040513d6020811015612f8657600080fd5b50519050801561303b5781811015612f9c578091505b6001600160a01b038085166000908152600560209081526040808320600b8101805488019055600c0180548701905560079091529020600101805484019055600e54612ff791168587670de0b6b3a7640000860281610cf457fe5b6040805183815260ff6001860116602082015260048183015290516001600160a01b03808a1692908716916000805160206137b68339815191529181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690613069565b613071565b600101612e7b565b5050505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015613071576001600160a01b0382161561306457604b8160ff16601581106130c557fe5b01546001600160a01b0383166000908152600660205260409020541061325d576001600160a01b038216600090815260056020819052604090912001541561325d57600061271060218360ff166015811061311c57fe5b015486028161312757fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561317b57600080fd5b505af115801561318f573d6000803e3d6000fd5b505050506040513d60208110156131a557600080fd5b50519050801561325a57818110156131bb578091505b6001600160a01b03808516600090815260056020908152604080832060098101805488019055600c0180548701905560079091529020600101805484019055600e5461321691168587670de0b6b3a7640000860281610cf457fe5b6040805183815260ff6001860116602082015260028183015290516001600160a01b03808a1692908716916000805160206137b68339815191529181900360600190a35b50505b6001600160a01b039182166000908152600560205260409020600101549091169060010161309a565b6001600160a01b0380841660009081526005602052604081206001015490911690808080805b60328160ff161015613514576001600160a01b03861615613507576001600160a01b0386166000908152600660205260409020546005148061330757506001600160a01b038616600090815260066020819052604090912054145b156134e15784613356576001600160a01b038616600090815260066020819052604090912054141561334457600292506001915060059450613351565b6001925060029150600694505b61337e565b6001600160a01b03861660009081526006602052604090205485141561337e57819250600193505b82156134e157604080516325ef9df960e11b81526001600160a01b038816600482015290516000946064908b02049185913091634bdf3bf291602480830192602092919082900301818787803b1580156133d757600080fd5b505af11580156133eb573d6000803e3d6000fd5b505050506040513d602081101561340157600080fd5b5051905080156134b65781811015613417578091505b6001600160a01b038089166000908152600560209081526040808320600a8101805488019055600c0180548701905560079091529020600101805484019055600e546134729116898b670de0b6b3a7640000860281610cf457fe5b6040805183815260ff6001860116602082015260038183015290516001600160a01b03808e1692908b16916000805160206137b68339815191529181900360600190a35b85600114806134d25750600d546001600160a01b038981169116145b156134de575050613514565b50505b6001600160a01b039586166000908152600560205260409020600101549095169461350c565b613514565b6001016132ac565b505050505050505050565b6001600160a01b0381166000908152600560209081526040808320600281015460079091015460069093529220546001811080159061355e5750600681105b156135e057600181016000613572866116ef565b915050600061358287600161179e565b60008481526009602052604090206001015490915081108015906135b757506000838152600960205260409020600201548210155b156135d8576001600160a01b03871660009081526006602052604090208390555b505050610d6f565b600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a375483108015906136245750683635c9adc5dea000008210155b801561362e575080155b15610d6f575050506001600160a01b0316600090815260066020526040902060019055565b604051806101c001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613720579160200282015b8281111561372057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136eb565b5061372c929150613730565b5090565b5b8082111561372c5780546001600160a01b031916815560010161373156fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737375736572206973206e6f74206578697374732e2052656769737465722066697273742ed37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb712a2646970667358221220a54d326fe5e2bbf513c803de706fd0dfdb208b43f13bfe59ae987d78ad3ff26464736f6c634300060c0033

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

000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f

-----Decoded View---------------
Arg [0] : _daiAddr (address): 0x567C50F9571EC31eFC9C02d3B9a7510195A9976F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f


Deployed Bytecode Sourcemap

743:29221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20916:134;;;;;;;;;;;;;;;;-1:-1:-1;20916:134:0;;:::i;:::-;;;;;;;;;;;;;;;;793:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26607:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26607:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2242:36;;;;;;;;;;;;;;;;-1:-1:-1;2242:36:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2822:67;;;:::i;:::-;;;;-1:-1:-1;;;;;2822:67:0;;;;;;;;;;;;;;27786:195;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27786:195:0;;;;;;;;;;:::i;:::-;;2925:244;;;;;;;;;;;;;;;;-1:-1:-1;2925:244:0;;:::i;861:43::-;;;:::i;2478:25::-;;;:::i;8664:1392::-;;;;;;;;;;;;;;;;-1:-1:-1;8664:1392:0;;:::i;24694:1373::-;;;;;;;;;;;;;;;;-1:-1:-1;24694:1373:0;;:::i;26833:274::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26833:274:0;;;;;;;;;;;;;;;;;:::i;29108:853::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29108:853:0;;;;;;;;:::i;8149:509::-;;;;;;;;;;;;;;;;-1:-1:-1;8149:509:0;;:::i;930:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3309;;;:::i;22028:402::-;;;;;;;;;;;;;;;;-1:-1:-1;22028:402:0;-1:-1:-1;;;;;22028:402:0;;:::i;6606:121::-;;;;;;;;;;;;;;;;-1:-1:-1;6606:121:0;-1:-1:-1;;;;;6606:121:0;;:::i;2896:22::-;;;:::i;21331:691::-;;;;;;;;;;;;;;;;-1:-1:-1;21331:691:0;-1:-1:-1;;;;;21331:691:0;;:::i;2433:38::-;;;:::i;2386:40::-;;;:::i;22441:110::-;;;;;;;;;;;;;;;;-1:-1:-1;22441:110:0;-1:-1:-1;;;;;22441:110:0;;:::i;2510:61::-;;;:::i;21056:126::-;;;;;;;;;;;;;;;;-1:-1:-1;21056:126:0;;:::i;2186:49::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2186:49:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:71;;;:::i;4468:44::-;;;;;;;;;;;;;;;;-1:-1:-1;4468:44:0;-1:-1:-1;;;;;4468:44:0;;:::i;19468:561::-;;;;;;;;;;;;;;;;-1:-1:-1;19468:561:0;-1:-1:-1;;;;;19468:561:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20035:357;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20035:357:0;;;;;;;;:::i;2663:70::-;;;:::i;826:28::-;;;:::i;27987:1115::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27987:1115:0;;;;;;;;:::i;2578:78::-;;;:::i;2032:37::-;;;;;;;;;;;;;;;;-1:-1:-1;2032:37:0;-1:-1:-1;;;;;2032:37:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2032:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26073:281;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26073:281:0;;;;;;;;:::i;7680:457::-;;;;;;;;;;;;;;;;-1:-1:-1;7680:457:0;;:::i;23598:1090::-;;;;;;;;;;;;;;;;-1:-1:-1;23598:1090:0;;:::i;3233:69::-;;;:::i;2076:45::-;;;;;;;;;;;;;;;;-1:-1:-1;2076:45:0;-1:-1:-1;;;;;2076:45:0;;:::i;4519:64::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4519:64:0;;;;;;;;;;:::i;22561:120::-;;;;;;;;;;;;;;;;-1:-1:-1;22561:120:0;-1:-1:-1;;;;;22561:120:0;;:::i;769:17::-;;;:::i;21194:131::-;;;:::i;2128:51::-;;;;;;;;;;;;;;;;-1:-1:-1;2128:51:0;-1:-1:-1;;;;;2128:51:0;;:::i;27119:199::-;;;;;;;;;;;;;;;;-1:-1:-1;27119:199:0;;;;;;-1:-1:-1;;;;;27119:199:0;;:::i;20916:134::-;20978:7;21026:10;:8;:10::i;:::-;21010;21021:4;21010:15;:26;;;;;;21003:33;;20916:134;;;;:::o;793:26::-;;;;;;;;;;;;;;;-1:-1:-1;;793:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26607:216::-;26709:10;26674:12;26699:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;26699:31:0;;;;;;;;;;;:40;;;26755:38;;;;;;;26674:12;;26699:31;;26709:10;;26755:38;;;;;;;;-1:-1:-1;26811:4:0;26607:216;;;;:::o;2242:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2822:67::-;;;-1:-1:-1;;;;;2822:67:0;;:::o;27786:195::-;27894:7;;-1:-1:-1;;;;;27894:7:0;27880:10;:21;27872:48;;;;;-1:-1:-1;;;27872:48:0;;;;;;;;;;;;-1:-1:-1;;;27872:48:0;;;;;;;;;;;;;;;27931:42;27944:11;27957:15;27931:12;:42::i;:::-;27786:195;;:::o;2925:244::-;;;;;;;;;;;;-1:-1:-1;;;;;2925:244:0;;-1:-1:-1;2925:244:0;:::o;861:43::-;;;;:::o;2478:25::-;;;;:::o;8664:1392::-;8728:24;8741:10;8728:12;:24::i;:::-;8720:72;;;;-1:-1:-1;;;8720:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8803:28;8820:10;8803:16;:28::i;:::-;8908:10;8843;8897:22;;;:10;:22;;;;;:35;;8843:10;;8897:22;8920:11;;8897:35;;;;;;;;;;;;;;;;;;;8944:12;;;;8897:35;;-1:-1:-1;8944:12:0;;8940:1109;;8993:5;:17;;;8976:15;:34;;:82;;;;-1:-1:-1;9030:17:0;;;;9048:10;9030:28;9014:15;:44;8976:82;8973:183;;;9086:4;9080:10;;8973:183;;;9135:5;9129:11;;8973:183;9170:3;;;9214:12;;9170:59;;;-1:-1:-1;;;9170:59:0;;9187:10;9170:59;;;;9207:4;9170:59;;;;9227:1;9214:14;;;9170:59;;;;;-1:-1:-1;;;;;9170:3:0;;;;:16;;:59;;;;;;;;;;;;;;;;;:3;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9255:10:0;9244:22;;;;:10;9170:59;9244:22;;;;:35;;9287:4;;9244:22;9267:11;;9244:35;;;;;;;;;;;;;;;;;;;:42;;:47;;-1:-1:-1;;9244:47:0;;;;;;;;;;;9334:12;;9321:28;;9347:1;;9334:14;;9321:12;:28::i;:::-;9389:12;;9364:23;:39;;9402:1;9389:14;;;9364:39;;;;;9431:12;;-1:-1:-1;;;;;9431:12:0;-1:-1:-1;9421:23:0;;;:9;:23;;;;;;9306:43;;-1:-1:-1;;;9418:430:0;;9473:25;:40;;9510:3;9507:2;9500:9;;:13;;;9473:40;;;;;9550:12;;9563:20;;9540:59;;-1:-1:-1;;;;;9550:12:0;;;;9563:20;;;;;9510:3;9585:9;;:13;;9540:9;:59::i;:::-;9629:12;;9642:13;;9619:52;;-1:-1:-1;;;;;9629:12:0;;;;9642:13;9667:3;9664:2;9657:9;;:13;;9619:52;9418:430;;;9725:25;:33;;;;;;;9789:13;;9803:20;;9779:53;;-1:-1:-1;;;;;9789:13:0;;;;9803:20;9752:6;9779:9;:53::i;:::-;9866:5;9862:182;;9909:15;9891:17;;;:33;;;9979:11;9963:27;9943:19;;;:47;10009:14;;;:19;;-1:-1:-1;;10009:19:0;;;;;9862:182;8940:1109;;8664:1392;;;:::o;24694:1373::-;24780:12;;-1:-1:-1;;;;;24780:12:0;24766:10;:26;;;;:64;;-1:-1:-1;24810:20:0;;-1:-1:-1;;;;;24810:20:0;24796:10;:34;;24766:64;:95;;;;-1:-1:-1;24848:13:0;;-1:-1:-1;;;;;24848:13:0;24834:10;:27;;24766:95;24758:120;;;;;-1:-1:-1;;;24758:120:0;;;;;;;;;;;;-1:-1:-1;;;24758:120:0;;;;;;;;;;;;;;;24924:10;24889:12;24914:21;;;:9;:21;;;;;;:35;-1:-1:-1;24914:35:0;24906:75;;;;;-1:-1:-1;;;24906:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25044:10;;25026:3;25024:1;25011:14;;:18;;25066:11;25044:20;;;25043:34;25040:97;;;-1:-1:-1;25115:10:0;;25103:11;:22;25040:97;25150:11;;25147:863;;25203:22;;;25246:25;25203:22;25246:12;:25::i;:::-;25286;:38;;;;;;25339:23;:29;;;;;;;25241:30;-1:-1:-1;25388:25:0;25313:11;25388:12;:25::i;:::-;25449:13;;25383:30;;-1:-1:-1;25428:47:0;;25438:10;;-1:-1:-1;;;;;25449:13:0;25463:11;25428:9;:47::i;:::-;25490:3;;;:30;;;-1:-1:-1;;;25490:30:0;;25503:10;25490:30;;;;;;;;;;;;-1:-1:-1;;;;;25490:3:0;;;;:12;;:30;;;;;;;;;;;;;;;;;:3;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25536:10:0;:21;;;;;;25572:27;25578:10;25548:9;25572:5;:27::i;:::-;25619:42;;;;;;;;25647:1;;25628:10;;25619:42;;;;;;;;;25147:863;;;;25708:26;25721:12;25708;:26::i;:::-;25749:25;:39;;;;;;25803:23;:29;;;;;;;25703:31;-1:-1:-1;25852:26:0;25776:12;25852;:26::i;:::-;25914:13;;25847:31;;-1:-1:-1;25893:48:0;;25903:10;;-1:-1:-1;;;;;25914:13:0;25928:12;25893:9;:48::i;:::-;25956:3;;;:30;;;-1:-1:-1;;;25956:30:0;;25969:10;25956:30;;;;;;;;;;;;-1:-1:-1;;;;;25956:3:0;;;;:12;;:30;;;;;;;;;;;;;;;;;:3;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25147:863:0;26025:34;;;;;;;;;;;;;;26030:10;;26025:34;;;;;;;;24694:1373;;;:::o;26833:274::-;-1:-1:-1;;;;;26956:16:0;;26913:12;26956:16;;;:9;:16;;;;;;;;26973:10;26956:28;;;;;;;;26946:38;;;26938:47;;;;;;26996:32;27006:10;27017:3;27021:6;26996:9;:32::i;:::-;-1:-1:-1;;;;;;27039:16:0;;;;;;:9;:16;;;;;;;;27056:10;27039:28;;;;;;;:38;;;;;;;-1:-1:-1;26833:274:0;;;;;:::o;29108:853::-;29214:7;;-1:-1:-1;;;;;29214:7:0;29200:10;:21;29192:48;;;;;-1:-1:-1;;;29192:48:0;;;;;;;;;;;;-1:-1:-1;;;29192:48:0;;;;;;;;;;;;;;;29259:25;29272:11;29259:12;:25::i;:::-;29251:73;;;;-1:-1:-1;;;29251:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29335:29;29352:11;29335:16;:29::i;:::-;-1:-1:-1;;;;;29430:23:0;;29376:10;29430:23;;;:10;:23;;;;;:36;;29376:10;;29430:23;29454:11;;29430:36;;;;;;;;;;;;;;;;;;;29478:12;;;;29430:36;;-1:-1:-1;29478:12:0;;29474:480;;29527:5;:17;;;29510:15;:34;;:82;;;;-1:-1:-1;29564:17:0;;;;29582:10;29564:28;29548:15;:44;29510:82;29507:183;;;29620:4;29614:10;;29507:183;;;29669:5;29663:11;;29507:183;-1:-1:-1;;;;;29704:23:0;;;;;;:10;:23;;;;;:36;;29748:4;;29704:23;29728:11;;29704:36;;;;;;;;;;;;;;;;;;;:43;;:48;;-1:-1:-1;;29704:48:0;;;;;;;;;;29771:5;29767:182;;29814:15;29796:17;;;:33;;;29884:11;29868:27;29848:19;;;:47;29914:14;;;:19;;-1:-1:-1;;29914:19:0;;;;;29108:853;;;;:::o;8149:509::-;8206:14;8221:21;8234:7;8221:12;:21::i;:::-;8274:20;;8206:36;;-1:-1:-1;8253:49:0;;8263:10;;-1:-1:-1;;;;;8274:20:0;8206:36;8253:9;:49::i;:::-;8366:10;8360:17;;;;:5;:17;;;;;:29;;;8329:1;8321:9;;;;8349:40;;;;;:65;;;2323:5;8393:7;:21;;8349:65;:92;;;;-1:-1:-1;2323:5:0;8418:7;:18;:23;8349:92;:117;;;;;2372:7;8445;:21;;8349:117;8341:143;;;;;-1:-1:-1;;;8341:143:0;;;;;;;;;;;;-1:-1:-1;;;8341:143:0;;;;;;;;;;;;;;;8503:24;8516:10;8503:12;:24::i;:::-;8495:72;;;;-1:-1:-1;;;8495:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8578:28;8595:10;8578:16;:28::i;:::-;8619:31;8631:10;8642:7;8619:11;:31::i;930:26::-;;;;;;:::o;3309:::-;;;;:::o;22028:402::-;22091:9;22087:333;-1:-1:-1;;;;;22110:17:0;;;;;;:10;:17;;;;;:24;22106:28;;22087:333;;;-1:-1:-1;;;;;22178:17:0;;22152:23;22178:17;;;:10;:17;;;;;:20;;22196:1;;22178:20;;;;;;;;;;;;;;;;;;;22217:12;;;;22178:20;;-1:-1:-1;22217:12:0;;22216:13;:31;;;;-1:-1:-1;22233:14:0;;;;;;;;;22216:31;22213:196;;;22294:17;;;;22312:10;22294:28;22278:15;:44;22275:120;;;22355:14;;;:20;;-1:-1:-1;;22355:20:0;;;22275:120;-1:-1:-1;22136:3:0;;22087:333;;6606:121;6678:41;6691:10;6703:15;6678:12;:41::i;:::-;6606:121;:::o;2896:22::-;;;-1:-1:-1;;;;;2896:22:0;;:::o;21331:691::-;21384:7;21408:23;21425:5;21408:16;:23::i;:::-;-1:-1:-1;;;;;21449:16:0;;;;;;:9;:16;;;;;:21;:24;;:52;;-1:-1:-1;;;;;;21477:16:0;;;;;;:9;:16;;;;;:21;21500:1;21477:24;21449:52;21446:568;;;-1:-1:-1;;;;;;21559:19:0;;;;;;:12;:19;;;;;:30;;;;21524:32;;21557:1;21524:34;:65;21516:74;;21446:568;-1:-1:-1;;;;;21609:16:0;;;;;;:9;:16;;;;;:21;21632:1;21609:24;;:52;;-1:-1:-1;;;;;;21637:16:0;;;;;;:9;:16;;;;;:21;21660:1;21637:24;21609:52;21606:408;;;-1:-1:-1;;;;;;21719:19:0;;;;;;:12;:19;;;;;:30;;;;21684:32;;21717:1;21684:34;:65;21676:74;;21606:408;-1:-1:-1;;;;;21769:16:0;;;;;;:9;:16;;;;;:21;21792:1;21769:24;;:52;;-1:-1:-1;;;;;;21797:16:0;;;;;;:9;:16;;;;;:21;21820:1;21797:24;21769:52;21766:248;;;-1:-1:-1;;;;;;21879:19:0;;;;;;:12;:19;;;;;:30;;;;21844:32;;21877:1;21844:34;:65;21836:74;;21766:248;-1:-1:-1;;;;;;21983:19:0;;;;;;:12;:19;;;;;:30;;;;21948:32;;21981:1;21948:34;:65;21940:74;;2433:38;;;;:::o;2386:40::-;;;;:::o;22441:110::-;-1:-1:-1;;;;;22523:11:0;22498:4;22523:11;;;:5;:11;;;;;:14;:19;;;22441:110::o;2510:61::-;;;-1:-1:-1;;;;;2510:61:0;;:::o;21056:126::-;21117:4;21170;21159:10;:8;:10::i;:::-;21146:12;:23;:28;;;;2186:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2186:49:0;;-1:-1:-1;2186:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2744:71::-;;;-1:-1:-1;;;;;2744:71:0;;:::o;4468:44::-;;;;;;;;;;;;;:::o;19468:561::-;19525:7;;;;;;19643:302;-1:-1:-1;;;;;19666:12:0;;;;;;:5;:12;;;;;:22;;:29;19662:33;;19643:302;;;-1:-1:-1;;;;;19745:12:0;;19716:21;19745:12;;;19739:5;19745:12;;;;;;;:22;;:25;;19716:21;;19745:22;19768:1;;19745:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19745:25:0;19739:32;;;;;;;;;;;;:42;;;19810:24;;;19745:25;19810:24;;;;19739:44;;-1:-1:-1;19852:23:0;;;19849:85;;;19905:13;19895:23;;19849:85;-1:-1:-1;19697:3:0;;19643:302;;;-1:-1:-1;19977:7:0;;-1:-1:-1;;19967:17:0;;;;-1:-1:-1;19468:561:0;;;:::o;20035:357::-;20105:7;;;20165:190;-1:-1:-1;;;;;20188:12:0;;;;;;:5;:12;;;;;:22;;:29;20184:33;;20165:190;;;-1:-1:-1;;;;;20251:12:0;;20241:36;20251:12;;;:5;:12;;;;;:22;;:25;;20286:5;;20241:9;;:36;;20274:1;;20251:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20251:25:0;20241:36;;;;;;;;;;;;:41;:50;20238:106;;20327:1;20311:17;;;;20238:106;20219:3;;20165:190;;;-1:-1:-1;20372:12:0;20035:357;-1:-1:-1;;;20035:357:0:o;2663:70::-;;;-1:-1:-1;;;;;2663:70:0;;:::o;826:28::-;;;;;;;;;;;;;;-1:-1:-1;;826:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27987:1115;28099:7;;-1:-1:-1;;;;;28099:7:0;28085:10;:21;28077:48;;;;;-1:-1:-1;;;28077:48:0;;;;;;;;;;;;-1:-1:-1;;;28077:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28161:18:0;;;28136:23;28161:18;;;:5;:18;;;;;;;;:27;;;;;;;28199:22;;;;;;:37;;:46;;;;;;28267:18;;;;:31;;;;;28264:313;;-1:-1:-1;;;;;28335:22:0;;;;;;;:5;:22;;;;;;;:36;;;:38;;;;;;;;;28388:32;;;;:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28388:50:0;;;;;;;;;;;28465:28;;28480:10;;28465:14;:28::i;:::-;28264:313;;;28537:28;28552:10;28563:1;28537:14;:28::i;:::-;28621:7;28587:5;:18;28593:11;-1:-1:-1;;;;;28587:18:0;-1:-1:-1;;;;;28587:18:0;;;;;;;;;;;;:31;;;:41;;;;;;;;;;;28681:7;28640:12;:25;28653:11;-1:-1:-1;;;;;28640:25:0;-1:-1:-1;;;;;28640:25:0;;;;;;;;;;;;:38;;;:48;;;;;;;;;;;28736:7;28705:5;:18;28711:11;-1:-1:-1;;;;;28705:18:0;-1:-1:-1;;;;;28705:18:0;;;;;;;;;;;;:30;;:38;;;;28754:10;:23;28765:11;-1:-1:-1;;;;;28754:23:0;-1:-1:-1;;;;;28754:23:0;;;;;;;;;;;;28783:241;;;;;;;;28807:7;28783:241;;;;28816:1;28783:241;;;;28832:15;28783:241;;;;3423:4;28879:2;:11;28863:15;:27;28783:241;;;;28906:15;28783:241;;;;28936:5;28783:241;;;;;;28956:4;28783:241;;;;;;28975:4;28783:241;;;;;;28980:3;28783:241;;;;3423:4;29000:2;:11;28984:15;:27;28783:241;;;;29012:1;28783:241;;;28754:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29056:11;-1:-1:-1;;;;;29048:36:0;;29068:7;29076;29048:36;;;;;;;;;;;;;;;;;;;;;;;;27987:1115;;;:::o;2578:78::-;;;-1:-1:-1;;;;;2578:78:0;;:::o;2032:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2032:37:0;;;;;;;;;;;;;;;;;;;;;;:::o;26073:281::-;26183:12;;26136;;-1:-1:-1;;;;;26183:12:0;26169:10;:26;;;;:64;;-1:-1:-1;26213:20:0;;-1:-1:-1;;;;;26213:20:0;26199:10;:34;;26169:64;:95;;;;-1:-1:-1;26251:13:0;;-1:-1:-1;;;;;26251:13:0;26237:10;:27;;26169:95;26161:120;;;;;-1:-1:-1;;;26161:120:0;;;;;;;;;;;;-1:-1:-1;;;26161:120:0;;;;;;;;;;;;;;;26292:32;26302:10;26313:3;26317:6;26292:9;:32::i;:::-;-1:-1:-1;26342:4:0;26073:281;;;;:::o;7680:457::-;7734:3;;;:50;;;-1:-1:-1;;;7734:50:0;;7751:10;7734:50;;;;7770:4;7734:50;;;;;;;;;;;;-1:-1:-1;;;;;7734:3:0;;;;:16;;:50;;;;;;;;;;;;;;;;;:3;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7848:10:0;7842:17;;;;:5;7734:50;7842:17;;;;:29;;;7811:1;7803:9;;;;7831:40;;;;;:65;;;2323:5;7875:7;:21;;7831:65;:92;;;;-1:-1:-1;2323:5:0;7900:7;:18;:23;7831:92;:117;;;;;2372:7;7927;:21;;7831:117;7823:143;;;;;-1:-1:-1;;;7823:143:0;;;;;;;;;;;;-1:-1:-1;;;7823:143:0;;;;;;;;;;;;;;;7985:24;7998:10;7985:12;:24::i;:::-;7977:72;;;;-1:-1:-1;;;7977:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8060:28;8077:10;8060:16;:28::i;:::-;8101;8110:10;8121:7;8101:8;:28::i;23598:1090::-;23694:10;23657:23;23683:22;;;:10;:22;;;;;:35;;23706:11;;23683:35;;;;;;;;;;;;;;;;23657:61;;23726:5;:14;;;;;;;;;;;;:30;;;;-1:-1:-1;23744:12:0;;;;;;23726:30;:69;;;;;23780:15;23760:5;:19;;;:35;23726:69;23723:958;;;23812:19;23833:37;23847:10;23858:11;23833:13;:37::i;:::-;23811:59;;23886:13;23900:10;:8;:10::i;:::-;23925;23919:17;;;;:5;:17;;;;;;;;:24;;;:38;;;;;;23966:29;;:43;;;;;;24024:12;:24;;;;;;-1:-1:-1;24024:35:0;;;:49;;;;;;24093:50;;;;;;;;;;;;;;;;;23886:24;;-1:-1:-1;23925:10:0;;;;-1:-1:-1;;;;;;;;;;;24093:50:0;;;;;;;;;24172:12;;;;;24150:19;;;:47;;24171:26;;;24150:47;;;-1:-1:-1;24216:15:0;;;;;;24246:18;;:31;;;;;;24312:10;24150:19;24306:17;;;:5;:17;;;;;:31;;:44;;;;;;24398:5;24393:4;24381:16;;24398:5;24381:22;;;;24428:20;;24381:22;;;;-1:-1:-1;24418:50:0;;-1:-1:-1;;;;;24428:20:0;24449:10;24381:22;24418:9;:50::i;:::-;24493:20;;24514:11;;24483:57;;-1:-1:-1;;;;;24493:20:0;;;;24514:11;24536:3;24534:1;24526:9;;:13;;24483:57;24555:54;24580:10;24591:11;24603:5;24555:24;:54::i;:::-;24643:32;;;;;;;;24652:10;;24643:32;;;;;;;;;;23723:958;;;23598:1090;;:::o;3233:69::-;;;-1:-1:-1;;;;;3233:69:0;;:::o;2076:45::-;;;;;;;;;;;;;:::o;4519:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;22561:120::-;-1:-1:-1;;;;;22649:17:0;22622:7;22649:17;;;:10;:17;;;;;:24;;22561:120::o;769:17::-;;;-1:-1:-1;;;;;769:17:0;;:::o;21194:131::-;21234:4;21292:25;;21263:23;;21287:4;21263:28;:54;;;;;;21256:61;;21194:131;:::o;2128:51::-;;;;;;;;;;;;;;;;;;;:::o;27119:199::-;27216:12;;27181:4;;-1:-1:-1;;;;;27216:12:0;27202:10;:26;27198:58;;27231:23;;;-1:-1:-1;;;27231:23:0;;;;;;;;;;;;-1:-1:-1;;;27231:23:0;;;;;;;;;;;;;;27198:58;27266:22;27272:7;27281:6;27266:5;:22::i;6733:941::-;6829:25;6842:11;6829:12;:25::i;:::-;6828:26;6820:50;;;;;-1:-1:-1;;;6820:50:0;;;;;;;;;;;;-1:-1:-1;;;6820:50:0;;;;;;;;;;;;;;;6889:29;6902:15;6889:12;:29::i;:::-;6881:61;;;;;-1:-1:-1;;;6881:61:0;;;;;;;;;;;;-1:-1:-1;;;6881:61:0;;;;;;;;;;;;;;;6953:16;;:::i;:::-;6972:455;;;;;;;;6996:10;;6972:455;;;;7043:15;-1:-1:-1;;;;;6972:455:0;;;;;7088:1;6972:455;;;;7115:1;6972:455;;;;7155:1;7141:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7141:16:0;;6972:455;;;;7216:1;6972:455;;;;7244:1;6972:455;;;;7187:1;6972:455;;;;7267:1;6972:455;;;;7295:1;6972:455;;;;7325:1;6972:455;;;;7356:1;6972:455;;;;7384:1;6972:455;;;;7414:1;6972:455;;;6953:474;;7467:4;7446:5;:18;7452:11;-1:-1:-1;;;;;7446:18:0;-1:-1:-1;;;;;7446:18:0;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7446:25:0;;;;;-1:-1:-1;;;;;7446:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7446:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7482:18:0;;;-1:-1:-1;7482:18:0;;;;;;;;;;;:27;;;;:45;;-1:-1:-1;;;;;;7482:45:0;;;;;;;;;7538:10;:12;;;;;;;7617:21;7640:22;;;;;;;:25;7574:92;;;;;;;7617:21;;7574:92;;;;;;;;;6733:941;;;:::o;26360:241::-;-1:-1:-1;;;;;26450:16:0;;;;;;:9;:16;;;;;;:26;-1:-1:-1;26450:26:0;26442:35;;;;;;-1:-1:-1;;;;;26488:16:0;;;;;;;:9;:16;;;;;;;;:26;;;;;;;26525:14;;;;;;;;;;:24;;;;;;26565:28;;;;;;;26525:14;;26565:28;;;;;;;;;;;26360:241;;;:::o;27324:456::-;-1:-1:-1;;;;;27414:21:0;;27406:67;;;;-1:-1:-1;;;27406:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27509:18:0;;27484:22;27509:18;;;:9;:18;;;;;;27546:24;;;;27538:71;;;;-1:-1:-1;;;27538:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27641:6;27628:11;;:19;;27620:57;;;;;-1:-1:-1;;;27620:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27688:18:0;;;;;;;:9;:18;;;;;27709:23;;;;27688:44;;;27751:11;:21;;;;;;;;27324:456::o;11931:1410::-;-1:-1:-1;;;;;12051:18:0;;;12026:23;12051:18;;;:5;:18;;;;;;;;:27;;;;;;;12089:22;;;;;;:37;;:46;;;;;;12157:18;;;;:31;;;;;12154:301;;-1:-1:-1;;;;;12225:22:0;;;;;;;:5;:22;;;;;;;:36;;;:38;;;;;;;;;12278:32;;;;:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12278:50:0;;;;;;;;;;;12343:28;;12358:10;;12343:14;:28::i;:::-;12154:301;;;12415:28;12430:10;12441:1;12415:14;:28::i;:::-;-1:-1:-1;;;;;12465:18:0;;;;;;:5;:18;;;;;;;;:31;;;:41;;;;;;12518:12;:25;;;;:48;;;;;;12593:10;:8;:10::i;:::-;12579:24;-1:-1:-1;12622:14:0;12637:23;12658:1;12650:7;:9;;12637:23;12622:38;;12704:7;12673:5;:18;12679:11;-1:-1:-1;;;;;12673:18:0;-1:-1:-1;;;;;12673:18:0;;;;;;;;;;;;:30;;:38;;;;12722:10;:23;12733:11;-1:-1:-1;;;;;12722:23:0;-1:-1:-1;;;;;12722:23:0;;;;;;;;;;;;12751:242;;;;;;;;12775:7;12751:242;;;;12784:1;12751:242;;;;12800:15;12751:242;;;;3423:4;12847:2;:11;12831:15;:27;12751:242;;;;12874:15;12751:242;;;;12904:5;12751:242;;;;;;12924:4;12751:242;;;;;;12943:5;12751:242;;;;;;12949:3;12751:242;;;;3423:4;12969:2;:11;12953:15;:27;12751:242;;;;12981:1;12751:242;;;12722:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13009:6;13005:134;13020:1;13018;:3;13005:134;;;13061:20;;13051:75;;-1:-1:-1;;;;;13061:20:0;13082:9;13092:1;13082:12;;;;;;;;;-1:-1:-1;;;;;13082:12:0;13120:5;13105:11;13117:1;13105:14;;;;;;;;;13096:6;13103:1;13096:8;:23;:29;;;;13051:75;13022:3;;13005:134;;;;13150:49;13173:11;13185:7;13193:5;13150:22;:49::i;:::-;13211:51;13236:11;13248:7;13256:5;13211:24;:51::i;:::-;13286:37;;;;;;13321:1;13314:8;;13286:37;;;;;;-1:-1:-1;;;;;13286:37:0;;;;;;;;;;;11931:1410;;;;;:::o;20398:509::-;-1:-1:-1;;;;;20484:12:0;;;20467:14;20484:12;;;:5;:12;;;;;:21;;;;;;;20516:384;3380:2;20535:1;:14;20516:384;;;-1:-1:-1;;;;;20573:20:0;;;20570:319;;20616:5;20623:1;20616:8;20613:85;;;-1:-1:-1;;;;;20673:13:0;;;;;;:5;:13;;;;;:23;;;;20697:1;20673:25;20647:51;;20613:85;20717:20;20730:6;20717:12;:20::i;:::-;20769:3;;-1:-1:-1;;;;;20759:13:0;;;20769:3;;20759:13;20756:23;;;20774:5;;20756:23;-1:-1:-1;;;;;20807:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;20570:319;;;20868:5;;20570:319;20551:3;;20516:384;;10067:1858;-1:-1:-1;;;;;10184:18:0;;;10159:23;10184:18;;;:5;:18;;;;;;;;:27;;;;;;;10222:22;;;;;;:37;;:46;;;;;;10290:18;;;;:31;;;;;10287:313;;-1:-1:-1;;;;;10358:22:0;;;;;;;:5;:22;;;;;;;:36;;;:38;;;;;;;;;10411:32;;;;:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10411:50:0;;;;;;;;;;;10488:28;;10503:10;;10488:14;:28::i;:::-;10287:313;;;10560:28;10575:10;10586:1;10560:14;:28::i;:::-;-1:-1:-1;;;;;10610:18:0;;;;;;:5;:18;;;;;;;;:31;;;:41;;;;;;10663:12;:25;;;;:48;;;;;;10736:10;:8;:10::i;:::-;10722:24;-1:-1:-1;10757:14:0;10772:23;10793:1;10785:7;:9;;10772:23;10806;:34;;10839:1;10831:9;;10806:34;;;10864:12;;-1:-1:-1;;;;;10864:12:0;-1:-1:-1;10854:23:0;;;:9;:23;;;;;;10757:38;;-1:-1:-1;;;10851:398:0;;10902:25;:40;;10939:3;10936:2;10929:9;;:13;;;10902:40;;;;;10975:12;;10988:20;;10965:59;;-1:-1:-1;;;;;10975:12:0;;;;10988:20;;;;;10939:3;11010:9;;:13;;10965:59;11050:12;;11063:13;;11040:52;;-1:-1:-1;;;;;11050:12:0;;;;11063:13;11088:3;11085:2;11078:9;;:13;;11040:52;10851:398;;;11134:25;:33;;;;;;;11194:13;;11208:20;;11184:53;;-1:-1:-1;;;;;11194:13:0;;;;11208:20;11161:6;11184:9;:53::i;:::-;11290:7;11259:5;:18;11265:11;-1:-1:-1;;;;;11259:18:0;-1:-1:-1;;;;;11259:18:0;;;;;;;;;;;;:30;;:38;;;;11308:10;:23;11319:11;-1:-1:-1;;;;;11308:23:0;-1:-1:-1;;;;;11308:23:0;;;;;;;;;;;;11337:241;;;;;;;;11361:7;11337:241;;;;11370:1;11337:241;;;;11386:15;11337:241;;;;3423:4;11433:2;:11;11417:15;:27;11337:241;;;;11460:15;11337:241;;;;11490:5;11337:241;;;;;;11510:4;11337:241;;;;;;11529:4;11337:241;;;;;;11534:3;11337:241;;;;3423:4;11554:2;:11;11538:15;:27;11337:241;;;;11566:1;11337:241;;;11308:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11594:6;11590:134;11605:1;11603;:3;11590:134;;;11646:20;;11636:75;;-1:-1:-1;;;;;11646:20:0;11667:9;11677:1;11667:12;;;;;;11636:75;11607:3;;11590:134;;22689:903;-1:-1:-1;;;;;22837:17:0;;22760:7;22837:17;;;:10;:17;;;;;:30;;22760:7;;;;22855:11;;22837:30;;;;;;;;;;;;;;;;22811:56;;22878:25;22906:4;-1:-1:-1;;;;;22906:16:0;;22923:5;22906:23;;;;;;;;;;;;;-1:-1:-1;;;;;22906:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22906:23:0;;-1:-1:-1;22956:19:0;;22953:612;;23001:11;3423:4;23036:5;:17;;;23014:5;:19;;;:39;23013:57;;;;;;23001:69;;23095:3;23088:6;:10;23085:38;;;-1:-1:-1;23120:3:0;23085:38;23138:19;23213:5;:18;;;23206:5;23197:6;23173:5;:23;;;23160:5;:12;;;:36;:43;:51;;;;;;23159:72;23138:93;;23268:11;23250:17;:29;23247:127;;;-1:-1:-1;23313:17:0;23247:127;23391:13;;23388:85;;23446:11;23439:18;;23388:85;22953:612;;;;;23534:14;;;:19;;-1:-1:-1;;23534:19:0;;;;;22953:612;-1:-1:-1;23577:6:0;;22689:903;-1:-1:-1;;;;22689:903:0:o;17229:1432::-;-1:-1:-1;;;;;17345:12:0;;;17328:14;17345:12;;;:5;:12;;;;;:21;;;;;;;17377:1277;3380:2;17394:1;:14;;;17377:1277;;;-1:-1:-1;;;;;17432:20:0;;;17429:1214;;17499:9;17509:1;17499:12;;;;;;;;;;;-1:-1:-1;;;;;17475:17:0;;;;;;:9;:17;;;;;:22;:36;17472:1046;;-1:-1:-1;;;;;17556:13:0;;17583:1;17556:13;;;:5;:13;;;;;;;;:26;;:28;17553:946;;17658:14;17699:5;17681:14;17696:1;17681:17;;;;;;;;;;;17673:7;:25;:31;;;;;;17658:46;;17755:25;17781:4;-1:-1:-1;;;;;17781:16:0;;17798:6;17781:24;;;;;;;;;;;;;-1:-1:-1;;;;;17781:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17781:24:0;;-1:-1:-1;17837:19:0;;17834:642;;17935:6;17917:17;:24;17914:143;;;17984:17;17977:24;;17914:143;-1:-1:-1;;;;;18087:13:0;;;;;;;:5;:13;;;;;;;;:28;;;:37;;;;;;18178:25;;:34;;;;;;18244:12;:20;;;;;-1:-1:-1;18244:31:0;:40;;;;;;18325:20;;18315:56;;18325:20;18093:6;18365:5;18360:4;18353:11;;18365:5;18353:17;;;18315:56;18407:40;;;;;;;18442:1;18440:3;;18407:40;;;;;18445:1;18407:40;;;;;;-1:-1:-1;;;;;18407:40:0;;;;;;;;-1:-1:-1;;;;;;;;;;;18407:40:0;;;;;;;;17834:642;17553:946;;;-1:-1:-1;;;;;18545:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;17429:1214;;;18622:5;;17429:1214;17410:3;;17377:1277;;;;17229:1432;;;;:::o;13347:1426::-;-1:-1:-1;;;;;13461:12:0;;;13444:14;13461:12;;;:5;:12;;;;;:21;;;;;;;13493:1273;3380:2;13510:1;:14;;;13493:1273;;;-1:-1:-1;;;;;13548:20:0;;;13545:1210;;13615:9;13625:1;13615:12;;;;;;;;;;;-1:-1:-1;;;;;13591:17:0;;;;;;:9;:17;;;;;:22;:36;13588:1042;;-1:-1:-1;;;;;13672:13:0;;13699:1;13672:13;;;:5;:13;;;;;;;;:26;;:28;13669:942;;13774:14;13814:5;13797:13;13811:1;13797:16;;;;;;;;;;;13789:7;:24;:30;;;;;;13774:45;;13870:25;13896:4;-1:-1:-1;;;;;13896:16:0;;13913:6;13896:24;;;;;;;;;;;;;-1:-1:-1;;;;;13896:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13896:24:0;;-1:-1:-1;13952:19:0;;13949:639;;14050:6;14032:17;:24;14029:143;;;14099:17;14092:24;;14029:143;-1:-1:-1;;;;;14202:13:0;;;;;;;:5;:13;;;;;;;;:25;;;:34;;;;;;14290:25;;:34;;;;;;14356:12;:20;;;;;-1:-1:-1;14356:31:0;:40;;;;;;14437:20;;14427:56;;14437:20;14208:6;14477:5;14472:4;14465:11;;14477:5;14465:17;;;14427:56;14519:40;;;;;;;14554:1;14552:3;;14519:40;;;;;14557:1;14519:40;;;;;;-1:-1:-1;;;;;14519:40:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14519:40:0;;;;;;;;13949:639;13669:942;;;-1:-1:-1;;;;;14657:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;13526:3;;13493:1273;;14779:2444;-1:-1:-1;;;;;14895:12:0;;;14878:14;14895:12;;;:5;:12;;;;;:21;;;;;;;14878:14;;;;15054:2162;15075:2;15071:1;:6;;;15054:2162;;;-1:-1:-1;;;;;15113:20:0;;;15110:2095;;-1:-1:-1;;;;;15156:17:0;;;;;;:9;:17;;;;;:22;15180:1;15156:25;;:54;;-1:-1:-1;;;;;;15185:17:0;;;;;;:9;:17;;;;;;;;:22;:25;15156:54;15153:1913;;;15238:13;15235:798;;-1:-1:-1;;;;;15304:17:0;;;;;;:9;:17;;;;;;;;:22;:25;15301:418;;;15397:1;15381:17;;15447:1;15429:19;;15490:1;15479:12;;15301:418;;;15597:1;15581:17;;15647:1;15629:19;;15690:1;15679:12;;15301:418;15235:798;;;-1:-1:-1;;;;;15799:17:0;;;;;;:9;:17;;;;;:22;:34;;15796:214;;;15901:17;15885:33;;15957:1;15949:9;;15796:214;16058:17;;16055:992;;16266:24;;;-1:-1:-1;;;16266:24:0;;-1:-1:-1;;;;;16266:24:0;;;;;;;;16103:14;;16142:3;16118:23;;;:27;;16103:14;;16266:4;;:16;;:24;;;;;;;;;;;;;;16103:14;16266:4;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16266:24:0;;-1:-1:-1;16322:19:0;;16319:641;;16420:6;16402:17;:24;16399:143;;;16469:17;16462:24;;16399:143;-1:-1:-1;;;;;16572:13:0;;;;;;;:5;:13;;;;;;;;:27;;;:36;;;;;;16662:25;;:34;;;;;;16728:12;:20;;;;;-1:-1:-1;16728:31:0;:40;;;;;;16809:20;;16799:56;;16809:20;16578:6;16849:5;16844:4;16837:11;;16849:5;16837:17;;;16799:56;16891:40;;;;;;;16926:1;16924:3;;16891:40;;;;;16929:1;16891:40;;;;;;-1:-1:-1;;;;;16891:40:0;;;;;;;;-1:-1:-1;;;;;;;;;;;16891:40:0;;;;;;;;16319:641;16989:7;16998:1;16989:10;:27;;;-1:-1:-1;17013:3:0;;-1:-1:-1;;;;;17003:13:0;;;17013:3;;17003:13;16989:27;16986:37;;;17018:5;;;;16986:37;16055:992;;;-1:-1:-1;;;;;17093:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;15110:2095;;;17184:5;;15110:2095;15079:3;;15054:2162;;;;14779:2444;;;;;;;;:::o;18667:795::-;-1:-1:-1;;;;;18754:12:0;;18731:19;18754:12;;;:5;:12;;;;;;;;:26;;;;18817:27;;;;;18874:9;:16;;;;;:21;18922:1;18909:14;;;;;:31;;;18939:1;18927:11;:13;18909:31;18906:549;;;18996:1;18984:13;;18968;19036:19;19049:5;19036:12;:19::i;:::-;19012:43;;;19070:17;19088:23;19103:5;19109:1;19088:14;:23::i;:::-;19143:19;;;;:9;:19;;;;;:32;;;19070:41;;-1:-1:-1;19129:46:0;;;;;:91;;-1:-1:-1;19190:19:0;;;;:9;:19;;;;;:30;;;19179:41;;;19129:91;19126:162;;;-1:-1:-1;;;;;19240:16:0;;;;;;:9;:16;;;;;:32;;;19126:162;18906:549;;;;;;19344:1;19334:12;;:9;:12;;:25;;19321:38;;;;;:65;;;19379:7;19363:14;:23;;19321:65;:83;;;;-1:-1:-1;19390:14:0;;19321:83;19318:137;;;-1:-1:-1;;;;;;;;19420:16:0;;;;;:9;:16;;;;;19442:1;19420:23;;18667:795::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://a54d326fe5e2bbf513c803de706fd0dfdb208b43f13bfe59ae987d78ad3ff264
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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