ETH Price: $2,815.88 (+1.92%)

Token

Juice (Juice)
 

Overview

Max Total Supply

50,000,000 Juice

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
50,217.177984374388297524 Juice

Value
$0.00
0x7Ed3f7b72339FFe45DF267d7fd4f80d909EFD529
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Juice

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-31
*/

// SPDX-License-Identifier: MIT

/**

			░░░░░██╗██╗░░░██╗██╗░█████╗░███████╗
			░░░░░██║██║░░░██║██║██╔══██╗██╔════╝
			░░░░░██║██║░░░██║██║██║░░╚═╝█████╗░░
			██╗░░██║██║░░░██║██║██║░░██╗██╔══╝░░
			╚█████╔╝╚██████╔╝██║╚█████╔╝███████╗
			░╚════╝░░╚═════╝░╚═╝░╚════╝░╚══════╝


                                                  ▒▒▒▒                                
                                                ▒▒▒▒▒                            
                                              ██▒▒▒▒                                    
                                          ████░░▒▒██                                    
                                    ██████░░░░░░▒▒░░████                                
                              ██████░░░░░░░░░░░░░░██████                                
                              ██░░██░░░░░░░░██████░░░░██                                
                              ██░░░░██░░████░░░░░░░░░░██                                
                              ██░░░░░░██░░░░░░░░░░░░░░██                                
                              ██░░░░░░██░░░░░░▓▓░░░░░░██                                
                              ██░░░░░░██░░▒▒▒▒░░▓▓░░░░██                                
                              ██░░░░░░██░░░░░░▒▒▒▒▒▒░░██                                
                              ██░░░░░░██░░░░▒▒▒▒▒▒▒▒▒▒██                                
                              ██░░░░░░██░░░░▒▒▒▒▒▒▒▒▒▒██                                
                              ██░░░░░░██░░░░▒▒▒▒▒▒▒▒▒▒██                                
                              ██░░░░░░██░░░░░░▒▒▒▒▒▒░░██                                
                                ██░░░░██░░░░░░░░░░████                                  
                                  ██░░██░░░░██████                                      
                                    ████████                                            
                                                                                        


                                                            
Socials:
https://www.juice-coin.com/
https://t.me/Juice_Coin
https://twitter.com/Juice_erc20
 
TotalSupply = 50000000
maxTransactionAmount =  1% from total supply
maxWallet =  1% from total supply
Final buy/sell and transfer fee = %5
Tax can be dynamic, but has a ceiling of %15, it's hardcoded, refer to line 321-323.

*/

pragma solidity = 0.8.19;

//--- Context ---//
abstract contract Context {
    constructor() {
    }

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}



//--- Interface for ERC20 ---//
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 v2 ---//
contract Juice is Context, Ownable, IERC20 {

    function totalSupply() external pure override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply; }
    function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return balance[account];
    }


    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private liquidityAdd;
    mapping (address => bool) private isLpPair;
    mapping (address => uint256) private balance;


   
       uint256 public  maxTransactionAmount = _totalSupply * 1 / 100;  // 1% from total supply maxTransactionAmountTxn
      uint256 public   maxWallet = _totalSupply* 1 / 100; // 1% from total supply maxWallet


    uint256 constant public _totalSupply = 50000000 * 10**18;
    uint256 constant public swapThreshold = _totalSupply / 5_00;
    uint256  public buyfee = 15;
    uint256  public sellfee = 15;
    uint256  public transferfee = 15;
    uint256 constant public fee_denominator = 1_00;
    bool private canSwapFees = true;
    address payable private marketingAddress = payable(0x6da849A5bE2Ba9EdBF8a530a12EB7Fd3be86be87);


    IRouter02 public swapRouter;
    string constant private _name = "Juice";
    string constant private _symbol = "Juice";
    uint8 constant private _decimals = 18;
    address public lpPair;
    bool public isTradingEnabled = true;
    bool private inSwap;

        modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }


  


    constructor () {
        _noFee[msg.sender] = true;

        if (block.chainid == 1 || block.chainid == 5) {
            swapRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        }
        liquidityAdd[msg.sender] = true;
        balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        
     

        lpPair = IFactoryV2(swapRouter.factory()).createPair(swapRouter.WETH(), address(this));
        isLpPair[lpPair] = true;
        _approve(msg.sender, address(swapRouter), type(uint256).max);
        _approve(address(this), address(swapRouter), type(uint256).max);
    }
    
    receive() external payable {}

        function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

        function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

        function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
    }

        function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }
    function isExemptWallet(address account) external view returns(bool) {
        return _noFee[account];
    }

    function setExemptWallet(address account, bool enabled) public onlyOwner {
        _noFee[account] = enabled;
    }

      function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        maxTransactionAmount = newNum * (10 ** 18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        maxWallet = newNum * (10 ** 18);
    }

    function isLimitedAddress(address ins, address out) internal view returns (bool) {

        bool isLimited = ins != owner()
            && out != owner() && msg.sender != owner()
            && !liquidityAdd[ins]  && !liquidityAdd[out] && out != address(0) && out != address(this);
            return isLimited;
    }

      function updateFees(
        uint256 buyfee_,
        uint256 sellfee_,
        uint256 transferfee_
    ) external onlyOwner {
           require(buyfee_ <= 15, " fee on buy cannot be more than 15%");
        require(sellfee_ <= 15, " fee on sell cannot be more than 15%");
            require(transferfee_ <= 15, " fee on transfer cannot be more than 15%");
        buyfee = buyfee_;
        sellfee = sellfee_;
        transferfee = transferfee_;
    }




    function is_buy(address ins, address out) internal view returns (bool) {
        bool _is_buy = !isLpPair[out] && isLpPair[ins];
        return _is_buy;
    }

    function is_sell(address ins, address out) internal view returns (bool) { 
        bool _is_sell = isLpPair[out] && !isLpPair[ins];
        return _is_sell;
    } 

    function _transfer(address from, address to, uint256 amount) internal returns  (bool) {
        bool takeFee = true;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (isLimitedAddress(from,to)) {
            require(isTradingEnabled,"Trading is not enabled");
        }

   if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) 
             
            ) {


                     if (
                    isLpPair[from] &&
                    !_noFee[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    isLpPair[to] &&
                    !_noFee[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_noFee[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }

            }




     




        if(is_sell(from, to) &&  !inSwap) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance >= swapThreshold) { internalSwap(contractTokenBalance); }
        }

        if (_noFee[from] || _noFee[to]){
            takeFee = false;
        }

        balance[from] -= amount; uint256 amountAfterFee = (takeFee) ? takeTaxes(from, is_buy(from, to), is_sell(from, to), amount) : amount;
        balance[to] += amountAfterFee; emit Transfer(from, to, amountAfterFee);

        return true;

    }


    function takeTaxes(address from, bool isbuy, bool issell, uint256 amount) internal returns (uint256) {
        uint256 fee;
        if (isbuy)  fee = buyfee;  else if (issell)  fee = sellfee;  else  fee = transferfee; 
        if (fee == 0)  return amount;
        uint256 feeAmount = amount * fee / fee_denominator;
        if (feeAmount > 0) {

            balance[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
            
        }
        return amount - feeAmount;
    }

    function internalSwap(uint256 contractTokenBalance) internal inSwapFlag {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }
        bool success;

        if(address(this).balance > 0) {(success,) = marketingAddress.call{value: address(this).balance, gas: 35000}("");}

    }    
}

