ETH Price: $3,263.00 (-0.63%)
Gas: 1 Gwei

Token

SPACEJAM (SPACEJAM)
 

Overview

Max Total Supply

10,000,000,000 SPACEJAM

Holders

190

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
ERC20SPACEJAM

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-17
*/

// SPDX-License-Identifier: UNLICENSED

/*

https://t.me/spacejamerc
https://twitter.com/spacejam_erc

*/

pragma solidity 0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    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);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function renounceOwnership() external onlyOwner {
        authorizations[owner] = false;
        owner = address(0);
    }

}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ERC20SPACEJAM is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "SPACEJAM";
    string public constant symbol = "SPACEJAM";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 10 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isBot;

    uint256 public marketingFee = 8;
    uint256 public operationsFee = 2;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 200;
    uint256 sellMultiplier = 200;
    uint256 transferMultiplier = 200;

    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool tradingOpen = true;
    bool swapEnabled = true;
    uint256 swapThreshold = totalSupply / 200;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = msg.sender;
        operationsFeeReceiver = msg.sender;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    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 approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, 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] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 10,"Cannot set max transaction less than 1%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function manage_botz(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i=0; i < addresses.length; ++i) {
            isBot[addresses[i]] = status;
        }
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        require(!isBot[sender],"Bot");

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"trading not open yet");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHmarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOperations = (amountETH * operationsFee) / totalFee;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHmarketing}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOperations}("");
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees_base100(uint256 _marketingFee, uint256 _operationsFee) external onlyOwner {
        marketingFee = _marketingFee;
        operationsFee = _operationsFee;
        totalFee = _marketingFee + _operationsFee;
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _operationsFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        operationsFeeReceiver = _operationsFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

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":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_botz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_operationsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees_base100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a62000536565b62000025906402540be4006200054e565b62000031919062000570565b6002556064620000446009600a62000536565b62000055906402540be4006200054e565b62000061919062000570565b6003556008600a8190556002600b8190556200007d9162000593565b600c5560c8600d819055600e819055600f8190556012805461ffff60a01b191661010160a01b179055620000b46009600a62000536565b620000c5906402540be4006200054e565b620000d1919062000570565b601355348015620000e157600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560128054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000168573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018e9190620005a9565b6001600160a01b039081166080526012546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002059190620005a9565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d9190620005a9565b6001600160a01b0390811660a0523060008181526005602090815260408083206012549095168352938152838220600019905560108054336001600160a01b031991821681179092556011805490911682179055825260068152838220805460ff1990811660019081179092556007835285842080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805482168317905560089092528483208054831682179055928252928120805484168317905561dead90527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054909216179055620003a56009600a62000536565b620003b6906402540be4006200054e565b33600081815260046020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003f96009600a62000536565b6200040a906402540be4006200054e565b60405190815260200160405180910390a3620005d4565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004785781600019048211156200045c576200045c62000421565b808516156200046a57918102915b93841c93908002906200043c565b509250929050565b600082620004915750600162000530565b81620004a05750600062000530565b8160018114620004b95760028114620004c457620004e4565b600191505062000530565b60ff841115620004d857620004d862000421565b50506001821b62000530565b5060208310610133831016604e8410600b841016171562000509575081810a62000530565b62000515838362000437565b80600019048211156200052c576200052c62000421565b0290505b92915050565b60006200054760ff84168362000480565b9392505050565b60008160001904831182151516156200056b576200056b62000421565b500290565b6000826200058e57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000530576200053062000421565b600060208284031215620005bc57600080fd5b81516001600160a01b03811681146200054757600080fd5b60805160a05161223d62000616600039600081816106770152818161140e0152818161179701528181611a350152611a6901526000611861015261223d6000f3fe6080604052600436106102485760003560e01c80636b67c4df11610139578063a4b45c00116100b6578063c867d60b1161007a578063c867d60b146106f9578063dd62ed3e14610729578063df20fd491461076f578063f0b37c041461078f578063f887ea40146107af578063fe9fbb80146107cf57600080fd5b8063a4b45c0014610645578063a8aa1b3114610665578063a9059cbb14610699578063b6a5d7de146106b9578063bd9ab537146106d957600080fd5b806378109e54116100fd57806378109e54146105b75780637d1db4a5146105cd578063893d20e8146105e35780638b42507f1461061557806395d89b411461029657600080fd5b80636b67c4df1461051f5780636ce46bc31461053557806370a0823114610555578063715018a61461058257806377b54bad1461059757600080fd5b806323b872dd116101c75780633f4218e01161018b5780633f4218e01461046f57806344fd77b51461049f57806348a5df04146104bf5780634be9d869146104df578063571ac8b0146104ff57600080fd5b806323b872dd146103b45780632b112e49146103d45780632f54bf6e146103e9578063313ce567146104185780633bbac5791461043f57600080fd5b8063095ea7b31161020e578063095ea7b314610324578063180b0d7e1461035457806318160ddd146103695780631da1db5e1461037e5780631df4ccfc1461039e57600080fd5b806210868314610254578062bff4461461027657806306fdde0314610296578063090896be146102e057806309302dc61461030457600080fd5b3661024f57005b600080fd5b34801561026057600080fd5b5061027461026f366004611d0e565b6107ef565b005b34801561028257600080fd5b50610274610291366004611d0e565b6108b3565b3480156102a257600080fd5b506102ca6040518060400160405280600881526020016753504143454a414d60c01b81525081565b6040516102d79190611d94565b60405180910390f35b3480156102ec57600080fd5b506102f6600b5481565b6040519081526020016102d7565b34801561031057600080fd5b5061027461031f366004611de2565b610968565b34801561033057600080fd5b5061034461033f366004611e17565b610a27565b60405190151581526020016102d7565b34801561036057600080fd5b506102f6606481565b34801561037557600080fd5b506102f6610a94565b34801561038a57600080fd5b50610274610399366004611de2565b610ab2565b3480156103aa57600080fd5b506102f6600c5481565b3480156103c057600080fd5b506103446103cf366004611e41565b610b25565b3480156103e057600080fd5b506102f6610be7565b3480156103f557600080fd5b50610344610404366004611e7d565b6000546001600160a01b0391821691161490565b34801561042457600080fd5b5061042d600981565b60405160ff90911681526020016102d7565b34801561044b57600080fd5b5061034461045a366004611e7d565b60096020526000908152604090205460ff1681565b34801561047b57600080fd5b5061034461048a366004611e7d565b60066020526000908152604090205460ff1681565b3480156104ab57600080fd5b506102746104ba366004611d0e565b610c6f565b3480156104cb57600080fd5b506102746104da366004611e98565b610d08565b3480156104eb57600080fd5b506102746104fa366004611d0e565b610d4d565b34801561050b57600080fd5b5061034461051a366004611e7d565b610e02565b34801561052b57600080fd5b506102f6600a5481565b34801561054157600080fd5b50610274610550366004611eba565b610e10565b34801561056157600080fd5b506102f6610570366004611e7d565b60046020526000908152604090205481565b34801561058e57600080fd5b50610274610e46565b3480156105a357600080fd5b506103446105b2366004611e17565b610ea0565b3480156105c357600080fd5b506102f660035481565b3480156105d957600080fd5b506102f660025481565b3480156105ef57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102d7565b34801561062157600080fd5b50610344610630366004611e7d565b60076020526000908152604090205460ff1681565b34801561065157600080fd5b50610274610660366004611ee6565b610faf565b34801561067157600080fd5b506105fd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a557600080fd5b506103446106b4366004611e17565b611007565b3480156106c557600080fd5b506102746106d4366004611e7d565b611014565b3480156106e557600080fd5b506102746106f4366004611de2565b611065565b34801561070557600080fd5b50610344610714366004611e7d565b60086020526000908152604090205460ff1681565b34801561073557600080fd5b506102f6610744366004611ee6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561077b57600080fd5b5061027461078a366004611f19565b611129565b34801561079b57600080fd5b506102746107aa366004611e7d565b611197565b3480156107bb57600080fd5b506012546105fd906001600160a01b031681565b3480156107db57600080fd5b506103446107ea366004611e7d565b611240565b6107f833611240565b61081d5760405162461bcd60e51b815260040161081490611f37565b60405180910390fd5b6101f5821061083e5760405162461bcd60e51b815260040161081490611f5c565b60005b828110156108ad57816008600086868581811061086057610860611fa1565b90506020020160208101906108759190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556108a681611fcd565b9050610841565b50505050565b6108bc33611240565b6108d85760405162461bcd60e51b815260040161081490611f37565b6101f582106108f95760405162461bcd60e51b815260040161081490611f5c565b60005b828110156108ad57816006600086868581811061091b5761091b611fa1565b90506020020160208101906109309190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561096181611fcd565b90506108fc565b6000546001600160a01b031633146109925760405162461bcd60e51b815260040161081490611fe6565b600a8110156109ee5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610814565b6103e8816109fe6009600a6120ea565b610a0d906402540be4006120f9565b610a1791906120f9565b610a219190612118565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a829086815260200190565b60405180910390a35060015b92915050565b610aa06009600a6120ea565b610aaf906402540be4006120f9565b81565b6000546001600160a01b03163314610adc5760405162461bcd60e51b815260040161081490611fe6565b4760006064610aeb84846120f9565b610af59190612118565b604051909150339082156108fc029083906000818181858888f193505050501580156108ad573d6000803e3d6000fd5b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610bd2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600582528381203382529091529190912054610bad91849061125e565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610bdd848484611298565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610c476009600a6120ea565b610c56906402540be4006120f9565b610c60919061213a565b610c6a919061213a565b905090565b6000546001600160a01b03163314610c995760405162461bcd60e51b815260040161081490611fe6565b60005b828110156108ad578160096000868685818110610cbb57610cbb611fa1565b9050602002016020810190610cd09190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d0181611fcd565b9050610c9c565b6000546001600160a01b03163314610d325760405162461bcd60e51b815260040161081490611fe6565b600a829055600b819055610d46818361214d565b600c555050565b610d5633611240565b610d725760405162461bcd60e51b815260040161081490611f37565b6101f58210610d935760405162461bcd60e51b815260040161081490611f5c565b60005b828110156108ad578160076000868685818110610db557610db5611fa1565b9050602002016020810190610dca9190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dfb81611fcd565b9050610d96565b6000610a8e82600019610a27565b610e1933611240565b610e355760405162461bcd60e51b815260040161081490611f37565b600e91909155600d91909155600f55565b6000546001600160a01b03163314610e705760405162461bcd60e51b815260040161081490611fe6565b600080546001600160a01b03168152600160205260408120805460ff1916905580546001600160a01b0319169055565b600080546001600160a01b03163314610ecb5760405162461bcd60e51b815260040161081490611fe6565b81600003610f3e576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612160565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be09190612179565b6000546001600160a01b03163314610fd95760405162461bcd60e51b815260040161081490611fe6565b601080546001600160a01b039384166001600160a01b03199182161790915560118054929093169116179055565b6000610be0338484611298565b6000546001600160a01b0316331461103e5760405162461bcd60e51b815260040161081490611fe6565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b0316331461108f5760405162461bcd60e51b815260040161081490611fe6565b600a8110156110f05760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b6064820152608401610814565b6103e8816111006009600a6120ea565b61110f906402540be4006120f9565b61111991906120f9565b6111239190612118565b60025550565b6000546001600160a01b031633146111535760405162461bcd60e51b815260040161081490611fe6565b6012805460ff60a81b1916600160a81b84151502179055806111776009600a6120ea565b611186906402540be4006120f9565b6111909190612118565b6013555050565b6000546001600160a01b031633146111c15760405162461bcd60e51b815260040161081490611fe6565b6000546001600160a01b039081169082160361121f5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610814565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156112825760405162461bcd60e51b81526004016108149190611d94565b50600061128f848661213a565b95945050505050565b60145460009060ff16156112b8576112b18484846116a4565b9050610be0565b6001600160a01b03841660009081526009602052604090205460ff16156113075760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610814565b6001600160a01b03841660009081526001602052604090205460ff1615801561134957506001600160a01b03831660009081526001602052604090205460ff16155b1561139e57601254600160a01b900460ff1661139e5760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610814565b6001600160a01b03841660009081526001602052604090205460ff161580156113e057506001600160a01b03841660009081526008602052604090205460ff16155b801561140557506001600160a01b03831660009081526008602052604090205460ff16155b801561144357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156114bd576003546001600160a01b03841660009081526004602052604090205461146f90849061214d565b11156114bd5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610814565b600254821115806114e657506001600160a01b03841660009081526007602052604090205460ff165b8061150957506001600160a01b03831660009081526007602052604090205460ff165b61154d5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610814565b61155561178a565b15611562576115626117fd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600490915291909120546115b491849061125e565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061160157506001600160a01b03841660009081526006602052604090205460ff165b61161557611610858486611a0d565b611617565b825b6001600160a01b03851660009081526004602052604090205490915061163d9082611b6a565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116919085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526004909152918220546116f591849061125e565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546117249083611b6a565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117789086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906117c8575060145460ff16155b80156117dd5750601254600160a81b900460ff165b8015610c6a57505060135430600090815260046020526040902054101590565b6014805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061183f5761183f611fa1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061189357611893611fa1565b6001600160a01b03928316602091820292909201015260125460135460405163791ac94760e01b8152919092169163791ac947916118dd9190600090869030904290600401612196565b600060405180830381600087803b1580156118f757600080fd5b505af115801561190b573d6000803e3d6000fd5b5050600c54600a544793506000925061192490846120f9565b61192e9190612118565b90506000600c54600b548461194391906120f9565b61194d9190612118565b6010546040519192506000916001600160a01b039091169084908381818185875af1925050503d806000811461199f576040519150601f19603f3d011682016040523d82523d6000602084013e6119a4565b606091505b50506011546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146119f4576040519150601f19603f3d011682016040523d82523d6000602084013e6119f9565b606091505b50506014805460ff19169055505050505050565b6000821580611a1c5750600c54155b15611a28575081610be0565b600f546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603611a675750600e54611aa5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611aa55750600d545b6000611ada611ab56064806120f9565b611ad484611ace600c548a611bc990919063ffffffff16565b90611bc9565b90611c4b565b90508015611b565730600090815260046020526040902054611afc9082611b6a565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b4d9085815260200190565b60405180910390a35b611b608582611c8d565b9695505050505050565b600080611b77838561214d565b905083811015610be05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610814565b600082600003611bdb57506000610a8e565b6000611be783856120f9565b905082611bf48583612118565b14610be05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610814565b6000610be083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ccf565b6000610be083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061125e565b60008183611cf05760405162461bcd60e51b81526004016108149190611d94565b50600061128f8486612118565b8015158114611d0b57600080fd5b50565b600080600060408486031215611d2357600080fd5b833567ffffffffffffffff80821115611d3b57600080fd5b818601915086601f830112611d4f57600080fd5b813581811115611d5e57600080fd5b8760208260051b8501011115611d7357600080fd5b60209283019550935050840135611d8981611cfd565b809150509250925092565b600060208083528351808285015260005b81811015611dc157858101830151858201604001528201611da5565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611df457600080fd5b5035919050565b80356001600160a01b0381168114611e1257600080fd5b919050565b60008060408385031215611e2a57600080fd5b611e3383611dfb565b946020939093013593505050565b600080600060608486031215611e5657600080fd5b611e5f84611dfb565b9250611e6d60208501611dfb565b9150604084013590509250925092565b600060208284031215611e8f57600080fd5b610be082611dfb565b60008060408385031215611eab57600080fd5b50508035926020909101359150565b600080600060608486031215611ecf57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611ef957600080fd5b611f0283611dfb565b9150611f1060208401611dfb565b90509250929050565b60008060408385031215611f2c57600080fd5b8235611e3381611cfd565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611fdf57611fdf611fb7565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561204157816000190482111561202757612027611fb7565b8085161561203457918102915b93841c939080029061200b565b509250929050565b60008261205857506001610a8e565b8161206557506000610a8e565b816001811461207b5760028114612085576120a1565b6001915050610a8e565b60ff84111561209657612096611fb7565b50506001821b610a8e565b5060208310610133831016604e8410600b84101617156120c4575081810a610a8e565b6120ce8383612006565b80600019048211156120e2576120e2611fb7565b029392505050565b6000610be060ff841683612049565b600081600019048311821515161561211357612113611fb7565b500290565b60008261213557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a8e57610a8e611fb7565b80820180821115610a8e57610a8e611fb7565b60006020828403121561217257600080fd5b5051919050565b60006020828403121561218b57600080fd5b8151610be081611cfd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121e65784516001600160a01b0316835293830193918301916001016121c1565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204dabccc4c2e1cd67bb50b2bd5683b9aeb736610208a6cb4b8f3177dfb62b708364736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102485760003560e01c80636b67c4df11610139578063a4b45c00116100b6578063c867d60b1161007a578063c867d60b146106f9578063dd62ed3e14610729578063df20fd491461076f578063f0b37c041461078f578063f887ea40146107af578063fe9fbb80146107cf57600080fd5b8063a4b45c0014610645578063a8aa1b3114610665578063a9059cbb14610699578063b6a5d7de146106b9578063bd9ab537146106d957600080fd5b806378109e54116100fd57806378109e54146105b75780637d1db4a5146105cd578063893d20e8146105e35780638b42507f1461061557806395d89b411461029657600080fd5b80636b67c4df1461051f5780636ce46bc31461053557806370a0823114610555578063715018a61461058257806377b54bad1461059757600080fd5b806323b872dd116101c75780633f4218e01161018b5780633f4218e01461046f57806344fd77b51461049f57806348a5df04146104bf5780634be9d869146104df578063571ac8b0146104ff57600080fd5b806323b872dd146103b45780632b112e49146103d45780632f54bf6e146103e9578063313ce567146104185780633bbac5791461043f57600080fd5b8063095ea7b31161020e578063095ea7b314610324578063180b0d7e1461035457806318160ddd146103695780631da1db5e1461037e5780631df4ccfc1461039e57600080fd5b806210868314610254578062bff4461461027657806306fdde0314610296578063090896be146102e057806309302dc61461030457600080fd5b3661024f57005b600080fd5b34801561026057600080fd5b5061027461026f366004611d0e565b6107ef565b005b34801561028257600080fd5b50610274610291366004611d0e565b6108b3565b3480156102a257600080fd5b506102ca6040518060400160405280600881526020016753504143454a414d60c01b81525081565b6040516102d79190611d94565b60405180910390f35b3480156102ec57600080fd5b506102f6600b5481565b6040519081526020016102d7565b34801561031057600080fd5b5061027461031f366004611de2565b610968565b34801561033057600080fd5b5061034461033f366004611e17565b610a27565b60405190151581526020016102d7565b34801561036057600080fd5b506102f6606481565b34801561037557600080fd5b506102f6610a94565b34801561038a57600080fd5b50610274610399366004611de2565b610ab2565b3480156103aa57600080fd5b506102f6600c5481565b3480156103c057600080fd5b506103446103cf366004611e41565b610b25565b3480156103e057600080fd5b506102f6610be7565b3480156103f557600080fd5b50610344610404366004611e7d565b6000546001600160a01b0391821691161490565b34801561042457600080fd5b5061042d600981565b60405160ff90911681526020016102d7565b34801561044b57600080fd5b5061034461045a366004611e7d565b60096020526000908152604090205460ff1681565b34801561047b57600080fd5b5061034461048a366004611e7d565b60066020526000908152604090205460ff1681565b3480156104ab57600080fd5b506102746104ba366004611d0e565b610c6f565b3480156104cb57600080fd5b506102746104da366004611e98565b610d08565b3480156104eb57600080fd5b506102746104fa366004611d0e565b610d4d565b34801561050b57600080fd5b5061034461051a366004611e7d565b610e02565b34801561052b57600080fd5b506102f6600a5481565b34801561054157600080fd5b50610274610550366004611eba565b610e10565b34801561056157600080fd5b506102f6610570366004611e7d565b60046020526000908152604090205481565b34801561058e57600080fd5b50610274610e46565b3480156105a357600080fd5b506103446105b2366004611e17565b610ea0565b3480156105c357600080fd5b506102f660035481565b3480156105d957600080fd5b506102f660025481565b3480156105ef57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102d7565b34801561062157600080fd5b50610344610630366004611e7d565b60076020526000908152604090205460ff1681565b34801561065157600080fd5b50610274610660366004611ee6565b610faf565b34801561067157600080fd5b506105fd7f0000000000000000000000004fa3ff203adae991d3bd7db8a75abc367c46300f81565b3480156106a557600080fd5b506103446106b4366004611e17565b611007565b3480156106c557600080fd5b506102746106d4366004611e7d565b611014565b3480156106e557600080fd5b506102746106f4366004611de2565b611065565b34801561070557600080fd5b50610344610714366004611e7d565b60086020526000908152604090205460ff1681565b34801561073557600080fd5b506102f6610744366004611ee6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561077b57600080fd5b5061027461078a366004611f19565b611129565b34801561079b57600080fd5b506102746107aa366004611e7d565b611197565b3480156107bb57600080fd5b506012546105fd906001600160a01b031681565b3480156107db57600080fd5b506103446107ea366004611e7d565b611240565b6107f833611240565b61081d5760405162461bcd60e51b815260040161081490611f37565b60405180910390fd5b6101f5821061083e5760405162461bcd60e51b815260040161081490611f5c565b60005b828110156108ad57816008600086868581811061086057610860611fa1565b90506020020160208101906108759190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556108a681611fcd565b9050610841565b50505050565b6108bc33611240565b6108d85760405162461bcd60e51b815260040161081490611f37565b6101f582106108f95760405162461bcd60e51b815260040161081490611f5c565b60005b828110156108ad57816006600086868581811061091b5761091b611fa1565b90506020020160208101906109309190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561096181611fcd565b90506108fc565b6000546001600160a01b031633146109925760405162461bcd60e51b815260040161081490611fe6565b600a8110156109ee5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610814565b6103e8816109fe6009600a6120ea565b610a0d906402540be4006120f9565b610a1791906120f9565b610a219190612118565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a829086815260200190565b60405180910390a35060015b92915050565b610aa06009600a6120ea565b610aaf906402540be4006120f9565b81565b6000546001600160a01b03163314610adc5760405162461bcd60e51b815260040161081490611fe6565b4760006064610aeb84846120f9565b610af59190612118565b604051909150339082156108fc029083906000818181858888f193505050501580156108ad573d6000803e3d6000fd5b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610bd2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600582528381203382529091529190912054610bad91849061125e565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610bdd848484611298565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610c476009600a6120ea565b610c56906402540be4006120f9565b610c60919061213a565b610c6a919061213a565b905090565b6000546001600160a01b03163314610c995760405162461bcd60e51b815260040161081490611fe6565b60005b828110156108ad578160096000868685818110610cbb57610cbb611fa1565b9050602002016020810190610cd09190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d0181611fcd565b9050610c9c565b6000546001600160a01b03163314610d325760405162461bcd60e51b815260040161081490611fe6565b600a829055600b819055610d46818361214d565b600c555050565b610d5633611240565b610d725760405162461bcd60e51b815260040161081490611f37565b6101f58210610d935760405162461bcd60e51b815260040161081490611f5c565b60005b828110156108ad578160076000868685818110610db557610db5611fa1565b9050602002016020810190610dca9190611e7d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dfb81611fcd565b9050610d96565b6000610a8e82600019610a27565b610e1933611240565b610e355760405162461bcd60e51b815260040161081490611f37565b600e91909155600d91909155600f55565b6000546001600160a01b03163314610e705760405162461bcd60e51b815260040161081490611fe6565b600080546001600160a01b03168152600160205260408120805460ff1916905580546001600160a01b0319169055565b600080546001600160a01b03163314610ecb5760405162461bcd60e51b815260040161081490611fe6565b81600003610f3e576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612160565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be09190612179565b6000546001600160a01b03163314610fd95760405162461bcd60e51b815260040161081490611fe6565b601080546001600160a01b039384166001600160a01b03199182161790915560118054929093169116179055565b6000610be0338484611298565b6000546001600160a01b0316331461103e5760405162461bcd60e51b815260040161081490611fe6565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b0316331461108f5760405162461bcd60e51b815260040161081490611fe6565b600a8110156110f05760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b6064820152608401610814565b6103e8816111006009600a6120ea565b61110f906402540be4006120f9565b61111991906120f9565b6111239190612118565b60025550565b6000546001600160a01b031633146111535760405162461bcd60e51b815260040161081490611fe6565b6012805460ff60a81b1916600160a81b84151502179055806111776009600a6120ea565b611186906402540be4006120f9565b6111909190612118565b6013555050565b6000546001600160a01b031633146111c15760405162461bcd60e51b815260040161081490611fe6565b6000546001600160a01b039081169082160361121f5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610814565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156112825760405162461bcd60e51b81526004016108149190611d94565b50600061128f848661213a565b95945050505050565b60145460009060ff16156112b8576112b18484846116a4565b9050610be0565b6001600160a01b03841660009081526009602052604090205460ff16156113075760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610814565b6001600160a01b03841660009081526001602052604090205460ff1615801561134957506001600160a01b03831660009081526001602052604090205460ff16155b1561139e57601254600160a01b900460ff1661139e5760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610814565b6001600160a01b03841660009081526001602052604090205460ff161580156113e057506001600160a01b03841660009081526008602052604090205460ff16155b801561140557506001600160a01b03831660009081526008602052604090205460ff16155b801561144357507f0000000000000000000000004fa3ff203adae991d3bd7db8a75abc367c46300f6001600160a01b0316836001600160a01b031614155b156114bd576003546001600160a01b03841660009081526004602052604090205461146f90849061214d565b11156114bd5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610814565b600254821115806114e657506001600160a01b03841660009081526007602052604090205460ff165b8061150957506001600160a01b03831660009081526007602052604090205460ff165b61154d5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610814565b61155561178a565b15611562576115626117fd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600490915291909120546115b491849061125e565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061160157506001600160a01b03841660009081526006602052604090205460ff165b61161557611610858486611a0d565b611617565b825b6001600160a01b03851660009081526004602052604090205490915061163d9082611b6a565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116919085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526004909152918220546116f591849061125e565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546117249083611b6a565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117789086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f0000000000000000000000004fa3ff203adae991d3bd7db8a75abc367c46300f16148015906117c8575060145460ff16155b80156117dd5750601254600160a81b900460ff165b8015610c6a57505060135430600090815260046020526040902054101590565b6014805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061183f5761183f611fa1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061189357611893611fa1565b6001600160a01b03928316602091820292909201015260125460135460405163791ac94760e01b8152919092169163791ac947916118dd9190600090869030904290600401612196565b600060405180830381600087803b1580156118f757600080fd5b505af115801561190b573d6000803e3d6000fd5b5050600c54600a544793506000925061192490846120f9565b61192e9190612118565b90506000600c54600b548461194391906120f9565b61194d9190612118565b6010546040519192506000916001600160a01b039091169084908381818185875af1925050503d806000811461199f576040519150601f19603f3d011682016040523d82523d6000602084013e6119a4565b606091505b50506011546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146119f4576040519150601f19603f3d011682016040523d82523d6000602084013e6119f9565b606091505b50506014805460ff19169055505050505050565b6000821580611a1c5750600c54155b15611a28575081610be0565b600f546001600160a01b037f0000000000000000000000004fa3ff203adae991d3bd7db8a75abc367c46300f811690841603611a675750600e54611aa5565b7f0000000000000000000000004fa3ff203adae991d3bd7db8a75abc367c46300f6001600160a01b0316856001600160a01b031603611aa55750600d545b6000611ada611ab56064806120f9565b611ad484611ace600c548a611bc990919063ffffffff16565b90611bc9565b90611c4b565b90508015611b565730600090815260046020526040902054611afc9082611b6a565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b4d9085815260200190565b60405180910390a35b611b608582611c8d565b9695505050505050565b600080611b77838561214d565b905083811015610be05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610814565b600082600003611bdb57506000610a8e565b6000611be783856120f9565b905082611bf48583612118565b14610be05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610814565b6000610be083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ccf565b6000610be083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061125e565b60008183611cf05760405162461bcd60e51b81526004016108149190611d94565b50600061128f8486612118565b8015158114611d0b57600080fd5b50565b600080600060408486031215611d2357600080fd5b833567ffffffffffffffff80821115611d3b57600080fd5b818601915086601f830112611d4f57600080fd5b813581811115611d5e57600080fd5b8760208260051b8501011115611d7357600080fd5b60209283019550935050840135611d8981611cfd565b809150509250925092565b600060208083528351808285015260005b81811015611dc157858101830151858201604001528201611da5565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611df457600080fd5b5035919050565b80356001600160a01b0381168114611e1257600080fd5b919050565b60008060408385031215611e2a57600080fd5b611e3383611dfb565b946020939093013593505050565b600080600060608486031215611e5657600080fd5b611e5f84611dfb565b9250611e6d60208501611dfb565b9150604084013590509250925092565b600060208284031215611e8f57600080fd5b610be082611dfb565b60008060408385031215611eab57600080fd5b50508035926020909101359150565b600080600060608486031215611ecf57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611ef957600080fd5b611f0283611dfb565b9150611f1060208401611dfb565b90509250929050565b60008060408385031215611f2c57600080fd5b8235611e3381611cfd565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611fdf57611fdf611fb7565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561204157816000190482111561202757612027611fb7565b8085161561203457918102915b93841c939080029061200b565b509250929050565b60008261205857506001610a8e565b8161206557506000610a8e565b816001811461207b5760028114612085576120a1565b6001915050610a8e565b60ff84111561209657612096611fb7565b50506001821b610a8e565b5060208310610133831016604e8410600b84101617156120c4575081810a610a8e565b6120ce8383612006565b80600019048211156120e2576120e2611fb7565b029392505050565b6000610be060ff841683612049565b600081600019048311821515161561211357612113611fb7565b500290565b60008261213557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a8e57610a8e611fb7565b80820180821115610a8e57610a8e611fb7565b60006020828403121561217257600080fd5b5051919050565b60006020828403121561218b57600080fd5b8151610be081611cfd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121e65784516001600160a01b0316835293830193918301916001016121c1565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204dabccc4c2e1cd67bb50b2bd5683b9aeb736610208a6cb4b8f3177dfb62b708364736f6c63430008100033

Deployed Bytecode Sourcemap

3479:9996:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8164:311;;;;;;;;;;-1:-1:-1;8164:311:0;;;;;:::i;:::-;;:::i;:::-;;7550:295;;;;;;;;;;-1:-1:-1;7550:295:0;;;;;:::i;:::-;;:::i;3736:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3736:40:0;;;;;;;;;;;;:::i;:::-;;;;;;;;4432:32;;;;;;;;;;;;;;;;;;;1591:25:1;;;1579:2;1564:18;4432:32:0;1445:177:1;7013:260:0;;;;;;;;;;-1:-1:-1;7013:260:0;;;;;:::i;:::-;;:::i;6117:216::-;;;;;;;;;;-1:-1:-1;6117:216:0;;;;;:::i;:::-;;:::i;:::-;;;2414:14:1;;2407:22;2389:41;;2377:2;2362:18;6117:216:0;2249:187:1;4532:44:0;;;;;;;;;;;;4573:3;4532:44;;3875:63;;;;;;;;;;;;;:::i;11135:259::-;;;;;;;;;;-1:-1:-1;11135:259:0;;;;;:::i;:::-;;:::i;4471:54::-;;;;;;;;;;;;;;;;6635:370;;;;;;;;;;-1:-1:-1;6635:370:0;;;;;:::i;:::-;;:::i;13335:137::-;;;;;;;;;;;;;:::i;2644:103::-;;;;;;;;;;-1:-1:-1;2644:103:0;;;;;:::i;:::-;2699:4;2734:5;-1:-1:-1;;;;;2723:16:0;;;2734:5;;2723:16;;2644:103;3832:34;;;;;;;;;;;;3865:1;3832:34;;;;;3137:4:1;3125:17;;;3107:36;;3095:2;3080:18;3832:34:0;2965:184:1;4347:38:0;;;;;;;;;;-1:-1:-1;4347:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4182:44;;;;;;;;;;-1:-1:-1;4182:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8483:201;;;;;;;;;;-1:-1:-1;8483:201:0;;;;;:::i;:::-;;:::i;12674:231::-;;;;;;;;;;-1:-1:-1;12674:231:0;;;;;:::i;:::-;;:::i;7853:303::-;;;;;;;;;;-1:-1:-1;7853:303:0;;;;;:::i;:::-;;:::i;6341:122::-;;;;;;;;;;-1:-1:-1;6341:122:0;;;;;:::i;:::-;;:::i;4394:31::-;;;;;;;;;;;;;;;;12467:199;;;;;;;;;;-1:-1:-1;12467:199:0;;;;;:::i;:::-;;:::i;4060:45::-;;;;;;;;;;-1:-1:-1;4060:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2870:125;;;;;;;;;;;;;:::i;11402:284::-;;;;;;;;;;-1:-1:-1;11402:284:0;;;;;:::i;:::-;;:::i;4001:50::-;;;;;;;;;;;;;;;;3947:47;;;;;;;;;;;;;;;;5892:78;;;;;;;;;;-1:-1:-1;5944:7:0;5962:5;-1:-1:-1;;;;;5962:5:0;5892:78;;;-1:-1:-1;;;;;3892:32:1;;;3874:51;;3862:2;3847:18;5892:78:0;3728:203:1;4233:48:0;;;;;;;;;;-1:-1:-1;4233:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12913:227;;;;;;;;;;-1:-1:-1;12913:227:0;;;;;:::i;:::-;;:::i;4803:29::-;;;;;;;;;;;;;;;6471:156;;;;;;;;;;-1:-1:-1;6471:156:0;;;;;:::i;:::-;;:::i;2373:94::-;;;;;;;;;;-1:-1:-1;2373:94:0;;;;;:::i;:::-;;:::i;7281:261::-;;;;;;;;;;-1:-1:-1;7281:261:0;;;;;:::i;:::-;;:::i;4288:52::-;;;;;;;;;;-1:-1:-1;4288:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5976:133;;;;;;;;;;-1:-1:-1;5976:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6078:19:0;;;6060:7;6078:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5976:133;13148:179;;;;;;;;;;-1:-1:-1;13148:179:0;;;;;:::i;:::-;;:::i;2475:161::-;;;;;;;;;;-1:-1:-1;2475:161:0;;;;;:::i;:::-;;:::i;4772:24::-;;;;;;;;;;-1:-1:-1;4772:24:0;;;;-1:-1:-1;;;;;4772:24:0;;;2755:107;;;;;;;;;;-1:-1:-1;2755:107:0;;;;;:::i;:::-;;:::i;8164:311::-;2314:24;2327:10;2314:12;:24::i;:::-;2306:48;;;;-1:-1:-1;;;2306:48:0;;;;;;;:::i;:::-;;;;;;;;;8299:3:::1;8280:22:::0;::::1;8272:71;;;;-1:-1:-1::0;;;8272:71:0::1;;;;;;;:::i;:::-;8359:9;8354:114;8372:20:::0;;::::1;8354:114;;;8450:6;8414:19;:33;8434:9;;8444:1;8434:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8414:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8414:33:0;:42;;-1:-1:-1;;8414:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8394:3:::1;::::0;::::1;:::i;:::-;;;8354:114;;;;8164:311:::0;;;:::o;7550:295::-;2314:24;2327:10;2314:12;:24::i;:::-;2306:48;;;;-1:-1:-1;;;2306:48:0;;;;;;;:::i;:::-;7677:3:::1;7658:22:::0;::::1;7650:71;;;;-1:-1:-1::0;;;7650:71:0::1;;;;;;;:::i;:::-;7737:9;7732:106;7750:20:::0;;::::1;7732:106;;;7820:6;7792:11;:25;7804:9;;7814:1;7804:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7792:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;7792:25:0;:34;;-1:-1:-1;;7792:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7772:3:::1;::::0;::::1;:::i;:::-;;;7732:106;;7013:260:::0;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;7149:2:::1;7122:23;:29;;7114:75;;;::::0;-1:-1:-1;;;7114:75:0;;6427:2:1;7114:75:0::1;::::0;::::1;6409:21:1::0;6466:2;6446:18;;;6439:30;6505:34;6485:18;;;6478:62;-1:-1:-1;;;6556:18:1;;;6549:32;6598:19;;7114:75:0::1;6225:398:1::0;7114:75:0::1;7261:4;7233:23:::0;3926:12:::1;3865:1;3926:2;:12;:::i;:::-;3913:25;::::0;:10:::1;:25;:::i;:::-;7219:37;;;;:::i;:::-;7218:47;;;;:::i;:::-;7200:15;:65:::0;-1:-1:-1;7013:260:0:o;6117:216::-;6221:10;6192:4;6209:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6209:32:0;;;;;;;;;;:41;;;6266:37;6192:4;;6209:32;;6266:37;;;;6244:6;1591:25:1;;1579:2;1564:18;;1445:177;6266:37:0;;;;;;;;-1:-1:-1;6321:4:0;6117:216;;;;;:::o;3875:63::-;3926:12;3865:1;3926:2;:12;:::i;:::-;3913:25;;:10;:25;:::i;:::-;3875:63;:::o;11135:259::-;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;11238:21:::1;11218:17;11329:3;11296:28;11308:16:::0;11238:21;11296:28:::1;:::i;:::-;11294:38;;;;:::i;:::-;11343:43;::::0;11270:62;;-1:-1:-1;11351:10:0::1;::::0;11343:43;::::1;;;::::0;11270:62;;11343:43:::1;::::0;;;11270:62;11351:10;11343:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;6635:370:::0;-1:-1:-1;;;;;6755:19:0;;6735:4;6755:19;;;:11;:19;;;;;;;;6775:10;6755:31;;;;;;;;-1:-1:-1;;6755:52:0;6752:186;;6857:69;;;;;;;;;;;-1:-1:-1;;;6857:69:0;;;;;;;;-1:-1:-1;;;;;6857:19:0;;-1:-1:-1;6857:19:0;;;:11;:19;;;;;6877:10;6857:31;;;;;;;;;;:69;;6893:6;;6857:35;:69::i;:::-;-1:-1:-1;;;;;6823:19:0;;;;;;:11;:19;;;;;;;;6843:10;6823:31;;;;;;;:103;6752:186;6957:40;6971:6;6979:9;6990:6;6957:13;:40::i;:::-;6950:47;;6635:370;;;;;;:::o;13335:137::-;13448:9;:15;;;;3612:42;13388:7;13430:15;;;;;13388:7;;13448:15;3926:12;3865:1;3926:2;:12;:::i;:::-;3913:25;;:10;:25;:::i;:::-;13416:29;;;;:::i;:::-;:47;;;;:::i;:::-;13408:56;;13335:137;:::o;8483:201::-;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;8582:9:::1;8577:100;8595:20:::0;;::::1;8577:100;;;8659:6;8637:5;:19;8643:9;;8653:1;8643:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8637:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8637:19:0;:28;;-1:-1:-1;;8637:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8617:3:::1;::::0;::::1;:::i;:::-;;;8577:100;;12674:231:::0;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;12776:12:::1;:28:::0;;;12815:13:::1;:30:::0;;;12867::::1;12831:14:::0;12791:13;12867:30:::1;:::i;:::-;12856:8;:41:::0;-1:-1:-1;;12674:231:0:o;7853:303::-;2314:24;2327:10;2314:12;:24::i;:::-;2306:48;;;;-1:-1:-1;;;2306:48:0;;;;;;;:::i;:::-;7984:3:::1;7965:22:::0;::::1;7957:71;;;;-1:-1:-1::0;;;7957:71:0::1;;;;;;;:::i;:::-;8044:9;8039:110;8057:20:::0;;::::1;8039:110;;;8131:6;8099:15;:29;8115:9;;8125:1;8115:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8099:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8099:29:0;:38;;-1:-1:-1;;8099:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8079:3:::1;::::0;::::1;:::i;:::-;;;8039:110;;6341:122:::0;6396:4;6420:35;6428:7;-1:-1:-1;;6420:7:0;:35::i;12467:199::-;2314:24;2327:10;2314:12;:24::i;:::-;2306:48;;;;-1:-1:-1;;;2306:48:0;;;;;;;:::i;:::-;12567:14:::1;:22:::0;;;;12600:13:::1;:20:::0;;;;12631:18:::1;:27:::0;12467:199::o;2870:125::-;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;2953:5:::1;2944::::0;;-1:-1:-1;;;;;2944:5:0::1;2929:21:::0;;:14:::1;:21;::::0;;;;:29;;-1:-1:-1;;2929:29:0::1;::::0;;2969:18;;-1:-1:-1;;;;;;2969:18:0::1;::::0;;2870:125::o;11402:284::-;11493:12;2734:5;;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;11521:6:::1;11531:1;11521:11:::0;11518:95:::1;;11557:44;::::0;-1:-1:-1;;;11557:44:0;;11595:4:::1;11557:44;::::0;::::1;3874:51:1::0;-1:-1:-1;;;;;11557:29:0;::::1;::::0;::::1;::::0;3847:18:1;;11557:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11548:53;;11518:95;11630:48;::::0;-1:-1:-1;;;11630:48:0;;11659:10:::1;11630:48;::::0;::::1;9032:51:1::0;9099:18;;;9092:34;;;-1:-1:-1;;;;;11630:28:0;::::1;::::0;::::1;::::0;9005:18:1;;11630:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12913:227::-:0;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;13031:20:::1;:44:::0;;-1:-1:-1;;;;;13031:44:0;;::::1;-1:-1:-1::0;;;;;;13031:44:0;;::::1;;::::0;;;13086:21:::1;:46:::0;;;;;::::1;::::0;::::1;;::::0;;12913:227::o;6471:156::-;6551:4;6575:44;6589:10;6601:9;6612:6;6575:13;:44::i;2373:94::-;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2433:19:0::1;;::::0;;;2455:4:::1;2433:19;::::0;;;;;;;:26;;-1:-1:-1;;2433:26:0::1;::::0;;::::1;::::0;;2373:94::o;7281:261::-;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;7415:2:::1;7387:24;:30;;7379:81;;;::::0;-1:-1:-1;;;7379:81:0;;9589:2:1;7379:81:0::1;::::0;::::1;9571:21:1::0;9628:2;9608:18;;;9601:30;9667:34;9647:18;;;9640:62;-1:-1:-1;;;9718:18:1;;;9711:37;9765:19;;7379:81:0::1;9387:403:1::0;7379:81:0::1;7530:4;7501:24:::0;3926:12:::1;3865:1;3926:2;:12;:::i;:::-;3913:25;::::0;:10:::1;:25;:::i;:::-;7487:38;;;;:::i;:::-;7486:48;;;;:::i;:::-;7471:12;:63:::0;-1:-1:-1;7281:261:0:o;13148:179::-;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;13244:11:::1;:22:::0;;-1:-1:-1;;;;13244:22:0::1;-1:-1:-1::0;;;13244:22:0;::::1;;;;::::0;;13307:12;3926::::1;3865:1;3926:2;:12;:::i;:::-;3913:25;::::0;:10:::1;:25;:::i;:::-;13293:26;;;;:::i;:::-;13277:13;:42:::0;-1:-1:-1;;13148:179:0:o;2475:161::-;2699:4;2734:5;-1:-1:-1;;;;;2734:5:0;2232:10;2723:16;2216:38;;;;-1:-1:-1;;;2216:38:0;;;;;;;:::i;:::-;2554:5:::1;::::0;-1:-1:-1;;;;;2554:5:0;;::::1;2547:12:::0;;::::1;::::0;2539:51:::1;;;::::0;-1:-1:-1;;;2539:51:0;;9997:2:1;2539:51:0::1;::::0;::::1;9979:21:1::0;10036:2;10016:18;;;10009:30;10075:28;10055:18;;;10048:56;10121:18;;2539:51:0::1;9795:350:1::0;2539:51:0::1;-1:-1:-1::0;;;;;2601:19:0::1;2623:5;2601:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2601:27:0::1;::::0;;2475:161::o;2755:107::-;-1:-1:-1;;;;;2835:19:0;2811:4;2835:19;;;:14;:19;;;;;;;;;2755:107::o;496:192::-;582:7;618:12;610:6;;;;602:29;;;;-1:-1:-1;;;602:29:0;;;;;;;;:::i;:::-;-1:-1:-1;642:9:0;654:5;658:1;654;:5;:::i;:::-;642:17;496:192;-1:-1:-1;;;;;496:192:0:o;8692:1157::-;8804:6;;8784:4;;8804:6;;8801:63;;;8820:41;8835:6;8843:9;8854:6;8820:14;:41::i;:::-;8813:48;;;;8801:63;-1:-1:-1;;;;;8885:13:0;;;;;;:5;:13;;;;;;;;8884:14;8876:29;;;;-1:-1:-1;;;8876:29:0;;10352:2:1;8876:29:0;;;10334:21:1;10391:1;10371:18;;;10364:29;-1:-1:-1;;;10409:18:1;;;10402:33;10452:18;;8876:29:0;10150:326:1;8876:29:0;-1:-1:-1;;;;;8922:22:0;;;;;;:14;:22;;;;;;;;8921:23;:53;;;;-1:-1:-1;;;;;;8949:25:0;;;;;;:14;:25;;;;;;;;8948:26;8921:53;8918:127;;;8998:11;;-1:-1:-1;;;8998:11:0;;;;8990:43;;;;-1:-1:-1;;;8990:43:0;;10683:2:1;8990:43:0;;;10665:21:1;10722:2;10702:18;;;10695:30;-1:-1:-1;;;10741:18:1;;;10734:50;10801:18;;8990:43:0;10481:344:1;8990:43:0;-1:-1:-1;;;;;9062:22:0;;;;;;:14;:22;;;;;;;;9061:23;:55;;;;-1:-1:-1;;;;;;9089:27:0;;;;;;:19;:27;;;;;;;;9088:28;9061:55;:90;;;;-1:-1:-1;;;;;;9121:30:0;;;;;;:19;:30;;;;;;;;9120:31;9061:90;:111;;;;;9168:4;-1:-1:-1;;;;;9155:17:0;:9;-1:-1:-1;;;;;9155:17:0;;;9061:111;9057:230;;;9232:15;;-1:-1:-1;;;;;9198:20:0;;;;;;:9;:20;;;;;;:29;;9221:6;;9198:29;:::i;:::-;9197:50;;9189:86;;;;-1:-1:-1;;;9189:86:0;;11032:2:1;9189:86:0;;;11014:21:1;11071:2;11051:18;;;11044:30;11110:26;11090:18;;;11083:54;11154:18;;9189:86:0;10830:348:1;9189:86:0;9322:12;;9312:6;:22;;9311:51;;;-1:-1:-1;;;;;;9339:23:0;;;;;;:15;:23;;;;;;;;9311:51;:81;;;-1:-1:-1;;;;;;9366:26:0;;;;;;:15;:26;;;;;;;;9311:81;9303:115;;;;-1:-1:-1;;;9303:115:0;;11385:2:1;9303:115:0;;;11367:21:1;11424:2;11404:18;;;11397:30;-1:-1:-1;;;11443:18:1;;;11436:51;11504:18;;9303:115:0;11183:345:1;9303:115:0;9434:16;:14;:16::i;:::-;9431:35;;;9453:10;:8;:10::i;:::-;9498:53;;;;;;;;;;;-1:-1:-1;;;9498:53:0;;;;;;;;-1:-1:-1;;;;;9498:17:0;;-1:-1:-1;9498:17:0;;;:9;:17;;;;;;;;:53;;9520:6;;9498:21;:53::i;:::-;-1:-1:-1;;;;;9478:17:0;;;;;;:9;:17;;;;;;;;:73;;;;9590:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;9613:22:0;;;;;;:11;:22;;;;;;;;9590:45;9589:93;;9648:34;9656:6;9664;9672:9;9648:7;:34::i;:::-;9589:93;;;9639:6;9589:93;-1:-1:-1;;;;;9718:20:0;;;;;;:9;:20;;;;;;9564:118;;-1:-1:-1;9718:40:0;;9564:118;9718:24;:40::i;:::-;-1:-1:-1;;;;;9695:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9776:43;;;;;;;;;;9804:14;1591:25:1;;1579:2;1564:18;;1445:177;9776:43:0;;;;;;;;-1:-1:-1;9837:4:0;;8692:1157;-1:-1:-1;;;;8692:1157:0:o;9861:330::-;9991:53;;;;;;;;;;;-1:-1:-1;;;9991:53:0;;;;;;;;-1:-1:-1;;;;;9991:17:0;;9954:4;9991:17;;;:9;:17;;;;;;;:53;;10013:6;;9991:21;:53::i;:::-;-1:-1:-1;;;;;9971:17:0;;;;;;;:9;:17;;;;;;:73;;;;10078:20;;;;;;;:32;;10103:6;10078:24;:32::i;:::-;-1:-1:-1;;;;;10055:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10126:35;;;;;;;;;;10154:6;1591:25:1;;1579:2;1564:18;;1445:177;10126:35:0;;;;;;;;-1:-1:-1;10179:4:0;9861:330;;;;;:::o;10930:197::-;10979:4;11003:10;-1:-1:-1;;;;;11017:4:0;11003:18;;;;;:38;;-1:-1:-1;11035:6:0;;;;11034:7;11003:38;:62;;;;-1:-1:-1;11054:11:0;;-1:-1:-1;;;11054:11:0;;;;11003:62;:116;;;;-1:-1:-1;;11106:13:0;;11096:4;11078:24;;;;:9;:24;;;;;;:41;;;10930:197::o;11694:765::-;4989:6;:13;;-1:-1:-1;;4989:13:0;4998:4;4989:13;;;11769:16:::1;::::0;;11783:1:::1;11769:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11769:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11769:16:0::1;11745:40;;11814:4;11796;11801:1;11796:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;11796:23:0::1;;;-1:-1:-1::0;;;;;11796:23:0::1;;;::::0;::::1;11840:4;11830;11835:1;11830:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11830:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;11857:6:::1;::::0;11929:13:::1;::::0;11857:189:::1;::::0;-1:-1:-1;;;11857:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;11929:13;11857:6:::1;::::0;11973:4;;12000::::1;::::0;12020:15:::1;::::0;11857:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12171:8:0::1;::::0;12155:12:::1;::::0;12079:21:::1;::::0;-1:-1:-1;12059:17:0::1;::::0;-1:-1:-1;12143:24:0::1;::::0;12079:21;12143:24:::1;:::i;:::-;12142:37;;;;:::i;:::-;12113:66;;12190:27;12250:8;;12233:13;;12221:9;:25;;;;:::i;:::-;12220:38;;;;:::i;:::-;12300:20;::::0;12292:65:::1;::::0;12190:68;;-1:-1:-1;12272:15:0::1;::::0;-1:-1:-1;;;;;12300:20:0;;::::1;::::0;12334:18;;12272:15;12292:65;12272:15;12292:65;12334:18;12300:20;12292:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;12392:21:0::1;::::0;12384:67:::1;::::0;12271:86;;-1:-1:-1;;;;;;12392:21:0::1;::::0;12427:19;;12384:67:::1;::::0;;;12427:19;12392:21;12384:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;5007:6:0;:14;;-1:-1:-1;;5007:14:0;;;-1:-1:-1;;;;;;11694:765:0:o;10199:723::-;10285:7;10308:11;;;:28;;-1:-1:-1;10323:8:0;;:13;10308:28;10305:72;;;-1:-1:-1;10359:6:0;10352:13;;10305:72;10410:18;;-1:-1:-1;;;;;10457:4:0;10444:17;;;;;;10441:154;;-1:-1:-1;10491:14:0;;10441:154;;;10536:4;-1:-1:-1;;;;;10526:14:0;:6;-1:-1:-1;;;;;10526:14:0;;10523:72;;-1:-1:-1;10570:13:0;;10523:72;10607:17;10627:62;10668:20;4573:3;;10668:20;:::i;:::-;10627:36;10652:10;10627:20;10638:8;;10627:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;10607:82;-1:-1:-1;10705:13:0;;10702:172;;10779:4;10761:24;;;;:9;:24;;;;;;:39;;10790:9;10761:28;:39::i;:::-;10752:4;10734:24;;;;:9;:24;;;;;;;:66;;;;10820:42;;-1:-1:-1;;;;;10820:42:0;;;;;;;10852:9;1591:25:1;;1579:2;1564:18;;1445:177;10820:42:0;;;;;;;;10702:172;10893:21;:6;10904:9;10893:10;:21::i;:::-;10886:28;10199:723;-1:-1:-1;;;;;;10199:723:0:o;167:181::-;225:7;;257:5;261:1;257;:5;:::i;:::-;245:17;;286:1;281;:6;;273:46;;;;-1:-1:-1;;;273:46:0;;13062:2:1;273:46:0;;;13044:21:1;13101:2;13081:18;;;13074:30;13140:29;13120:18;;;13113:57;13187:18;;273:46:0;12860:351:1;694:250:0;752:7;776:1;781;776:6;772:47;;-1:-1:-1;806:1:0;799:8;;772:47;831:9;843:5;847:1;843;:5;:::i;:::-;831:17;-1:-1:-1;876:1:0;867:5;871:1;831:17;867:5;:::i;:::-;:10;859:56;;;;-1:-1:-1;;;859:56:0;;13418:2:1;859:56:0;;;13400:21:1;13457:2;13437:18;;;13430:30;13496:34;13476:18;;;13469:62;-1:-1:-1;;;13547:18:1;;;13540:31;13588:19;;859:56:0;13216:397:1;950:132:0;1008:7;1035:39;1039:1;1042;1035:39;;;;;;;;;;;;;;;;;:3;:39::i;354:136::-;412:7;439:43;443:1;446;439:43;;;;;;;;;;;;;;;;;:3;:43::i;1088:189::-;1174:7;1209:12;1202:5;1194:28;;;;-1:-1:-1;;;1194:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1233:9:0;1245:5;1249:1;1245;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:750::-;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;892:548::-;1004:4;1033:2;1062;1051:9;1044:21;1094:6;1088:13;1137:6;1132:2;1121:9;1117:18;1110:34;1162:1;1172:140;1186:6;1183:1;1180:13;1172:140;;;1281:14;;;1277:23;;1271:30;1247:17;;;1266:2;1243:26;1236:66;1201:10;;1172:140;;;1176:3;1361:1;1356:2;1347:6;1336:9;1332:22;1328:31;1321:42;1431:2;1424;1420:7;1415:2;1407:6;1403:15;1399:29;1388:9;1384:45;1380:54;1372:62;;;;892:548;;;;:::o;1627:180::-;1686:6;1739:2;1727:9;1718:7;1714:23;1710:32;1707:52;;;1755:1;1752;1745:12;1707:52;-1:-1:-1;1778:23:1;;1627:180;-1:-1:-1;1627:180:1:o;1812:173::-;1880:20;;-1:-1:-1;;;;;1929:31:1;;1919:42;;1909:70;;1975:1;1972;1965:12;1909:70;1812:173;;;:::o;1990:254::-;2058:6;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2158:29;2177:9;2158:29;:::i;:::-;2148:39;2234:2;2219:18;;;;2206:32;;-1:-1:-1;;;1990:254:1:o;2441:328::-;2518:6;2526;2534;2587:2;2575:9;2566:7;2562:23;2558:32;2555:52;;;2603:1;2600;2593:12;2555:52;2626:29;2645:9;2626:29;:::i;:::-;2616:39;;2674:38;2708:2;2697:9;2693:18;2674:38;:::i;:::-;2664:48;;2759:2;2748:9;2744:18;2731:32;2721:42;;2441:328;;;;;:::o;2774:186::-;2833:6;2886:2;2874:9;2865:7;2861:23;2857:32;2854:52;;;2902:1;2899;2892:12;2854:52;2925:29;2944:9;2925:29;:::i;3154:248::-;3222:6;3230;3283:2;3271:9;3262:7;3258:23;3254:32;3251:52;;;3299:1;3296;3289:12;3251:52;-1:-1:-1;;3322:23:1;;;3392:2;3377:18;;;3364:32;;-1:-1:-1;3154:248:1:o;3407:316::-;3484:6;3492;3500;3553:2;3541:9;3532:7;3528:23;3524:32;3521:52;;;3569:1;3566;3559:12;3521:52;-1:-1:-1;;3592:23:1;;;3662:2;3647:18;;3634:32;;-1:-1:-1;3713:2:1;3698:18;;;3685:32;;3407:316;-1:-1:-1;3407:316:1:o;3936:260::-;4004:6;4012;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:29;4123:9;4104:29;:::i;:::-;4094:39;;4152:38;4186:2;4175:9;4171:18;4152:38;:::i;:::-;4142:48;;3936:260;;;;;:::o;4201:309::-;4266:6;4274;4327:2;4315:9;4306:7;4302:23;4298:32;4295:52;;;4343:1;4340;4333:12;4295:52;4382:9;4369:23;4401:28;4423:5;4401:28;:::i;4741:335::-;4943:2;4925:21;;;4982:2;4962:18;;;4955:30;-1:-1:-1;;;5016:2:1;5001:18;;4994:41;5067:2;5052:18;;4741:335::o;5081:401::-;5283:2;5265:21;;;5322:2;5302:18;;;5295:30;5361:34;5356:2;5341:18;;5334:62;-1:-1:-1;;;5427:2:1;5412:18;;5405:35;5472:3;5457:19;;5081:401::o;5487:127::-;5548:10;5543:3;5539:20;5536:1;5529:31;5579:4;5576:1;5569:15;5603:4;5600:1;5593:15;5619:127;5680:10;5675:3;5671:20;5668:1;5661:31;5711:4;5708:1;5701:15;5735:4;5732:1;5725:15;5751:135;5790:3;5811:17;;;5808:43;;5831:18;;:::i;:::-;-1:-1:-1;5878:1:1;5867:13;;5751:135::o;5891:329::-;6093:2;6075:21;;;6132:1;6112:18;;;6105:29;-1:-1:-1;;;6165:2:1;6150:18;;6143:36;6211:2;6196:18;;5891:329::o;6628:422::-;6717:1;6760:5;6717:1;6774:270;6795:7;6785:8;6782:21;6774:270;;;6854:4;6850:1;6846:6;6842:17;6836:4;6833:27;6830:53;;;6863:18;;:::i;:::-;6913:7;6903:8;6899:22;6896:55;;;6933:16;;;;6896:55;7012:22;;;;6972:15;;;;6774:270;;;6778:3;6628:422;;;;;:::o;7055:806::-;7104:5;7134:8;7124:80;;-1:-1:-1;7175:1:1;7189:5;;7124:80;7223:4;7213:76;;-1:-1:-1;7260:1:1;7274:5;;7213:76;7305:4;7323:1;7318:59;;;;7391:1;7386:130;;;;7298:218;;7318:59;7348:1;7339:10;;7362:5;;;7386:130;7423:3;7413:8;7410:17;7407:43;;;7430:18;;:::i;:::-;-1:-1:-1;;7486:1:1;7472:16;;7501:5;;7298:218;;7600:2;7590:8;7587:16;7581:3;7575:4;7572:13;7568:36;7562:2;7552:8;7549:16;7544:2;7538:4;7535:12;7531:35;7528:77;7525:159;;;-1:-1:-1;7637:19:1;;;7669:5;;7525:159;7716:34;7741:8;7735:4;7716:34;:::i;:::-;7786:6;7782:1;7778:6;7774:19;7765:7;7762:32;7759:58;;;7797:18;;:::i;:::-;7835:20;;7055:806;-1:-1:-1;;;7055:806:1:o;7866:140::-;7924:5;7953:47;7994:4;7984:8;7980:19;7974:4;7953:47;:::i;8011:168::-;8051:7;8117:1;8113;8109:6;8105:14;8102:1;8099:21;8094:1;8087:9;8080:17;8076:45;8073:71;;;8124:18;;:::i;:::-;-1:-1:-1;8164:9:1;;8011:168::o;8184:217::-;8224:1;8250;8240:132;;8294:10;8289:3;8285:20;8282:1;8275:31;8329:4;8326:1;8319:15;8357:4;8354:1;8347:15;8240:132;-1:-1:-1;8386:9:1;;8184:217::o;8406:128::-;8473:9;;;8494:11;;;8491:37;;;8508:18;;:::i;8539:125::-;8604:9;;;8625:10;;;8622:36;;;8638:18;;:::i;8669:184::-;8739:6;8792:2;8780:9;8771:7;8767:23;8763:32;8760:52;;;8808:1;8805;8798:12;8760:52;-1:-1:-1;8831:16:1;;8669:184;-1:-1:-1;8669:184:1:o;9137:245::-;9204:6;9257:2;9245:9;9236:7;9232:23;9228:32;9225:52;;;9273:1;9270;9263:12;9225:52;9305:9;9299:16;9324:28;9346:5;9324:28;:::i;11665:980::-;11927:4;11975:3;11964:9;11960:19;12006:6;11995:9;11988:25;12032:2;12070:6;12065:2;12054:9;12050:18;12043:34;12113:3;12108:2;12097:9;12093:18;12086:31;12137:6;12172;12166:13;12203:6;12195;12188:22;12241:3;12230:9;12226:19;12219:26;;12280:2;12272:6;12268:15;12254:29;;12301:1;12311:195;12325:6;12322:1;12319:13;12311:195;;;12390:13;;-1:-1:-1;;;;;12386:39:1;12374:52;;12481:15;;;;12446:12;;;;12422:1;12340:9;12311:195;;;-1:-1:-1;;;;;;;12562:32:1;;;;12557:2;12542:18;;12535:60;-1:-1:-1;;;12626:3:1;12611:19;12604:35;12523:3;11665:980;-1:-1:-1;;;11665:980:1:o

Swarm Source

ipfs://4dabccc4c2e1cd67bb50b2bd5683b9aeb736610208a6cb4b8f3177dfb62b7083
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.