//10 21 9 3 5 
//JUICE DEV//

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExemptWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExemptWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyfee_","type":"uint256"},{"internalType":"uint256","name":"sellfee_","type":"uint256"},{"internalType":"uint256","name":"transferfee_","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052606460016a295be96e6406697200000062000020919062000882565b6200002c9190620008fc565b600655606460016a295be96e640669720000006200004b919062000882565b620000579190620008fc565b600755600f600855600f600955600f600a556001600b60006101000a81548160ff021916908315150217905550736da849a5be2ba9edbf8a530a12eb7fd3be86be87600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60146101000a81548160ff0219169083151502179055503480156200010157600080fd5b5062000122620001166200061360201b60201c565b6200061b60201b60201c565b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060014614806200018a5750600546145b15620001e657737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506a295be96e64066972000000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a295be96e64066972000000604051620002f8919062000945565b60405180910390a3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003949190620009cc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200041d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004439190620009cc565b306040518363ffffffff1660e01b81526004016200046392919062000a0f565b6020604051808303816000875af115801562000483573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a99190620009cc565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005b833600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006df60201b60201c565b6200060d30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006df60201b60201c565b62000abf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007489062000a9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ba9062000a9d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200088f8262000849565b91506200089c8362000849565b9250828202620008ac8162000849565b91508282048414831517620008c657620008c562000853565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009098262000849565b9150620009168362000849565b925082620009295762000928620008cd565b5b828204905092915050565b6200093f8162000849565b82525050565b60006020820190506200095c600083018462000934565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009948262000967565b9050919050565b620009a68162000987565b8114620009b257600080fd5b50565b600081519050620009c6816200099b565b92915050565b600060208284031215620009e557620009e462000962565b5b6000620009f584828501620009b5565b91505092915050565b62000a098162000987565b82525050565b600060408201905062000a266000830185620009fe565b62000a356020830184620009fe565b9392505050565b600082825260208201905092915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600062000a8560138362000a3c565b915062000a928262000a4d565b602082019050919050565b6000602082019050818103600083015262000ab88162000a76565b9050919050565b6131f78062000acf6000396000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063c31c9c0711610095578063dd62ed3e11610064578063dd62ed3e14610643578063e9451f5f14610680578063f2fde38b146106ab578063f8b45b05146106d4576101cd565b8063c31c9c0714610599578063c8c8ebe4146105c4578063ca6c4281146105ef578063dc9d75b014610618576101cd565b806395d89b41116100d157806395d89b41146104cb578063a9059cbb146104f6578063bf078f6014610533578063c18bc19514610570576101cd565b8063715018a61461045e578063893d20e8146104755780638da5cb5b146104a0576101cd565b806322429085116101645780633eaaf86b1161013e5780633eaaf86b146103a0578063452ed4f1146103cb57806354de7bee146103f657806370a0823114610421576101cd565b8063224290851461030f57806323b872dd14610338578063313ce56714610375576101cd565b8063095ea7b3116101a0578063095ea7b31461025357806318160ddd146102905780631dc36945146102bb578063203e727e146102e6576101cd565b80630445b667146101d2578063064a59d0146101fd57806306fdde0314610228576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106ff565b6040516101f49190612324565b60405180910390f35b34801561020957600080fd5b5061021261071b565b60405161021f919061235a565b60405180910390f35b34801561023457600080fd5b5061023d61072e565b60405161024a9190612405565b60405180910390f35b34801561025f57600080fd5b5061027a600480360381019061027591906124b6565b61076b565b604051610287919061235a565b60405180910390f35b34801561029c57600080fd5b506102a5610782565b6040516102b29190612324565b60405180910390f35b3480156102c757600080fd5b506102d06107ac565b6040516102dd9190612324565b60405180910390f35b3480156102f257600080fd5b5061030d600480360381019061030891906124f6565b6107b2565b005b34801561031b57600080fd5b5061033660048036038101906103319190612523565b61084b565b005b34801561034457600080fd5b5061035f600480360381019061035a9190612576565b6109ad565b60405161036c919061235a565b60405180910390f35b34801561038157600080fd5b5061038a610afa565b60405161039791906125e5565b60405180910390f35b3480156103ac57600080fd5b506103b5610b1a565b6040516103c29190612324565b60405180910390f35b3480156103d757600080fd5b506103e0610b29565b6040516103ed919061260f565b60405180910390f35b34801561040257600080fd5b5061040b610b4f565b6040516104189190612324565b60405180910390f35b34801561042d57600080fd5b506104486004803603810190610443919061262a565b610b55565b6040516104559190612324565b60405180910390f35b34801561046a57600080fd5b50610473610b9e565b005b34801561048157600080fd5b5061048a610c26565b604051610497919061260f565b60405180910390f35b3480156104ac57600080fd5b506104b5610c35565b6040516104c2919061260f565b60405180910390f35b3480156104d757600080fd5b506104e0610c5e565b6040516104ed9190612405565b60405180910390f35b34801561050257600080fd5b5061051d600480360381019061051891906124b6565b610c9b565b60405161052a919061235a565b60405180910390f35b34801561053f57600080fd5b5061055a6004803603810190610555919061262a565b610cb3565b604051610567919061235a565b60405180910390f35b34801561057c57600080fd5b50610597600480360381019061059291906124f6565b610d09565b005b3480156105a557600080fd5b506105ae610da2565b6040516105bb91906126b6565b60405180910390f35b3480156105d057600080fd5b506105d9610dc8565b6040516105e69190612324565b60405180910390f35b3480156105fb57600080fd5b50610616600480360381019061061191906126fd565b610dce565b005b34801561062457600080fd5b5061062d610ea5565b60405161063a9190612324565b60405180910390f35b34801561064f57600080fd5b5061066a6004803603810190610665919061273d565b610eaa565b6040516106779190612324565b60405180910390f35b34801561068c57600080fd5b50610695610f31565b6040516106a29190612324565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd919061262a565b610f37565b005b3480156106e057600080fd5b506106e961102e565b6040516106f69190612324565b60405180910390f35b6101f46a295be96e6406697200000061071891906127db565b81565b600d60149054906101000a900460ff1681565b60606040518060400160405280600581526020017f4a75696365000000000000000000000000000000000000000000000000000000815250905090565b6000610778338484611034565b6001905092915050565b6000806a295be96e640669720000000361079b57600080fd5b6a295be96e64066972000000905090565b60085481565b6107ba611198565b73ffffffffffffffffffffffffffffffffffffffff166107d8610c35565b73ffffffffffffffffffffffffffffffffffffffff161461082e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082590612858565b60405180910390fd5b670de0b6b3a7640000816108429190612878565b60068190555050565b610853611198565b73ffffffffffffffffffffffffffffffffffffffff16610871610c35565b73ffffffffffffffffffffffffffffffffffffffff16146108c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108be90612858565b60405180910390fd5b600f83111561090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109029061292c565b60405180910390fd5b600f82111561094f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610946906129be565b60405180910390fd5b600f811115610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612a50565b60405180910390fd5b826008819055508160098190555080600a81905550505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ae65781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ade9190612a70565b925050819055505b610af18484846111a0565b90509392505050565b6000806a295be96e6406697200000003610b1357600080fd5b6012905090565b6a295be96e6406697200000081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ba6611198565b73ffffffffffffffffffffffffffffffffffffffff16610bc4610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190612858565b60405180910390fd5b610c246000611955565b565b6000610c30610c35565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4a75696365000000000000000000000000000000000000000000000000000000815250905090565b6000610ca83384846111a0565b506001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d11611198565b73ffffffffffffffffffffffffffffffffffffffff16610d2f610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90612858565b60405180910390fd5b670de0b6b3a764000081610d999190612878565b60078190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b610dd6611198565b73ffffffffffffffffffffffffffffffffffffffff16610df4610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190612858565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b610f3f611198565b73ffffffffffffffffffffffffffffffffffffffff16610f5d610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa90612858565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990612b16565b60405180910390fd5b61102b81611955565b50565b60075481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612b82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990612b82565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90612c14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90612ca6565b60405180910390fd5b600083116112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf90612d38565b60405180910390fd5b6112d28585611a19565b1561132757600d60149054906101000a900460ff16611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90612da4565b60405180910390fd5b5b61132f610c35565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561139d575061136d610c35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113d65750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611410575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156116fe57600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156114b85750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561155f57600654831115611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990612e36565b60405180910390fd5b60075461150e85610b55565b846115199190612e56565b111561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612ed6565b60405180910390fd5b6116fd565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116025750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116515760065483111561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390612f68565b60405180910390fd5b6116fc565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116fb576007546116ae85610b55565b846116b99190612e56565b11156116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f190612ed6565b60405180910390fd5b5b5b5b5b6117088585611bfa565b80156117215750600d60159054906101000a900460ff16155b1561175e57600061173130610b55565b90506101f46a295be96e6406697200000061174c91906127db565b811061175c5761175b81611cac565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117ff5750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561180957600090505b82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118589190612a70565b9250508190555060008161186c578361188b565b61188a8661187a8888612124565b6118848989611bfa565b876121d6565b5b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118dc9190612e56565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119409190612324565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611a24610c35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a925750611a62610c35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad15750611aa1610c35565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b275750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b7d5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bb65750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bee57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ca05750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600d60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ce457611ce3612f88565b5b604051908082528060200260200182016040528015611d125781602001602082028036833780820191505090505b5090503081600081518110611d2a57611d29612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df59190612ffb565b81600181518110611e0957611e08612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611fcc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612030959493929190613121565b600060405180830381600087803b15801561204a57600080fd5b505af192505050801561205b575060015b6120655750612106565b60008047111561210357600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b8906040516120b9906131ac565b600060405180830381858888f193505050503d80600081146120f7576040519150601f19603f3d011682016040523d82523d6000602084013e6120fc565b606091505b5050809150505b50505b6000600d60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121ca5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b60008084156121e9576008549050612200565b83156121f95760095490506121ff565b600a5490505b5b600081036122115782915050612303565b6000606482856122219190612878565b61222b91906127db565b905060008111156122f25780600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122859190612e56565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122e99190612324565b60405180910390a35b80846122fe9190612a70565b925050505b949350505050565b6000819050919050565b61231e8161230b565b82525050565b60006020820190506123396000830184612315565b92915050565b60008115159050919050565b6123548161233f565b82525050565b600060208201905061236f600083018461234b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123af578082015181840152602081019050612394565b60008484015250505050565b6000601f19601f8301169050919050565b60006123d782612375565b6123e18185612380565b93506123f1818560208601612391565b6123fa816123bb565b840191505092915050565b6000602082019050818103600083015261241f81846123cc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124578261242c565b9050919050565b6124678161244c565b811461247257600080fd5b50565b6000813590506124848161245e565b92915050565b6124938161230b565b811461249e57600080fd5b50565b6000813590506124b08161248a565b92915050565b600080604083850312156124cd576124cc612427565b5b60006124db85828601612475565b92505060206124ec858286016124a1565b9150509250929050565b60006020828403121561250c5761250b612427565b5b600061251a848285016124a1565b91505092915050565b60008060006060848603121561253c5761253b612427565b5b600061254a868287016124a1565b935050602061255b868287016124a1565b925050604061256c868287016124a1565b9150509250925092565b60008060006060848603121561258f5761258e612427565b5b600061259d86828701612475565b93505060206125ae86828701612475565b92505060406125bf868287016124a1565b9150509250925092565b600060ff82169050919050565b6125df816125c9565b82525050565b60006020820190506125fa60008301846125d6565b92915050565b6126098161244c565b82525050565b60006020820190506126246000830184612600565b92915050565b6000602082840312156126405761263f612427565b5b600061264e84828501612475565b91505092915050565b6000819050919050565b600061267c6126776126728461242c565b612657565b61242c565b9050919050565b600061268e82612661565b9050919050565b60006126a082612683565b9050919050565b6126b081612695565b82525050565b60006020820190506126cb60008301846126a7565b92915050565b6126da8161233f565b81146126e557600080fd5b50565b6000813590506126f7816126d1565b92915050565b6000806040838503121561271457612713612427565b5b600061272285828601612475565b9250506020612733858286016126e8565b9150509250929050565b6000806040838503121561275457612753612427565b5b600061276285828601612475565b925050602061277385828601612475565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127e68261230b565b91506127f18361230b565b9250826128015761280061277d565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612842602083612380565b915061284d8261280c565b602082019050919050565b6000602082019050818103600083015261287181612835565b9050919050565b60006128838261230b565b915061288e8361230b565b925082820261289c8161230b565b915082820484148315176128b3576128b26127ac565b5b5092915050565b7f20666565206f6e206275792063616e6e6f74206265206d6f7265207468616e2060008201527f3135250000000000000000000000000000000000000000000000000000000000602082015250565b6000612916602383612380565b9150612921826128ba565b604082019050919050565b6000602082019050818103600083015261294581612909565b9050919050565b7f20666565206f6e2073656c6c2063616e6e6f74206265206d6f7265207468616e60008201527f2031352500000000000000000000000000000000000000000000000000000000602082015250565b60006129a8602483612380565b91506129b38261294c565b604082019050919050565b600060208201905081810360008301526129d78161299b565b9050919050565b7f20666565206f6e207472616e736665722063616e6e6f74206265206d6f72652060008201527f7468616e20313525000000000000000000000000000000000000000000000000602082015250565b6000612a3a602883612380565b9150612a45826129de565b604082019050919050565b60006020820190508181036000830152612a6981612a2d565b9050919050565b6000612a7b8261230b565b9150612a868361230b565b9250828203905081811115612a9e57612a9d6127ac565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b00602683612380565b9150612b0b82612aa4565b604082019050919050565b60006020820190508181036000830152612b2f81612af3565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612b6c601383612380565b9150612b7782612b36565b602082019050919050565b60006020820190508181036000830152612b9b81612b5f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bfe602383612380565b9150612c0982612ba2565b604082019050919050565b60006020820190508181036000830152612c2d81612bf1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c90602583612380565b9150612c9b82612c34565b604082019050919050565b60006020820190508181036000830152612cbf81612c83565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d22602983612380565b9150612d2d82612cc6565b604082019050919050565b60006020820190508181036000830152612d5181612d15565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612d8e601683612380565b9150612d9982612d58565b602082019050919050565b60006020820190508181036000830152612dbd81612d81565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000612e20603583612380565b9150612e2b82612dc4565b604082019050919050565b60006020820190508181036000830152612e4f81612e13565b9050919050565b6000612e618261230b565b9150612e6c8361230b565b9250828201905080821115612e8457612e836127ac565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000612ec0601383612380565b9150612ecb82612e8a565b602082019050919050565b60006020820190508181036000830152612eef81612eb3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000612f52603683612380565b9150612f5d82612ef6565b604082019050919050565b60006020820190508181036000830152612f8181612f45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ff58161245e565b92915050565b60006020828403121561301157613010612427565b5b600061301f84828501612fe6565b91505092915050565b6000819050919050565b600061304d61304861304384613028565b612657565b61230b565b9050919050565b61305d81613032565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130988161244c565b82525050565b60006130aa838361308f565b60208301905092915050565b6000602082019050919050565b60006130ce82613063565b6130d8818561306e565b93506130e38361307f565b8060005b838110156131145781516130fb888261309e565b9750613106836130b6565b9250506001810190506130e7565b5085935050505092915050565b600060a0820190506131366000830188612315565b6131436020830187613054565b818103604083015261315581866130c3565b90506131646060830185612600565b6131716080830184612315565b9695505050505050565b600081905092915050565b50565b600061319660008361317b565b91506131a182613186565b600082019050919050565b60006131b782613189565b915081905091905056fea2646970667358221220a9b291e5b8b28f80f83f61b6baf38f6c24babbb98b60495c40f877a03e51734e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c8063715018a6116100f7578063c31c9c0711610095578063dd62ed3e11610064578063dd62ed3e14610643578063e9451f5f14610680578063f2fde38b146106ab578063f8b45b05146106d4576101cd565b8063c31c9c0714610599578063c8c8ebe4146105c4578063ca6c4281146105ef578063dc9d75b014610618576101cd565b806395d89b41116100d157806395d89b41146104cb578063a9059cbb146104f6578063bf078f6014610533578063c18bc19514610570576101cd565b8063715018a61461045e578063893d20e8146104755780638da5cb5b146104a0576101cd565b806322429085116101645780633eaaf86b1161013e5780633eaaf86b146103a0578063452ed4f1146103cb57806354de7bee146103f657806370a0823114610421576101cd565b8063224290851461030f57806323b872dd14610338578063313ce56714610375576101cd565b8063095ea7b3116101a0578063095ea7b31461025357806318160ddd146102905780631dc36945146102bb578063203e727e146102e6576101cd565b80630445b667146101d2578063064a59d0146101fd57806306fdde0314610228576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106ff565b6040516101f49190612324565b60405180910390f35b34801561020957600080fd5b5061021261071b565b60405161021f919061235a565b60405180910390f35b34801561023457600080fd5b5061023d61072e565b60405161024a9190612405565b60405180910390f35b34801561025f57600080fd5b5061027a600480360381019061027591906124b6565b61076b565b604051610287919061235a565b60405180910390f35b34801561029c57600080fd5b506102a5610782565b6040516102b29190612324565b60405180910390f35b3480156102c757600080fd5b506102d06107ac565b6040516102dd9190612324565b60405180910390f35b3480156102f257600080fd5b5061030d600480360381019061030891906124f6565b6107b2565b005b34801561031b57600080fd5b5061033660048036038101906103319190612523565b61084b565b005b34801561034457600080fd5b5061035f600480360381019061035a9190612576565b6109ad565b60405161036c919061235a565b60405180910390f35b34801561038157600080fd5b5061038a610afa565b60405161039791906125e5565b60405180910390f35b3480156103ac57600080fd5b506103b5610b1a565b6040516103c29190612324565b60405180910390f35b3480156103d757600080fd5b506103e0610b29565b6040516103ed919061260f565b60405180910390f35b34801561040257600080fd5b5061040b610b4f565b6040516104189190612324565b60405180910390f35b34801561042d57600080fd5b506104486004803603810190610443919061262a565b610b55565b6040516104559190612324565b60405180910390f35b34801561046a57600080fd5b50610473610b9e565b005b34801561048157600080fd5b5061048a610c26565b604051610497919061260f565b60405180910390f35b3480156104ac57600080fd5b506104b5610c35565b6040516104c2919061260f565b60405180910390f35b3480156104d757600080fd5b506104e0610c5e565b6040516104ed9190612405565b60405180910390f35b34801561050257600080fd5b5061051d600480360381019061051891906124b6565b610c9b565b60405161052a919061235a565b60405180910390f35b34801561053f57600080fd5b5061055a6004803603810190610555919061262a565b610cb3565b604051610567919061235a565b60405180910390f35b34801561057c57600080fd5b50610597600480360381019061059291906124f6565b610d09565b005b3480156105a557600080fd5b506105ae610da2565b6040516105bb91906126b6565b60405180910390f35b3480156105d057600080fd5b506105d9610dc8565b6040516105e69190612324565b60405180910390f35b3480156105fb57600080fd5b50610616600480360381019061061191906126fd565b610dce565b005b34801561062457600080fd5b5061062d610ea5565b60405161063a9190612324565b60405180910390f35b34801561064f57600080fd5b5061066a6004803603810190610665919061273d565b610eaa565b6040516106779190612324565b60405180910390f35b34801561068c57600080fd5b50610695610f31565b6040516106a29190612324565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd919061262a565b610f37565b005b3480156106e057600080fd5b506106e961102e565b6040516106f69190612324565b60405180910390f35b6101f46a295be96e6406697200000061071891906127db565b81565b600d60149054906101000a900460ff1681565b60606040518060400160405280600581526020017f4a75696365000000000000000000000000000000000000000000000000000000815250905090565b6000610778338484611034565b6001905092915050565b6000806a295be96e640669720000000361079b57600080fd5b6a295be96e64066972000000905090565b60085481565b6107ba611198565b73ffffffffffffffffffffffffffffffffffffffff166107d8610c35565b73ffffffffffffffffffffffffffffffffffffffff161461082e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082590612858565b60405180910390fd5b670de0b6b3a7640000816108429190612878565b60068190555050565b610853611198565b73ffffffffffffffffffffffffffffffffffffffff16610871610c35565b73ffffffffffffffffffffffffffffffffffffffff16146108c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108be90612858565b60405180910390fd5b600f83111561090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109029061292c565b60405180910390fd5b600f82111561094f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610946906129be565b60405180910390fd5b600f811115610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612a50565b60405180910390fd5b826008819055508160098190555080600a81905550505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ae65781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ade9190612a70565b925050819055505b610af18484846111a0565b90509392505050565b6000806a295be96e6406697200000003610b1357600080fd5b6012905090565b6a295be96e6406697200000081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ba6611198565b73ffffffffffffffffffffffffffffffffffffffff16610bc4610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190612858565b60405180910390fd5b610c246000611955565b565b6000610c30610c35565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4a75696365000000000000000000000000000000000000000000000000000000815250905090565b6000610ca83384846111a0565b506001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d11611198565b73ffffffffffffffffffffffffffffffffffffffff16610d2f610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90612858565b60405180910390fd5b670de0b6b3a764000081610d999190612878565b60078190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b610dd6611198565b73ffffffffffffffffffffffffffffffffffffffff16610df4610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190612858565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b610f3f611198565b73ffffffffffffffffffffffffffffffffffffffff16610f5d610c35565b73ffffffffffffffffffffffffffffffffffffffff1614610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa90612858565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990612b16565b60405180910390fd5b61102b81611955565b50565b60075481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612b82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990612b82565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90612c14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90612ca6565b60405180910390fd5b600083116112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf90612d38565b60405180910390fd5b6112d28585611a19565b1561132757600d60149054906101000a900460ff16611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90612da4565b60405180910390fd5b5b61132f610c35565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561139d575061136d610c35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156113d65750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611410575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156116fe57600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156114b85750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561155f57600654831115611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990612e36565b60405180910390fd5b60075461150e85610b55565b846115199190612e56565b111561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612ed6565b60405180910390fd5b6116fd565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116025750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116515760065483111561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390612f68565b60405180910390fd5b6116fc565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116fb576007546116ae85610b55565b846116b99190612e56565b11156116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f190612ed6565b60405180910390fd5b5b5b5b5b6117088585611bfa565b80156117215750600d60159054906101000a900460ff16155b1561175e57600061173130610b55565b90506101f46a295be96e6406697200000061174c91906127db565b811061175c5761175b81611cac565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117ff5750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561180957600090505b82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118589190612a70565b9250508190555060008161186c578361188b565b61188a8661187a8888612124565b6118848989611bfa565b876121d6565b5b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118dc9190612e56565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119409190612324565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611a24610c35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a925750611a62610c35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad15750611aa1610c35565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b275750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b7d5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bb65750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bee57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ca05750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600d60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ce457611ce3612f88565b5b604051908082528060200260200182016040528015611d125781602001602082028036833780820191505090505b5090503081600081518110611d2a57611d29612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df59190612ffb565b81600181518110611e0957611e08612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611fcc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612030959493929190613121565b600060405180830381600087803b15801561204a57600080fd5b505af192505050801561205b575060015b6120655750612106565b60008047111561210357600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b8906040516120b9906131ac565b600060405180830381858888f193505050503d80600081146120f7576040519150601f19603f3d011682016040523d82523d6000602084013e6120fc565b606091505b5050809150505b50505b6000600d60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121ca5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b60008084156121e9576008549050612200565b83156121f95760095490506121ff565b600a5490505b5b600081036122115782915050612303565b6000606482856122219190612878565b61222b91906127db565b905060008111156122f25780600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122859190612e56565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122e99190612324565b60405180910390a35b80846122fe9190612a70565b925050505b949350505050565b6000819050919050565b61231e8161230b565b82525050565b60006020820190506123396000830184612315565b92915050565b60008115159050919050565b6123548161233f565b82525050565b600060208201905061236f600083018461234b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123af578082015181840152602081019050612394565b60008484015250505050565b6000601f19601f8301169050919050565b60006123d782612375565b6123e18185612380565b93506123f1818560208601612391565b6123fa816123bb565b840191505092915050565b6000602082019050818103600083015261241f81846123cc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124578261242c565b9050919050565b6124678161244c565b811461247257600080fd5b50565b6000813590506124848161245e565b92915050565b6124938161230b565b811461249e57600080fd5b50565b6000813590506124b08161248a565b92915050565b600080604083850312156124cd576124cc612427565b5b60006124db85828601612475565b92505060206124ec858286016124a1565b9150509250929050565b60006020828403121561250c5761250b612427565b5b600061251a848285016124a1565b91505092915050565b60008060006060848603121561253c5761253b612427565b5b600061254a868287016124a1565b935050602061255b868287016124a1565b925050604061256c868287016124a1565b9150509250925092565b60008060006060848603121561258f5761258e612427565b5b600061259d86828701612475565b93505060206125ae86828701612475565b92505060406125bf868287016124a1565b9150509250925092565b600060ff82169050919050565b6125df816125c9565b82525050565b60006020820190506125fa60008301846125d6565b92915050565b6126098161244c565b82525050565b60006020820190506126246000830184612600565b92915050565b6000602082840312156126405761263f612427565b5b600061264e84828501612475565b91505092915050565b6000819050919050565b600061267c6126776126728461242c565b612657565b61242c565b9050919050565b600061268e82612661565b9050919050565b60006126a082612683565b9050919050565b6126b081612695565b82525050565b60006020820190506126cb60008301846126a7565b92915050565b6126da8161233f565b81146126e557600080fd5b50565b6000813590506126f7816126d1565b92915050565b6000806040838503121561271457612713612427565b5b600061272285828601612475565b9250506020612733858286016126e8565b9150509250929050565b6000806040838503121561275457612753612427565b5b600061276285828601612475565b925050602061277385828601612475565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127e68261230b565b91506127f18361230b565b9250826128015761280061277d565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612842602083612380565b915061284d8261280c565b602082019050919050565b6000602082019050818103600083015261287181612835565b9050919050565b60006128838261230b565b915061288e8361230b565b925082820261289c8161230b565b915082820484148315176128b3576128b26127ac565b5b5092915050565b7f20666565206f6e206275792063616e6e6f74206265206d6f7265207468616e2060008201527f3135250000000000000000000000000000000000000000000000000000000000602082015250565b6000612916602383612380565b9150612921826128ba565b604082019050919050565b6000602082019050818103600083015261294581612909565b9050919050565b7f20666565206f6e2073656c6c2063616e6e6f74206265206d6f7265207468616e60008201527f2031352500000000000000000000000000000000000000000000000000000000602082015250565b60006129a8602483612380565b91506129b38261294c565b604082019050919050565b600060208201905081810360008301526129d78161299b565b9050919050565b7f20666565206f6e207472616e736665722063616e6e6f74206265206d6f72652060008201527f7468616e20313525000000000000000000000000000000000000000000000000602082015250565b6000612a3a602883612380565b9150612a45826129de565b604082019050919050565b60006020820190508181036000830152612a6981612a2d565b9050919050565b6000612a7b8261230b565b9150612a868361230b565b9250828203905081811115612a9e57612a9d6127ac565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b00602683612380565b9150612b0b82612aa4565b604082019050919050565b60006020820190508181036000830152612b2f81612af3565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612b6c601383612380565b9150612b7782612b36565b602082019050919050565b60006020820190508181036000830152612b9b81612b5f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bfe602383612380565b9150612c0982612ba2565b604082019050919050565b60006020820190508181036000830152612c2d81612bf1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c90602583612380565b9150612c9b82612c34565b604082019050919050565b60006020820190508181036000830152612cbf81612c83565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d22602983612380565b9150612d2d82612cc6565b604082019050919050565b60006020820190508181036000830152612d5181612d15565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612d8e601683612380565b9150612d9982612d58565b602082019050919050565b60006020820190508181036000830152612dbd81612d81565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000612e20603583612380565b9150612e2b82612dc4565b604082019050919050565b60006020820190508181036000830152612e4f81612e13565b9050919050565b6000612e618261230b565b9150612e6c8361230b565b9250828201905080821115612e8457612e836127ac565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000612ec0601383612380565b9150612ecb82612e8a565b602082019050919050565b60006020820190508181036000830152612eef81612eb3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000612f52603683612380565b9150612f5d82612ef6565b604082019050919050565b60006020820190508181036000830152612f8181612f45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ff58161245e565b92915050565b60006020828403121561301157613010612427565b5b600061301f84828501612fe6565b91505092915050565b6000819050919050565b600061304d61304861304384613028565b612657565b61230b565b9050919050565b61305d81613032565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130988161244c565b82525050565b60006130aa838361308f565b60208301905092915050565b6000602082019050919050565b60006130ce82613063565b6130d8818561306e565b93506130e38361307f565b8060005b838110156131145781516130fb888261309e565b9750613106836130b6565b9250506001810190506130e7565b5085935050505092915050565b600060a0820190506131366000830188612315565b6131436020830187613054565b818103604083015261315581866130c3565b90506131646060830185612600565b6131716080830184612315565b9695505050505050565b600081905092915050565b50565b600061319660008361317b565b91506131a182613186565b600082019050919050565b60006131b782613189565b915081905091905056fea2646970667358221220a9b291e5b8b28f80f83f61b6baf38f6c24babbb98b60495c40f877a03e51734e64736f6c63430008130033

Deployed Bytecode Sourcemap

8511:9133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9910:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10480:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8907:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11547:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8563:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9976:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12550:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13139:466;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11993:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8694:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9847:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10452:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10045:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9218:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4488:94;;;;;;;;;;;;;:::i;:::-;;8993:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4265:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8817:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11370:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12305:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12682:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10280:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9633:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12423:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10084:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9079:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10010:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4590:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9752:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9910:59;9965:4;9886:17;9950:19;;;;:::i;:::-;9910:59;:::o;10480:35::-;;;;;;;;;;;;;:::o;8907:80::-;8955:13;8979:5;;;;;;;;;;;;;;;;;8972:12;;8907:80;:::o;11547:161::-;11624:4;11641:37;11650:10;11662:7;11671:6;11641:8;:37::i;:::-;11696:4;11689:11;;11547:161;;;;:::o;8563:125::-;8618:7;8649:1;9886:17;8633;8629:36;;8654:8;;;8629:36;9886:17;8666:19;;8563:125;:::o;9976:27::-;;;;:::o;12550:124::-;4411:12;:10;:12::i;:::-;4400:23;;:7;:5;:7::i;:::-;:23;;;4392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12657:8:::1;12647:6;:19;;;;:::i;:::-;12624:20;:42;;;;12550:124:::0;:::o;13139:466::-;4411:12;:10;:12::i;:::-;4400:23;;:7;:5;:7::i;:::-;:23;;;4392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13302:2:::1;13291:7;:13;;13283:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13375:2;13363:8;:14;;13355:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;13457:2;13441:12;:18;;13433:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13524:7;13515:6;:16;;;;13552:8;13542:7;:18;;;;13585:12;13571:11;:26;;;;13139:466:::0;;;:::o;11993:306::-;12093:4;12149:17;12114:11;:19;12126:6;12114:19;;;;;;;;;;;;;;;:31;12134:10;12114:31;;;;;;;;;;;;;;;;:52;12110:126;;12218:6;12183:11;:19;12195:6;12183:19;;;;;;;;;;;;;;;:31;12203:10;12183:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;12110:126;12255:36;12265:6;12273:9;12284:6;12255:9;:36::i;:::-;12248:43;;11993:306;;;;;:::o;8694:117::-;8746:5;8775:1;9886:17;8759;8755:36;;8780:8;;;8755:36;10443:2;8792:16;;8694:117;:::o;9847:56::-;9886:17;9847:56;:::o;10452:21::-;;;;;;;;;;;;;:::o;10045:32::-;;;;:::o;9218:117::-;9284:7;9311;:16;9319:7;9311:16;;;;;;;;;;;;;;;;9304:23;;9218:117;;;:::o;4488:94::-;4411:12;:10;:12::i;:::-;4400:23;;:7;:5;:7::i;:::-;:23;;;4392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4553:21:::1;4571:1;4553:9;:21::i;:::-;4488:94::o:0;8993:80::-;9045:7;9063;:5;:7::i;:::-;9056:14;;8993:80;:::o;4265:87::-;4311:7;4338:6;;;;;;;;;;;4331:13;;4265:87;:::o;8817:84::-;8867:13;8891:7;;;;;;;;;;;;;;;;;8884:14;;8817:84;:::o;11370:165::-;11448:4;11465:40;11475:10;11487:9;11498:6;11465:9;:40::i;:::-;;11523:4;11516:11;;11370:165;;;;:::o;12305:110::-;12368:4;12392:6;:15;12399:7;12392:15;;;;;;;;;;;;;;;;;;;;;;;;;12385:22;;12305:110;;;:::o;12682:116::-;4411:12;:10;:12::i;:::-;4400:23;;:7;:5;:7::i;:::-;:23;;;4392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12781:8:::1;12771:6;:19;;;;:::i;:::-;12759:9;:31;;;;12682:116:::0;:::o;10280:27::-;;;;;;;;;;;;;:::o;9633:61::-;;;;:::o;12423:117::-;4411:12;:10;:12::i;:::-;4400:23;;:7;:5;:7::i;:::-;:23;;;4392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12525:7:::1;12507:6;:15;12514:7;12507:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12423:117:::0;;:::o;10084:46::-;10126:4;10084:46;:::o;9079:133::-;9163:7;9181:11;:19;9193:6;9181:19;;;;;;;;;;;;;;;:28;9201:7;9181:28;;;;;;;;;;;;;;;;9174:35;;9079:133;;;;:::o;10010:28::-;;;;:::o;4590:192::-;4411:12;:10;:12::i;:::-;4400:23;;:7;:5;:7::i;:::-;:23;;;4392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4699:1:::1;4679:22;;:8;:22;;::::0;4671:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4755:19;4765:8;4755:9;:19::i;:::-;4590:192:::0;:::o;9752:50::-;;;;:::o;11720:261::-;11833:1;11815:20;;:6;:20;;;11807:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11897:1;11878:21;;:7;:21;;;11870:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11967:6;11936:11;:19;11948:6;11936:19;;;;;;;;;;;;;;;:28;11956:7;11936:28;;;;;;;;;;;;;;;:37;;;;11720:261;;;:::o;3785:107::-;3830:15;3873:10;3858:26;;3785:107;:::o;13962:2325::-;14042:4;14059:12;14074:4;14059:19;;14111:1;14097:16;;:2;:16;;;14089:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14188:1;14172:18;;:4;:18;;;14164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14260:1;14251:6;:10;14243:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14324:25;14341:4;14346:2;14324:16;:25::i;:::-;14320:108;;;14374:16;;;;;;;;;;;14366:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14320:108;14465:7;:5;:7::i;:::-;14457:15;;:4;:15;;;;:49;;;;;14499:7;:5;:7::i;:::-;14493:13;;:2;:13;;;;14457:49;:86;;;;;14541:1;14527:16;;:2;:16;;;;14457:86;:128;;;;;14578:6;14564:21;;:2;:21;;;;14457:128;14435:1265;;;14671:8;:14;14680:4;14671:14;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;14711:6;:10;14718:2;14711:10;;;;;;;;;;;;;;;;;;;;;;;;;14710:11;14671:50;14645:1038;;;14808:20;;14798:6;:30;;14764:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;15016:9;;14999:13;15009:2;14999:9;:13::i;:::-;14990:6;:22;;;;:::i;:::-;:35;;14956:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;14645:1038;;;15194:8;:12;15203:2;15194:12;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;15232:6;:12;15239:4;15232:12;;;;;;;;;;;;;;;;;;;;;;;;;15231:13;15194:50;15168:515;;;15331:20;;15321:6;:30;;15287:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;15168:515;;;15488:6;:10;15495:2;15488:10;;;;;;;;;;;;;;;;;;;;;;;;;15483:200;;15583:9;;15566:13;15576:2;15566:9;:13::i;:::-;15557:6;:22;;;;:::i;:::-;:35;;15523:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;15483:200;15168:515;14645:1038;14435:1265;15736:17;15744:4;15750:2;15736:7;:17::i;:::-;:29;;;;;15759:6;;;;;;;;;;;15758:7;15736:29;15733:211;;;15782:28;15813:24;15831:4;15813:9;:24::i;:::-;15782:55;;9965:4;9886:17;9950:19;;;;:::i;:::-;15855:20;:37;15852:81;;15896:34;15909:20;15896:12;:34::i;:::-;15852:81;15767:177;15733:211;15960:6;:12;15967:4;15960:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;15976:6;:10;15983:2;15976:10;;;;;;;;;;;;;;;;;;;;;;;;;15960:26;15956:73;;;16012:5;16002:15;;15956:73;16058:6;16041:7;:13;16049:4;16041:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;16066:22;16092:7;16091:81;;16166:6;16091:81;;;16103:60;16113:4;16119:16;16126:4;16132:2;16119:6;:16::i;:::-;16137:17;16145:4;16151:2;16137:7;:17::i;:::-;16156:6;16103:9;:60::i;:::-;16091:81;16066:106;;16198:14;16183:7;:11;16191:2;16183:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;16234:2;16219:34;;16228:4;16219:34;;;16238:14;16219:34;;;;;;:::i;:::-;;;;;;;;16273:4;16266:11;;;;13962:2325;;;;;:::o;4790:173::-;4846:16;4865:6;;;;;;;;;;;4846:25;;4891:8;4882:6;;:17;;;;;;;;;;;;;;;;;;4946:8;4915:40;;4936:8;4915:40;;;;;;;;;;;;4835:128;4790:173;:::o;12806:323::-;12881:4;12900:14;12924:7;:5;:7::i;:::-;12917:14;;:3;:14;;;;:45;;;;;12955:7;:5;:7::i;:::-;12948:14;;:3;:14;;;;12917:45;:70;;;;;12980:7;:5;:7::i;:::-;12966:21;;:10;:21;;;;12917:70;:105;;;;;13005:12;:17;13018:3;13005:17;;;;;;;;;;;;;;;;;;;;;;;;;13004:18;12917:105;:128;;;;;13028:12;:17;13041:3;13028:17;;;;;;;;;;;;;;;;;;;;;;;;;13027:18;12917:128;:149;;;;;13064:1;13049:17;;:3;:17;;;;12917:149;:173;;;;;13085:4;13070:20;;:3;:20;;;;12917:173;12900:190;;13112:9;13105:16;;;12806:323;;;;:::o;13788:165::-;13854:4;13872:13;13888:8;:13;13897:3;13888:13;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;;13906:8;:13;13915:3;13906:13;;;;;;;;;;;;;;;;;;;;;;;;;13905:14;13888:31;13872:47;;13937:8;13930:15;;;13788:165;;;;:::o;16835:802::-;10594:4;10585:6;;:13;;;;;;;;;;;;;;;;;;16928:21:::1;16966:1;16952:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16928:40;;16997:4;16979;16984:1;16979:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17023:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17013:4;17018:1;17013:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;17108:17;17057:11;:26;17077:4;17057:26;;;;;;;;;;;;;;;:47;17092:10;;;;;;;;;;;17057:47;;;;;;;;;;;;;;;;:68;17053:168;;17192:17;17142:11;:26;17162:4;17142:26;;;;;;;;;;;;;;;:47;17177:10;;;;;;;;;;;17142:47;;;;;;;;;;;;;;;:67;;;;17053:168;17237:10;;;;;;;;;;;:61;;;17313:20;17348:1;17364:4;17391;17411:15;17237:200;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17233:247;;17462:7;;;17233:247;17490:12;17542:1:::0;17518:21:::1;:25;17515:113;;;17559:16;;;;;;;;;;;:21;;17588;17616:5;17559:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17546:80;;;;;17515:113;16907:730;;10609:1;10630:5:::0;10621:6;;:14;;;;;;;;;;;;;;;;;;16835:802;:::o;13619:161::-;13684:4;13701:12;13717:8;:13;13726:3;13717:13;;;;;;;;;;;;;;;;;;;;;;;;;13716:14;:31;;;;;13734:8;:13;13743:3;13734:13;;;;;;;;;;;;;;;;;;;;;;;;;13716:31;13701:46;;13765:7;13758:14;;;13619:161;;;;:::o;16297:530::-;16389:7;16409:11;16435:5;16431:84;;;16449:6;;16443:12;;16431:84;;;16467:6;16463:52;;;16482:7;;16476:13;;16463:52;;;16504:11;;16498:17;;16463:52;16431:84;16538:1;16531:3;:8;16527:28;;16549:6;16542:13;;;;;16527:28;16566:17;10126:4;16595:3;16586:6;:12;;;;:::i;:::-;:30;;;;:::i;:::-;16566:50;;16643:1;16631:9;:13;16627:157;;;16689:9;16663:7;:22;16679:4;16663:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;16741:4;16718:40;;16727:4;16718:40;;;16748:9;16718:40;;;;;;:::i;:::-;;;;;;;;16627:157;16810:9;16801:6;:18;;;;:::i;:::-;16794:25;;;;16297:530;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:90::-;476:7;519:5;512:13;505:21;494:32;;442:90;;;:::o;538:109::-;619:21;634:5;619:21;:::i;:::-;614:3;607:34;538:109;;:::o;653:210::-;740:4;778:2;767:9;763:18;755:26;;791:65;853:1;842:9;838:17;829:6;791:65;:::i;:::-;653:210;;;;:::o;869:99::-;921:6;955:5;949:12;939:22;;869:99;;;:::o;974:169::-;1058:11;1092:6;1087:3;1080:19;1132:4;1127:3;1123:14;1108:29;;974:169;;;;:::o;1149:246::-;1230:1;1240:113;1254:6;1251:1;1248:13;1240:113;;;1339:1;1334:3;1330:11;1324:18;1320:1;1315:3;1311:11;1304:39;1276:2;1273:1;1269:10;1264:15;;1240:113;;;1387:1;1378:6;1373:3;1369:16;1362:27;1211:184;1149:246;;;:::o;1401:102::-;1442:6;1493:2;1489:7;1484:2;1477:5;1473:14;1469:28;1459:38;;1401:102;;;:::o;1509:377::-;1597:3;1625:39;1658:5;1625:39;:::i;:::-;1680:71;1744:6;1739:3;1680:71;:::i;:::-;1673:78;;1760:65;1818:6;1813:3;1806:4;1799:5;1795:16;1760:65;:::i;:::-;1850:29;1872:6;1850:29;:::i;:::-;1845:3;1841:39;1834:46;;1601:285;1509:377;;;;:::o;1892:313::-;2005:4;2043:2;2032:9;2028:18;2020:26;;2092:9;2086:4;2082:20;2078:1;2067:9;2063:17;2056:47;2120:78;2193:4;2184:6;2120:78;:::i;:::-;2112:86;;1892:313;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:118::-;5900:24;5918:5;5900:24;:::i;:::-;5895:3;5888:37;5813:118;;:::o;5937:222::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:71;6149:1;6138:9;6134:17;6125:6;6081:71;:::i;:::-;5937:222;;;;:::o;6165:329::-;6224:6;6273:2;6261:9;6252:7;6248:23;6244:32;6241:119;;;6279:79;;:::i;:::-;6241:119;6399:1;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6370:117;6165:329;;;;:::o;6500:60::-;6528:3;6549:5;6542:12;;6500:60;;;:::o;6566:142::-;6616:9;6649:53;6667:34;6676:24;6694:5;6676:24;:::i;:::-;6667:34;:::i;:::-;6649:53;:::i;:::-;6636:66;;6566:142;;;:::o;6714:126::-;6764:9;6797:37;6828:5;6797:37;:::i;:::-;6784:50;;6714:126;;;:::o;6846:143::-;6913:9;6946:37;6977:5;6946:37;:::i;:::-;6933:50;;6846:143;;;:::o;6995:165::-;7099:54;7147:5;7099:54;:::i;:::-;7094:3;7087:67;6995:165;;:::o;7166:256::-;7276:4;7314:2;7303:9;7299:18;7291:26;;7327:88;7412:1;7401:9;7397:17;7388:6;7327:88;:::i;:::-;7166:256;;;;:::o;7428:116::-;7498:21;7513:5;7498:21;:::i;:::-;7491:5;7488:32;7478:60;;7534:1;7531;7524:12;7478:60;7428:116;:::o;7550:133::-;7593:5;7631:6;7618:20;7609:29;;7647:30;7671:5;7647:30;:::i;:::-;7550:133;;;;:::o;7689:468::-;7754:6;7762;7811:2;7799:9;7790:7;7786:23;7782:32;7779:119;;;7817:79;;:::i;:::-;7779:119;7937:1;7962:53;8007:7;7998:6;7987:9;7983:22;7962:53;:::i;:::-;7952:63;;7908:117;8064:2;8090:50;8132:7;8123:6;8112:9;8108:22;8090:50;:::i;:::-;8080:60;;8035:115;7689:468;;;;;:::o;8163:474::-;8231:6;8239;8288:2;8276:9;8267:7;8263:23;8259:32;8256:119;;;8294:79;;:::i;:::-;8256:119;8414:1;8439:53;8484:7;8475:6;8464:9;8460:22;8439:53;:::i;:::-;8429:63;;8385:117;8541:2;8567:53;8612:7;8603:6;8592:9;8588:22;8567:53;:::i;:::-;8557:63;;8512:118;8163:474;;;;;:::o;8643:180::-;8691:77;8688:1;8681:88;8788:4;8785:1;8778:15;8812:4;8809:1;8802:15;8829:180;8877:77;8874:1;8867:88;8974:4;8971:1;8964:15;8998:4;8995:1;8988:15;9015:185;9055:1;9072:20;9090:1;9072:20;:::i;:::-;9067:25;;9106:20;9124:1;9106:20;:::i;:::-;9101:25;;9145:1;9135:35;;9150:18;;:::i;:::-;9135:35;9192:1;9189;9185:9;9180:14;;9015:185;;;;:::o;9206:182::-;9346:34;9342:1;9334:6;9330:14;9323:58;9206:182;:::o;9394:366::-;9536:3;9557:67;9621:2;9616:3;9557:67;:::i;:::-;9550:74;;9633:93;9722:3;9633:93;:::i;:::-;9751:2;9746:3;9742:12;9735:19;;9394:366;;;:::o;9766:419::-;9932:4;9970:2;9959:9;9955:18;9947:26;;10019:9;10013:4;10009:20;10005:1;9994:9;9990:17;9983:47;10047:131;10173:4;10047:131;:::i;:::-;10039:139;;9766:419;;;:::o;10191:410::-;10231:7;10254:20;10272:1;10254:20;:::i;:::-;10249:25;;10288:20;10306:1;10288:20;:::i;:::-;10283:25;;10343:1;10340;10336:9;10365:30;10383:11;10365:30;:::i;:::-;10354:41;;10544:1;10535:7;10531:15;10528:1;10525:22;10505:1;10498:9;10478:83;10455:139;;10574:18;;:::i;:::-;10455:139;10239:362;10191:410;;;;:::o;10607:222::-;10747:34;10743:1;10735:6;10731:14;10724:58;10816:5;10811:2;10803:6;10799:15;10792:30;10607:222;:::o;10835:366::-;10977:3;10998:67;11062:2;11057:3;10998:67;:::i;:::-;10991:74;;11074:93;11163:3;11074:93;:::i;:::-;11192:2;11187:3;11183:12;11176:19;;10835:366;;;:::o;11207:419::-;11373:4;11411:2;11400:9;11396:18;11388:26;;11460:9;11454:4;11450:20;11446:1;11435:9;11431:17;11424:47;11488:131;11614:4;11488:131;:::i;:::-;11480:139;;11207:419;;;:::o;11632:223::-;11772:34;11768:1;11760:6;11756:14;11749:58;11841:6;11836:2;11828:6;11824:15;11817:31;11632:223;:::o;11861:366::-;12003:3;12024:67;12088:2;12083:3;12024:67;:::i;:::-;12017:74;;12100:93;12189:3;12100:93;:::i;:::-;12218:2;12213:3;12209:12;12202:19;;11861:366;;;:::o;12233:419::-;12399:4;12437:2;12426:9;12422:18;12414:26;;12486:9;12480:4;12476:20;12472:1;12461:9;12457:17;12450:47;12514:131;12640:4;12514:131;:::i;:::-;12506:139;;12233:419;;;:::o;12658:227::-;12798:34;12794:1;12786:6;12782:14;12775:58;12867:10;12862:2;12854:6;12850:15;12843:35;12658:227;:::o;12891:366::-;13033:3;13054:67;13118:2;13113:3;13054:67;:::i;:::-;13047:74;;13130:93;13219:3;13130:93;:::i;:::-;13248:2;13243:3;13239:12;13232:19;;12891:366;;;:::o;13263:419::-;13429:4;13467:2;13456:9;13452:18;13444:26;;13516:9;13510:4;13506:20;13502:1;13491:9;13487:17;13480:47;13544:131;13670:4;13544:131;:::i;:::-;13536:139;;13263:419;;;:::o;13688:194::-;13728:4;13748:20;13766:1;13748:20;:::i;:::-;13743:25;;13782:20;13800:1;13782:20;:::i;:::-;13777:25;;13826:1;13823;13819:9;13811:17;;13850:1;13844:4;13841:11;13838:37;;;13855:18;;:::i;:::-;13838:37;13688:194;;;;:::o;13888:225::-;14028:34;14024:1;14016:6;14012:14;14005:58;14097:8;14092:2;14084:6;14080:15;14073:33;13888:225;:::o;14119:366::-;14261:3;14282:67;14346:2;14341:3;14282:67;:::i;:::-;14275:74;;14358:93;14447:3;14358:93;:::i;:::-;14476:2;14471:3;14467:12;14460:19;;14119:366;;;:::o;14491:419::-;14657:4;14695:2;14684:9;14680:18;14672:26;;14744:9;14738:4;14734:20;14730:1;14719:9;14715:17;14708:47;14772:131;14898:4;14772:131;:::i;:::-;14764:139;;14491:419;;;:::o;14916:169::-;15056:21;15052:1;15044:6;15040:14;15033:45;14916:169;:::o;15091:366::-;15233:3;15254:67;15318:2;15313:3;15254:67;:::i;:::-;15247:74;;15330:93;15419:3;15330:93;:::i;:::-;15448:2;15443:3;15439:12;15432:19;;15091:366;;;:::o;15463:419::-;15629:4;15667:2;15656:9;15652:18;15644:26;;15716:9;15710:4;15706:20;15702:1;15691:9;15687:17;15680:47;15744:131;15870:4;15744:131;:::i;:::-;15736:139;;15463:419;;;:::o;15888:222::-;16028:34;16024:1;16016:6;16012:14;16005:58;16097:5;16092:2;16084:6;16080:15;16073:30;15888:222;:::o;16116:366::-;16258:3;16279:67;16343:2;16338:3;16279:67;:::i;:::-;16272:74;;16355:93;16444:3;16355:93;:::i;:::-;16473:2;16468:3;16464:12;16457:19;;16116:366;;;:::o;16488:419::-;16654:4;16692:2;16681:9;16677:18;16669:26;;16741:9;16735:4;16731:20;16727:1;16716:9;16712:17;16705:47;16769:131;16895:4;16769:131;:::i;:::-;16761:139;;16488:419;;;:::o;16913:224::-;17053:34;17049:1;17041:6;17037:14;17030:58;17122:7;17117:2;17109:6;17105:15;17098:32;16913:224;:::o;17143:366::-;17285:3;17306:67;17370:2;17365:3;17306:67;:::i;:::-;17299:74;;17382:93;17471:3;17382:93;:::i;:::-;17500:2;17495:3;17491:12;17484:19;;17143:366;;;:::o;17515:419::-;17681:4;17719:2;17708:9;17704:18;17696:26;;17768:9;17762:4;17758:20;17754:1;17743:9;17739:17;17732:47;17796:131;17922:4;17796:131;:::i;:::-;17788:139;;17515:419;;;:::o;17940:228::-;18080:34;18076:1;18068:6;18064:14;18057:58;18149:11;18144:2;18136:6;18132:15;18125:36;17940:228;:::o;18174:366::-;18316:3;18337:67;18401:2;18396:3;18337:67;:::i;:::-;18330:74;;18413:93;18502:3;18413:93;:::i;:::-;18531:2;18526:3;18522:12;18515:19;;18174:366;;;:::o;18546:419::-;18712:4;18750:2;18739:9;18735:18;18727:26;;18799:9;18793:4;18789:20;18785:1;18774:9;18770:17;18763:47;18827:131;18953:4;18827:131;:::i;:::-;18819:139;;18546:419;;;:::o;18971:172::-;19111:24;19107:1;19099:6;19095:14;19088:48;18971:172;:::o;19149:366::-;19291:3;19312:67;19376:2;19371:3;19312:67;:::i;:::-;19305:74;;19388:93;19477:3;19388:93;:::i;:::-;19506:2;19501:3;19497:12;19490:19;;19149:366;;;:::o;19521:419::-;19687:4;19725:2;19714:9;19710:18;19702:26;;19774:9;19768:4;19764:20;19760:1;19749:9;19745:17;19738:47;19802:131;19928:4;19802:131;:::i;:::-;19794:139;;19521:419;;;:::o;19946:240::-;20086:34;20082:1;20074:6;20070:14;20063:58;20155:23;20150:2;20142:6;20138:15;20131:48;19946:240;:::o;20192:366::-;20334:3;20355:67;20419:2;20414:3;20355:67;:::i;:::-;20348:74;;20431:93;20520:3;20431:93;:::i;:::-;20549:2;20544:3;20540:12;20533:19;;20192:366;;;:::o;20564:419::-;20730:4;20768:2;20757:9;20753:18;20745:26;;20817:9;20811:4;20807:20;20803:1;20792:9;20788:17;20781:47;20845:131;20971:4;20845:131;:::i;:::-;20837:139;;20564:419;;;:::o;20989:191::-;21029:3;21048:20;21066:1;21048:20;:::i;:::-;21043:25;;21082:20;21100:1;21082:20;:::i;:::-;21077:25;;21125:1;21122;21118:9;21111:16;;21146:3;21143:1;21140:10;21137:36;;;21153:18;;:::i;:::-;21137:36;20989:191;;;;:::o;21186:169::-;21326:21;21322:1;21314:6;21310:14;21303:45;21186:169;:::o;21361:366::-;21503:3;21524:67;21588:2;21583:3;21524:67;:::i;:::-;21517:74;;21600:93;21689:3;21600:93;:::i;:::-;21718:2;21713:3;21709:12;21702:19;;21361:366;;;:::o;21733:419::-;21899:4;21937:2;21926:9;21922:18;21914:26;;21986:9;21980:4;21976:20;21972:1;21961:9;21957:17;21950:47;22014:131;22140:4;22014:131;:::i;:::-;22006:139;;21733:419;;;:::o;22158:241::-;22298:34;22294:1;22286:6;22282:14;22275:58;22367:24;22362:2;22354:6;22350:15;22343:49;22158:241;:::o;22405:366::-;22547:3;22568:67;22632:2;22627:3;22568:67;:::i;:::-;22561:74;;22644:93;22733:3;22644:93;:::i;:::-;22762:2;22757:3;22753:12;22746:19;;22405:366;;;:::o;22777:419::-;22943:4;22981:2;22970:9;22966:18;22958:26;;23030:9;23024:4;23020:20;23016:1;23005:9;23001:17;22994:47;23058:131;23184:4;23058:131;:::i;:::-;23050:139;;22777:419;;;:::o;23202:180::-;23250:77;23247:1;23240:88;23347:4;23344:1;23337:15;23371:4;23368:1;23361:15;23388:180;23436:77;23433:1;23426:88;23533:4;23530:1;23523:15;23557:4;23554:1;23547:15;23574:143;23631:5;23662:6;23656:13;23647:22;;23678:33;23705:5;23678:33;:::i;:::-;23574:143;;;;:::o;23723:351::-;23793:6;23842:2;23830:9;23821:7;23817:23;23813:32;23810:119;;;23848:79;;:::i;:::-;23810:119;23968:1;23993:64;24049:7;24040:6;24029:9;24025:22;23993:64;:::i;:::-;23983:74;;23939:128;23723:351;;;;:::o;24080:85::-;24125:7;24154:5;24143:16;;24080:85;;;:::o;24171:158::-;24229:9;24262:61;24280:42;24289:32;24315:5;24289:32;:::i;:::-;24280:42;:::i;:::-;24262:61;:::i;:::-;24249:74;;24171:158;;;:::o;24335:147::-;24430:45;24469:5;24430:45;:::i;:::-;24425:3;24418:58;24335:147;;:::o;24488:114::-;24555:6;24589:5;24583:12;24573:22;;24488:114;;;:::o;24608:184::-;24707:11;24741:6;24736:3;24729:19;24781:4;24776:3;24772:14;24757:29;;24608:184;;;;:::o;24798:132::-;24865:4;24888:3;24880:11;;24918:4;24913:3;24909:14;24901:22;;24798:132;;;:::o;24936:108::-;25013:24;25031:5;25013:24;:::i;:::-;25008:3;25001:37;24936:108;;:::o;25050:179::-;25119:10;25140:46;25182:3;25174:6;25140:46;:::i;:::-;25218:4;25213:3;25209:14;25195:28;;25050:179;;;;:::o;25235:113::-;25305:4;25337;25332:3;25328:14;25320:22;;25235:113;;;:::o;25384:732::-;25503:3;25532:54;25580:5;25532:54;:::i;:::-;25602:86;25681:6;25676:3;25602:86;:::i;:::-;25595:93;;25712:56;25762:5;25712:56;:::i;:::-;25791:7;25822:1;25807:284;25832:6;25829:1;25826:13;25807:284;;;25908:6;25902:13;25935:63;25994:3;25979:13;25935:63;:::i;:::-;25928:70;;26021:60;26074:6;26021:60;:::i;:::-;26011:70;;25867:224;25854:1;25851;25847:9;25842:14;;25807:284;;;25811:14;26107:3;26100:10;;25508:608;;;25384:732;;;;:::o;26122:831::-;26385:4;26423:3;26412:9;26408:19;26400:27;;26437:71;26505:1;26494:9;26490:17;26481:6;26437:71;:::i;:::-;26518:80;26594:2;26583:9;26579:18;26570:6;26518:80;:::i;:::-;26645:9;26639:4;26635:20;26630:2;26619:9;26615:18;26608:48;26673:108;26776:4;26767:6;26673:108;:::i;:::-;26665:116;;26791:72;26859:2;26848:9;26844:18;26835:6;26791:72;:::i;:::-;26873:73;26941:3;26930:9;26926:19;26917:6;26873:73;:::i;:::-;26122:831;;;;;;;;:::o;26959:147::-;27060:11;27097:3;27082:18;;26959:147;;;;:::o;27112:114::-;;:::o;27232:398::-;27391:3;27412:83;27493:1;27488:3;27412:83;:::i;:::-;27405:90;;27504:93;27593:3;27504:93;:::i;:::-;27622:1;27617:3;27613:11;27606:18;;27232:398;;;:::o;27636:379::-;27820:3;27842:147;27985:3;27842:147;:::i;:::-;27835:154;;28006:3;27999:10;;27636:379;;;:::o

Swarm Source

ipfs://a9b291e5b8b28f80f83f61b6baf38f6c24babbb98b60495c40f877a03e51734e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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