ETH Price: $2,460.71 (-4.52%)

Token

RichardHeartInu (RHI)
 

Overview

Max Total Supply

1,000,000,000,000 RHI

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.46082759 RHI

Value
$0.00
0xfd09292C1502dd6Ec3012Cc8910c1e3f5b1a8163
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:
RichardHeartInu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-12
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract RichardHeartInu is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "RichardHeartInu";
    string private constant _symbol = "RHI";
    uint8 private constant _decimals = 9;

    // RFI
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _taxFee = 6;
    uint256 private _teamFee = 6;
    uint256 private _numOfTokensToExchangeForTeam = 500000 * 10**9;
    uint256 private _routermax = 5000000000 * 10**9;

    // Bot detection
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    address payable private _Marketingfund;
    address payable private _Deployer;
    address payable private _devWalletAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    uint256 public launchBlock;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address payable devFundAddr, address payable devfeeAddr, address payable depAddr) {
        _Marketingfund = devFundAddr;
        _Deployer = depAddr;
        _devWalletAddress = devfeeAddr;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_Marketingfund] = true;
        _isExcludedFromFee[_devWalletAddress] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_taxFee == 0 && _teamFee == 0) return;
        _taxFee = 0;
        _teamFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = 6;
        _teamFee = 6;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (from != owner() && to != owner()) {
            if (cooldownEnabled) {
                if (
                    from != address(this) &&
                    to != address(this) &&
                    from != address(uniswapV2Router) &&
                    to != address(uniswapV2Router)
                ) {
                    require(
                        _msgSender() == address(uniswapV2Router) ||
                            _msgSender() == uniswapV2Pair,
                        "ERR: Uniswap only"
                    );
                }
            }
            if(from != address(this)){
                require(amount <= _maxTxAmount);
            }
            require(!bots[from] && !bots[to] && !bots[msg.sender]);

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (15 seconds);
            }
            
 
              // This is done to prevent the taxes from filling up in the router since compiled taxes emptying can impact the chart. 
              // This reduces the impact of taxes on the chart.
              
             uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _routermax)
            {
                contractTokenBalance = _routermax;
            }
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
            if (!inSwap && swapEnabled && overMinTokenBalance && from != uniswapV2Pair && from != address(uniswapV2Router)
            ) {
                // We need to swap the current tokens to ETH and send to the team wallet
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

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

        _tokenTransfer(from, to, amount, takeFee);
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function isBlackListed(address account) public view returns (bool) {
        return bots[account];
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // generate the uniswap pair path of token -> weth
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapV2Router.WETH();

            _approve(address(this), address(uniswapV2Router), tokenAmount);

            // make the swap
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of ETH
                path,
                address(this),
                block.timestamp
            );
    }

    function sendETHToFee(uint256 amount) private {
        _Marketingfund.transfer(amount.div(6).mul(4));
        _devWalletAddress.transfer(amount.div(6).mul(2));
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router =
            IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = false;
        _maxTxAmount = 25000000000 * 10**9;
        launchBlock = block.number;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }
    
    function setSwapEnabled(bool enabled) external {
        require(_msgSender() == _Deployer);
        swapEnabled = enabled;
    }
        

    function manualswap() external {
        require(_msgSender() == _Deployer);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _Deployer);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function setBots(address[] memory bots_) public {
        require(_msgSender() == _Deployer);
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBot(address notbot) public {
        require(_msgSender() == _Deployer);
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setMaxTxPercent(uint256 maxTxPercent) external {
        require(_msgSender() == _Deployer);
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
    function setRouterPercent(uint256 maxRouterPercent) external {
        require(_msgSender() == _Deployer);
        require(maxRouterPercent > 0, "Amount must be greater than 0");
        _routermax = _tTotal.mul(maxRouterPercent).div(10**4);
    }
    
    function _setTeamFee(uint256 teamFee) external {
        require(_msgSender() == _Deployer);
        require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25');
        _teamFee = teamFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"devFundAddr","type":"address"},{"internalType":"address payable","name":"devfeeAddr","type":"address"},{"internalType":"address payable","name":"depAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxRouterPercent","type":"uint256"}],"name":"setRouterPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d91906200062a565b6000196200002c9190620005b1565b600655600660085560066009556601c6bf52634000600a55674563918244f40000600b556000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff021916908315150217905550683635c9adc5dea00000601355348015620000bb57600080fd5b5060405162004430380380620044308339818101604052810190620000e191906200052d565b6000620000f3620004e560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600260006200026b620004e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002bf620004ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200046c620004e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004d4919062000594565b60405180910390a3505050620006da565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200052781620006c0565b92915050565b6000806000606084860312156200054357600080fd5b6000620005538682870162000516565b9350506020620005668682870162000516565b9250506040620005798682870162000516565b9150509250925092565b6200058e8162000620565b82525050565b6000602082019050620005ab600083018462000583565b92915050565b6000620005be8262000620565b9150620005cb8362000620565b925082821015620005e157620005e062000662565b5b828203905092915050565b6000620005f98262000600565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620006378262000620565b9150620006448362000620565b92508262000657576200065662000691565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620006cb81620005ec565b8114620006d757600080fd5b50565b613d4680620006ea6000396000f3fe60806040526004361061014f5760003560e01c806395d89b41116100b6578063cba0e9961161006f578063cba0e9961461044f578063d00efb2f1461048c578063d543dbeb146104b7578063dd62ed3e146104e0578063e01af92c1461051d578063e47d60601461054657610156565b806395d89b4114610367578063a9059cbb14610392578063b515566a146103cf578063c0e6b46e146103f8578063c3c8cd8014610421578063c9567bf91461043857610156565b8063313ce56711610108578063313ce5671461027d5780635932ead1146102a85780636fc3eaec146102d157806370a08231146102e8578063715018a6146103255780638da5cb5b1461033c57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee578063273123b71461022b578063286671621461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610583565b60405161017d91906133c5565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612ec5565b6105c0565b6040516101ba91906133aa565b60405180910390f35b3480156101cf57600080fd5b506101d86105de565b6040516101e59190613587565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612e76565b6105ef565b60405161022291906133aa565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612de8565b6106c8565b005b34801561026057600080fd5b5061027b60048036038101906102769190612f94565b610784565b005b34801561028957600080fd5b50610292610840565b60405161029f91906135fc565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612f42565b610849565b005b3480156102dd57600080fd5b506102e66108fb565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612de8565b61096d565b60405161031c9190613587565b60405180910390f35b34801561033157600080fd5b5061033a6109be565b005b34801561034857600080fd5b50610351610b11565b60405161035e91906132dc565b60405180910390f35b34801561037357600080fd5b5061037c610b3a565b60405161038991906133c5565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190612ec5565b610b77565b6040516103c691906133aa565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f19190612f01565b610b95565b005b34801561040457600080fd5b5061041f600480360381019061041a9190612f94565b610cb1565b005b34801561042d57600080fd5b50610436610d8e565b005b34801561044457600080fd5b5061044d610e08565b005b34801561045b57600080fd5b5061047660048036038101906104719190612de8565b61136c565b60405161048391906133aa565b60405180910390f35b34801561049857600080fd5b506104a16113c2565b6040516104ae9190613587565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190612f94565b6113c8565b005b3480156104ec57600080fd5b5061050760048036038101906105029190612e3a565b6114dd565b6040516105149190613587565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612f42565b611564565b005b34801561055257600080fd5b5061056d60048036038101906105689190612de8565b6115e2565b60405161057a91906133aa565b60405180910390f35b60606040518060400160405280600f81526020017f526963686172644865617274496e750000000000000000000000000000000000815250905090565b60006105d46105cd611638565b8484611640565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105fc84848461180b565b6106bd84610608611638565b6106b885604051806060016040528060288152602001613ce960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061066e611638565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d19092919063ffffffff16565b611640565b600190509392505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610709611638565b73ffffffffffffffffffffffffffffffffffffffff161461072957600080fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107c5611638565b73ffffffffffffffffffffffffffffffffffffffff16146107e557600080fd5b600181101580156107f7575060198111155b610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90613447565b60405180910390fd5b8060098190555050565b60006009905090565b610851611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d5906134c7565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093c611638565b73ffffffffffffffffffffffffffffffffffffffff161461095c57600080fd5b600047905061096a81612135565b50565b60006109b7600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612256565b9050919050565b6109c6611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a906134c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5248490000000000000000000000000000000000000000000000000000000000815250905090565b6000610b8b610b84611638565b848461180b565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd6611638565b73ffffffffffffffffffffffffffffffffffffffff1614610bf657600080fd5b60005b8151811015610cad576001600c6000848481518110610c41577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ca59061389d565b915050610bf9565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf2611638565b73ffffffffffffffffffffffffffffffffffffffff1614610d1257600080fd5b60008111610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c90613487565b60405180910390fd5b610d85612710610d7783683635c9adc5dea000006122c490919063ffffffff16565b61233f90919063ffffffff16565b600b8190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dcf611638565b73ffffffffffffffffffffffffffffffffffffffff1614610def57600080fd5b6000610dfa3061096d565b9050610e0581612389565b50565b610e10611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e94906134c7565b60405180910390fd5b601260149054906101000a900460ff1615610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee490613547565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f7d30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611640565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc357600080fd5b505afa158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190612e11565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110959190612e11565b6040518363ffffffff1660e01b81526004016110b29291906132f7565b602060405180830381600087803b1580156110cc57600080fd5b505af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111049190612e11565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061118d3061096d565b600080611198610b11565b426040518863ffffffff1660e01b81526004016111ba96959493929190613349565b6060604051808303818588803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061120c9190612fbd565b5050506001601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff02191690831515021790555068015af1d78b58c40000601381905550436014819055506001601260146101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611316929190613320565b602060405180830381600087803b15801561133057600080fd5b505af1158015611344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113689190612f6b565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611409611638565b73ffffffffffffffffffffffffffffffffffffffff161461142957600080fd5b6000811161146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390613487565b60405180910390fd5b61149b606461148d83683635c9adc5dea000006122c490919063ffffffff16565b61233f90919063ffffffff16565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6013546040516114d29190613587565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115a5611638565b73ffffffffffffffffffffffffffffffffffffffff16146115c557600080fd5b80601260166101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a790613527565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790613427565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117fe9190613587565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187290613507565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e2906133e7565b60405180910390fd5b6000811161192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906134e7565b60405180910390fd5b611936610b11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a45750611974610b11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561200e57601260179054906101000a900460ff1615611bd7573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a805750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ada5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bd657601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b20611638565b73ffffffffffffffffffffffffffffffffffffffff161480611b965750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b7e611638565b73ffffffffffffffffffffffffffffffffffffffff16145b611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc90613567565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c1a57601354811115611c1957600080fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cbe5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d145750600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d1d57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dc85750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e1e5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e365750601260179054906101000a900460ff165b15611ed75742600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611e8657600080fd5b600f42611e9391906136bd565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611ee23061096d565b9050600b548110611ef357600b5490505b6000600a548210159050601260159054906101000a900460ff16158015611f265750601260169054906101000a900460ff165b8015611f2f5750805b8015611f895750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611fe35750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561200b57611ff182612389565b600047905060008111156120095761200847612135565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120b55750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120bf57600090505b6120cb84848484612683565b50505050565b6000838311158290612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211091906133c5565b60405180910390fd5b5060008385612128919061379e565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612198600461218a60068661233f90919063ffffffff16565b6122c490919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121c3573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612227600261221960068661233f90919063ffffffff16565b6122c490919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612252573d6000803e3d6000fd5b5050565b600060065482111561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229490613407565b60405180910390fd5b60006122a76126b0565b90506122bc818461233f90919063ffffffff16565b915050919050565b6000808314156122d75760009050612339565b600082846122e59190613744565b90508284826122f49190613713565b14612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b906134a7565b60405180910390fd5b809150505b92915050565b600061238183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126db565b905092915050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156124155781602001602082028036833780820191505090505b5090503081600081518110612453577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f557600080fd5b505afa158015612509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252d9190612e11565b81600181518110612567577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125ce30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611640565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126329594939291906135a2565b600060405180830381600087803b15801561264c57600080fd5b505af1158015612660573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b806126915761269061273e565b5b61269c84848461276f565b806126aa576126a961293a565b5b50505050565b60008060006126bd61294c565b915091506126d4818361233f90919063ffffffff16565b9250505090565b60008083118290612722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271991906133c5565b60405180910390fd5b50600083856127319190613713565b9050809150509392505050565b600060085414801561275257506000600954145b1561275c5761276d565b600060088190555060006009819055505b565b600080600080600080612781876129ae565b9550955095509550955095506127df86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128c081612abe565b6128ca8483612b7b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129279190613587565b60405180910390a3505050505050505050565b60066008819055506006600981905550565b600080600060065490506000683635c9adc5dea000009050612982683635c9adc5dea0000060065461233f90919063ffffffff16565b8210156129a157600654683635c9adc5dea000009350935050506129aa565b81819350935050505b9091565b60008060008060008060008060006129cb8a600854600954612bb5565b92509250925060006129db6126b0565b905060008060006129ee8e878787612c4b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a5883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120d1565b905092915050565b6000808284612a6f91906136bd565b905083811015612ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aab90613467565b60405180910390fd5b8091505092915050565b6000612ac86126b0565b90506000612adf82846122c490919063ffffffff16565b9050612b3381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b9082600654612a1690919063ffffffff16565b600681905550612bab81600754612a6090919063ffffffff16565b6007819055505050565b600080600080612be16064612bd3888a6122c490919063ffffffff16565b61233f90919063ffffffff16565b90506000612c0b6064612bfd888b6122c490919063ffffffff16565b61233f90919063ffffffff16565b90506000612c3482612c26858c612a1690919063ffffffff16565b612a1690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c6485896122c490919063ffffffff16565b90506000612c7b86896122c490919063ffffffff16565b90506000612c9287896122c490919063ffffffff16565b90506000612cbb82612cad8587612a1690919063ffffffff16565b612a1690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612ce7612ce28461363c565b613617565b90508083825260208201905082856020860282011115612d0657600080fd5b60005b85811015612d365781612d1c8882612d40565b845260208401935060208301925050600181019050612d09565b5050509392505050565b600081359050612d4f81613ca3565b92915050565b600081519050612d6481613ca3565b92915050565b600082601f830112612d7b57600080fd5b8135612d8b848260208601612cd4565b91505092915050565b600081359050612da381613cba565b92915050565b600081519050612db881613cba565b92915050565b600081359050612dcd81613cd1565b92915050565b600081519050612de281613cd1565b92915050565b600060208284031215612dfa57600080fd5b6000612e0884828501612d40565b91505092915050565b600060208284031215612e2357600080fd5b6000612e3184828501612d55565b91505092915050565b60008060408385031215612e4d57600080fd5b6000612e5b85828601612d40565b9250506020612e6c85828601612d40565b9150509250929050565b600080600060608486031215612e8b57600080fd5b6000612e9986828701612d40565b9350506020612eaa86828701612d40565b9250506040612ebb86828701612dbe565b9150509250925092565b60008060408385031215612ed857600080fd5b6000612ee685828601612d40565b9250506020612ef785828601612dbe565b9150509250929050565b600060208284031215612f1357600080fd5b600082013567ffffffffffffffff811115612f2d57600080fd5b612f3984828501612d6a565b91505092915050565b600060208284031215612f5457600080fd5b6000612f6284828501612d94565b91505092915050565b600060208284031215612f7d57600080fd5b6000612f8b84828501612da9565b91505092915050565b600060208284031215612fa657600080fd5b6000612fb484828501612dbe565b91505092915050565b600080600060608486031215612fd257600080fd5b6000612fe086828701612dd3565b9350506020612ff186828701612dd3565b925050604061300286828701612dd3565b9150509250925092565b60006130188383613024565b60208301905092915050565b61302d816137d2565b82525050565b61303c816137d2565b82525050565b600061304d82613678565b613057818561369b565b935061306283613668565b8060005b8381101561309357815161307a888261300c565b97506130858361368e565b925050600181019050613066565b5085935050505092915050565b6130a9816137e4565b82525050565b6130b881613827565b82525050565b60006130c982613683565b6130d381856136ac565b93506130e3818560208601613839565b6130ec81613973565b840191505092915050565b60006131046023836136ac565b915061310f82613984565b604082019050919050565b6000613127602a836136ac565b9150613132826139d3565b604082019050919050565b600061314a6022836136ac565b915061315582613a22565b604082019050919050565b600061316d601b836136ac565b915061317882613a71565b602082019050919050565b6000613190601b836136ac565b915061319b82613a9a565b602082019050919050565b60006131b3601d836136ac565b91506131be82613ac3565b602082019050919050565b60006131d66021836136ac565b91506131e182613aec565b604082019050919050565b60006131f96020836136ac565b915061320482613b3b565b602082019050919050565b600061321c6029836136ac565b915061322782613b64565b604082019050919050565b600061323f6025836136ac565b915061324a82613bb3565b604082019050919050565b60006132626024836136ac565b915061326d82613c02565b604082019050919050565b60006132856017836136ac565b915061329082613c51565b602082019050919050565b60006132a86011836136ac565b91506132b382613c7a565b602082019050919050565b6132c781613810565b82525050565b6132d68161381a565b82525050565b60006020820190506132f16000830184613033565b92915050565b600060408201905061330c6000830185613033565b6133196020830184613033565b9392505050565b60006040820190506133356000830185613033565b61334260208301846132be565b9392505050565b600060c08201905061335e6000830189613033565b61336b60208301886132be565b61337860408301876130af565b61338560608301866130af565b6133926080830185613033565b61339f60a08301846132be565b979650505050505050565b60006020820190506133bf60008301846130a0565b92915050565b600060208201905081810360008301526133df81846130be565b905092915050565b60006020820190508181036000830152613400816130f7565b9050919050565b600060208201905081810360008301526134208161311a565b9050919050565b600060208201905081810360008301526134408161313d565b9050919050565b6000602082019050818103600083015261346081613160565b9050919050565b6000602082019050818103600083015261348081613183565b9050919050565b600060208201905081810360008301526134a0816131a6565b9050919050565b600060208201905081810360008301526134c0816131c9565b9050919050565b600060208201905081810360008301526134e0816131ec565b9050919050565b600060208201905081810360008301526135008161320f565b9050919050565b6000602082019050818103600083015261352081613232565b9050919050565b6000602082019050818103600083015261354081613255565b9050919050565b6000602082019050818103600083015261356081613278565b9050919050565b600060208201905081810360008301526135808161329b565b9050919050565b600060208201905061359c60008301846132be565b92915050565b600060a0820190506135b760008301886132be565b6135c460208301876130af565b81810360408301526135d68186613042565b90506135e56060830185613033565b6135f260808301846132be565b9695505050505050565b600060208201905061361160008301846132cd565b92915050565b6000613621613632565b905061362d828261386c565b919050565b6000604051905090565b600067ffffffffffffffff82111561365757613656613944565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006136c882613810565b91506136d383613810565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613708576137076138e6565b5b828201905092915050565b600061371e82613810565b915061372983613810565b92508261373957613738613915565b5b828204905092915050565b600061374f82613810565b915061375a83613810565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613793576137926138e6565b5b828202905092915050565b60006137a982613810565b91506137b483613810565b9250828210156137c7576137c66138e6565b5b828203905092915050565b60006137dd826137f0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061383282613810565b9050919050565b60005b8381101561385757808201518184015260208101905061383c565b83811115613866576000848401525b50505050565b61387582613973565b810181811067ffffffffffffffff8211171561389457613893613944565b5b80604052505050565b60006138a882613810565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138db576138da6138e6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b613cac816137d2565b8114613cb757600080fd5b50565b613cc3816137e4565b8114613cce57600080fd5b50565b613cda81613810565b8114613ce557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201fb32bf6d7275bfcb26dc671af371e40187e5530830c84c3e393d653f1378bc464736f6c634300080400330000000000000000000000006a792f1195be4f04b9f57727dbbd1984e6b378850000000000000000000000007c37c82f1bdf66963507953367ca251f40e210a0000000000000000000000000fa093cd625b50643218b9e9575417f40fe7cc665

Deployed Bytecode

0x60806040526004361061014f5760003560e01c806395d89b41116100b6578063cba0e9961161006f578063cba0e9961461044f578063d00efb2f1461048c578063d543dbeb146104b7578063dd62ed3e146104e0578063e01af92c1461051d578063e47d60601461054657610156565b806395d89b4114610367578063a9059cbb14610392578063b515566a146103cf578063c0e6b46e146103f8578063c3c8cd8014610421578063c9567bf91461043857610156565b8063313ce56711610108578063313ce5671461027d5780635932ead1146102a85780636fc3eaec146102d157806370a08231146102e8578063715018a6146103255780638da5cb5b1461033c57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee578063273123b71461022b578063286671621461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610583565b60405161017d91906133c5565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612ec5565b6105c0565b6040516101ba91906133aa565b60405180910390f35b3480156101cf57600080fd5b506101d86105de565b6040516101e59190613587565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612e76565b6105ef565b60405161022291906133aa565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612de8565b6106c8565b005b34801561026057600080fd5b5061027b60048036038101906102769190612f94565b610784565b005b34801561028957600080fd5b50610292610840565b60405161029f91906135fc565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612f42565b610849565b005b3480156102dd57600080fd5b506102e66108fb565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612de8565b61096d565b60405161031c9190613587565b60405180910390f35b34801561033157600080fd5b5061033a6109be565b005b34801561034857600080fd5b50610351610b11565b60405161035e91906132dc565b60405180910390f35b34801561037357600080fd5b5061037c610b3a565b60405161038991906133c5565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190612ec5565b610b77565b6040516103c691906133aa565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f19190612f01565b610b95565b005b34801561040457600080fd5b5061041f600480360381019061041a9190612f94565b610cb1565b005b34801561042d57600080fd5b50610436610d8e565b005b34801561044457600080fd5b5061044d610e08565b005b34801561045b57600080fd5b5061047660048036038101906104719190612de8565b61136c565b60405161048391906133aa565b60405180910390f35b34801561049857600080fd5b506104a16113c2565b6040516104ae9190613587565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190612f94565b6113c8565b005b3480156104ec57600080fd5b5061050760048036038101906105029190612e3a565b6114dd565b6040516105149190613587565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612f42565b611564565b005b34801561055257600080fd5b5061056d60048036038101906105689190612de8565b6115e2565b60405161057a91906133aa565b60405180910390f35b60606040518060400160405280600f81526020017f526963686172644865617274496e750000000000000000000000000000000000815250905090565b60006105d46105cd611638565b8484611640565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105fc84848461180b565b6106bd84610608611638565b6106b885604051806060016040528060288152602001613ce960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061066e611638565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d19092919063ffffffff16565b611640565b600190509392505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610709611638565b73ffffffffffffffffffffffffffffffffffffffff161461072957600080fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107c5611638565b73ffffffffffffffffffffffffffffffffffffffff16146107e557600080fd5b600181101580156107f7575060198111155b610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90613447565b60405180910390fd5b8060098190555050565b60006009905090565b610851611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d5906134c7565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093c611638565b73ffffffffffffffffffffffffffffffffffffffff161461095c57600080fd5b600047905061096a81612135565b50565b60006109b7600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612256565b9050919050565b6109c6611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a906134c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5248490000000000000000000000000000000000000000000000000000000000815250905090565b6000610b8b610b84611638565b848461180b565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd6611638565b73ffffffffffffffffffffffffffffffffffffffff1614610bf657600080fd5b60005b8151811015610cad576001600c6000848481518110610c41577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ca59061389d565b915050610bf9565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf2611638565b73ffffffffffffffffffffffffffffffffffffffff1614610d1257600080fd5b60008111610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c90613487565b60405180910390fd5b610d85612710610d7783683635c9adc5dea000006122c490919063ffffffff16565b61233f90919063ffffffff16565b600b8190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dcf611638565b73ffffffffffffffffffffffffffffffffffffffff1614610def57600080fd5b6000610dfa3061096d565b9050610e0581612389565b50565b610e10611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e94906134c7565b60405180910390fd5b601260149054906101000a900460ff1615610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee490613547565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f7d30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611640565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc357600080fd5b505afa158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190612e11565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110959190612e11565b6040518363ffffffff1660e01b81526004016110b29291906132f7565b602060405180830381600087803b1580156110cc57600080fd5b505af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111049190612e11565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061118d3061096d565b600080611198610b11565b426040518863ffffffff1660e01b81526004016111ba96959493929190613349565b6060604051808303818588803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061120c9190612fbd565b5050506001601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff02191690831515021790555068015af1d78b58c40000601381905550436014819055506001601260146101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611316929190613320565b602060405180830381600087803b15801561133057600080fd5b505af1158015611344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113689190612f6b565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611409611638565b73ffffffffffffffffffffffffffffffffffffffff161461142957600080fd5b6000811161146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390613487565b60405180910390fd5b61149b606461148d83683635c9adc5dea000006122c490919063ffffffff16565b61233f90919063ffffffff16565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6013546040516114d29190613587565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115a5611638565b73ffffffffffffffffffffffffffffffffffffffff16146115c557600080fd5b80601260166101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a790613527565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790613427565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117fe9190613587565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187290613507565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e2906133e7565b60405180910390fd5b6000811161192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906134e7565b60405180910390fd5b611936610b11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a45750611974610b11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561200e57601260179054906101000a900460ff1615611bd7573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a805750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ada5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bd657601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b20611638565b73ffffffffffffffffffffffffffffffffffffffff161480611b965750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b7e611638565b73ffffffffffffffffffffffffffffffffffffffff16145b611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc90613567565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c1a57601354811115611c1957600080fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cbe5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d145750600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d1d57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dc85750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e1e5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e365750601260179054906101000a900460ff165b15611ed75742600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611e8657600080fd5b600f42611e9391906136bd565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611ee23061096d565b9050600b548110611ef357600b5490505b6000600a548210159050601260159054906101000a900460ff16158015611f265750601260169054906101000a900460ff165b8015611f2f5750805b8015611f895750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611fe35750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561200b57611ff182612389565b600047905060008111156120095761200847612135565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120b55750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120bf57600090505b6120cb84848484612683565b50505050565b6000838311158290612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211091906133c5565b60405180910390fd5b5060008385612128919061379e565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612198600461218a60068661233f90919063ffffffff16565b6122c490919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121c3573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612227600261221960068661233f90919063ffffffff16565b6122c490919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612252573d6000803e3d6000fd5b5050565b600060065482111561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229490613407565b60405180910390fd5b60006122a76126b0565b90506122bc818461233f90919063ffffffff16565b915050919050565b6000808314156122d75760009050612339565b600082846122e59190613744565b90508284826122f49190613713565b14612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b906134a7565b60405180910390fd5b809150505b92915050565b600061238183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126db565b905092915050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156124155781602001602082028036833780820191505090505b5090503081600081518110612453577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f557600080fd5b505afa158015612509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252d9190612e11565b81600181518110612567577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125ce30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611640565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126329594939291906135a2565b600060405180830381600087803b15801561264c57600080fd5b505af1158015612660573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b806126915761269061273e565b5b61269c84848461276f565b806126aa576126a961293a565b5b50505050565b60008060006126bd61294c565b915091506126d4818361233f90919063ffffffff16565b9250505090565b60008083118290612722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271991906133c5565b60405180910390fd5b50600083856127319190613713565b9050809150509392505050565b600060085414801561275257506000600954145b1561275c5761276d565b600060088190555060006009819055505b565b600080600080600080612781876129ae565b9550955095509550955095506127df86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128c081612abe565b6128ca8483612b7b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129279190613587565b60405180910390a3505050505050505050565b60066008819055506006600981905550565b600080600060065490506000683635c9adc5dea000009050612982683635c9adc5dea0000060065461233f90919063ffffffff16565b8210156129a157600654683635c9adc5dea000009350935050506129aa565b81819350935050505b9091565b60008060008060008060008060006129cb8a600854600954612bb5565b92509250925060006129db6126b0565b905060008060006129ee8e878787612c4b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a5883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120d1565b905092915050565b6000808284612a6f91906136bd565b905083811015612ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aab90613467565b60405180910390fd5b8091505092915050565b6000612ac86126b0565b90506000612adf82846122c490919063ffffffff16565b9050612b3381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b9082600654612a1690919063ffffffff16565b600681905550612bab81600754612a6090919063ffffffff16565b6007819055505050565b600080600080612be16064612bd3888a6122c490919063ffffffff16565b61233f90919063ffffffff16565b90506000612c0b6064612bfd888b6122c490919063ffffffff16565b61233f90919063ffffffff16565b90506000612c3482612c26858c612a1690919063ffffffff16565b612a1690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c6485896122c490919063ffffffff16565b90506000612c7b86896122c490919063ffffffff16565b90506000612c9287896122c490919063ffffffff16565b90506000612cbb82612cad8587612a1690919063ffffffff16565b612a1690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612ce7612ce28461363c565b613617565b90508083825260208201905082856020860282011115612d0657600080fd5b60005b85811015612d365781612d1c8882612d40565b845260208401935060208301925050600181019050612d09565b5050509392505050565b600081359050612d4f81613ca3565b92915050565b600081519050612d6481613ca3565b92915050565b600082601f830112612d7b57600080fd5b8135612d8b848260208601612cd4565b91505092915050565b600081359050612da381613cba565b92915050565b600081519050612db881613cba565b92915050565b600081359050612dcd81613cd1565b92915050565b600081519050612de281613cd1565b92915050565b600060208284031215612dfa57600080fd5b6000612e0884828501612d40565b91505092915050565b600060208284031215612e2357600080fd5b6000612e3184828501612d55565b91505092915050565b60008060408385031215612e4d57600080fd5b6000612e5b85828601612d40565b9250506020612e6c85828601612d40565b9150509250929050565b600080600060608486031215612e8b57600080fd5b6000612e9986828701612d40565b9350506020612eaa86828701612d40565b9250506040612ebb86828701612dbe565b9150509250925092565b60008060408385031215612ed857600080fd5b6000612ee685828601612d40565b9250506020612ef785828601612dbe565b9150509250929050565b600060208284031215612f1357600080fd5b600082013567ffffffffffffffff811115612f2d57600080fd5b612f3984828501612d6a565b91505092915050565b600060208284031215612f5457600080fd5b6000612f6284828501612d94565b91505092915050565b600060208284031215612f7d57600080fd5b6000612f8b84828501612da9565b91505092915050565b600060208284031215612fa657600080fd5b6000612fb484828501612dbe565b91505092915050565b600080600060608486031215612fd257600080fd5b6000612fe086828701612dd3565b9350506020612ff186828701612dd3565b925050604061300286828701612dd3565b9150509250925092565b60006130188383613024565b60208301905092915050565b61302d816137d2565b82525050565b61303c816137d2565b82525050565b600061304d82613678565b613057818561369b565b935061306283613668565b8060005b8381101561309357815161307a888261300c565b97506130858361368e565b925050600181019050613066565b5085935050505092915050565b6130a9816137e4565b82525050565b6130b881613827565b82525050565b60006130c982613683565b6130d381856136ac565b93506130e3818560208601613839565b6130ec81613973565b840191505092915050565b60006131046023836136ac565b915061310f82613984565b604082019050919050565b6000613127602a836136ac565b9150613132826139d3565b604082019050919050565b600061314a6022836136ac565b915061315582613a22565b604082019050919050565b600061316d601b836136ac565b915061317882613a71565b602082019050919050565b6000613190601b836136ac565b915061319b82613a9a565b602082019050919050565b60006131b3601d836136ac565b91506131be82613ac3565b602082019050919050565b60006131d66021836136ac565b91506131e182613aec565b604082019050919050565b60006131f96020836136ac565b915061320482613b3b565b602082019050919050565b600061321c6029836136ac565b915061322782613b64565b604082019050919050565b600061323f6025836136ac565b915061324a82613bb3565b604082019050919050565b60006132626024836136ac565b915061326d82613c02565b604082019050919050565b60006132856017836136ac565b915061329082613c51565b602082019050919050565b60006132a86011836136ac565b91506132b382613c7a565b602082019050919050565b6132c781613810565b82525050565b6132d68161381a565b82525050565b60006020820190506132f16000830184613033565b92915050565b600060408201905061330c6000830185613033565b6133196020830184613033565b9392505050565b60006040820190506133356000830185613033565b61334260208301846132be565b9392505050565b600060c08201905061335e6000830189613033565b61336b60208301886132be565b61337860408301876130af565b61338560608301866130af565b6133926080830185613033565b61339f60a08301846132be565b979650505050505050565b60006020820190506133bf60008301846130a0565b92915050565b600060208201905081810360008301526133df81846130be565b905092915050565b60006020820190508181036000830152613400816130f7565b9050919050565b600060208201905081810360008301526134208161311a565b9050919050565b600060208201905081810360008301526134408161313d565b9050919050565b6000602082019050818103600083015261346081613160565b9050919050565b6000602082019050818103600083015261348081613183565b9050919050565b600060208201905081810360008301526134a0816131a6565b9050919050565b600060208201905081810360008301526134c0816131c9565b9050919050565b600060208201905081810360008301526134e0816131ec565b9050919050565b600060208201905081810360008301526135008161320f565b9050919050565b6000602082019050818103600083015261352081613232565b9050919050565b6000602082019050818103600083015261354081613255565b9050919050565b6000602082019050818103600083015261356081613278565b9050919050565b600060208201905081810360008301526135808161329b565b9050919050565b600060208201905061359c60008301846132be565b92915050565b600060a0820190506135b760008301886132be565b6135c460208301876130af565b81810360408301526135d68186613042565b90506135e56060830185613033565b6135f260808301846132be565b9695505050505050565b600060208201905061361160008301846132cd565b92915050565b6000613621613632565b905061362d828261386c565b919050565b6000604051905090565b600067ffffffffffffffff82111561365757613656613944565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006136c882613810565b91506136d383613810565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613708576137076138e6565b5b828201905092915050565b600061371e82613810565b915061372983613810565b92508261373957613738613915565b5b828204905092915050565b600061374f82613810565b915061375a83613810565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613793576137926138e6565b5b828202905092915050565b60006137a982613810565b91506137b483613810565b9250828210156137c7576137c66138e6565b5b828203905092915050565b60006137dd826137f0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061383282613810565b9050919050565b60005b8381101561385757808201518184015260208101905061383c565b83811115613866576000848401525b50505050565b61387582613973565b810181811067ffffffffffffffff8211171561389457613893613944565b5b80604052505050565b60006138a882613810565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138db576138da6138e6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b613cac816137d2565b8114613cb757600080fd5b50565b613cc3816137e4565b8114613cce57600080fd5b50565b613cda81613810565b8114613ce557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201fb32bf6d7275bfcb26dc671af371e40187e5530830c84c3e393d653f1378bc464736f6c63430008040033

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

0000000000000000000000006a792f1195be4f04b9f57727dbbd1984e6b378850000000000000000000000007c37c82f1bdf66963507953367ca251f40e210a0000000000000000000000000fa093cd625b50643218b9e9575417f40fe7cc665

-----Decoded View---------------
Arg [0] : devFundAddr (address): 0x6A792F1195Be4F04B9F57727dBbD1984e6b37885
Arg [1] : devfeeAddr (address): 0x7c37C82f1bdF66963507953367Ca251F40e210A0
Arg [2] : depAddr (address): 0xFa093CD625B50643218b9e9575417f40fe7Cc665

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006a792f1195be4f04b9f57727dbbd1984e6b37885
Arg [1] : 0000000000000000000000007c37c82f1bdf66963507953367ca251f40e210a0
Arg [2] : 000000000000000000000000fa093cd625b50643218b9e9575417f40fe7cc665


Deployed Bytecode Sourcemap

3852:14638:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5970:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6247:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7096:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14195:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18278:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6156:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7550:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13789:188;;;;;;;;;;;;;:::i;:::-;;6350:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2804:148;;;;;;;;;;;;;:::i;:::-;;2590:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6061:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6496:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13985:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18015:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13592:189;;;;;;;;;;;;;:::i;:::-;;12414:1016;;;;;;;;;;;;;:::i;:::-;;11338:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5260:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17721:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6703:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13442:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11463:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5970:83;6007:13;6040:5;;;;;;;;;;;;;;;;;6033:12;;5970:83;:::o;6895:193::-;6997:4;7019:39;7028:12;:10;:12::i;:::-;7042:7;7051:6;7019:8;:39::i;:::-;7076:4;7069:11;;6895:193;;;;:::o;6247:95::-;6300:7;4422:21;6320:14;;6247:95;:::o;7096:446::-;7228:4;7245:36;7255:6;7263:9;7274:6;7245:9;:36::i;:::-;7292:220;7315:6;7336:12;:10;:12::i;:::-;7363:138;7419:6;7363:138;;;;;;;;;;;;;;;;;:11;:19;7375:6;7363:19;;;;;;;;;;;;;;;:33;7383:12;:10;:12::i;:::-;7363:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7292:8;:220::i;:::-;7530:4;7523:11;;7096:446;;;;;:::o;14195:123::-;14269:9;;;;;;;;;;;14253:25;;:12;:10;:12::i;:::-;:25;;;14245:34;;;;;;14305:5;14290:4;:12;14295:6;14290:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14195:123;:::o;18278:209::-;18360:9;;;;;;;;;;;18344:25;;:12;:10;:12::i;:::-;:25;;;18336:34;;;;;;18400:1;18389:7;:12;;:29;;;;;18416:2;18405:7;:13;;18389:29;18381:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;18472:7;18461:8;:18;;;;18278:209;:::o;6156:83::-;6197:5;4084:1;6215:16;;6156:83;:::o;7550:103::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7640:5:::1;7622:15;;:23;;;;;;;;;;;;;;;;;;7550:103:::0;:::o;13789:188::-;13855:9;;;;;;;;;;;13839:25;;:12;:10;:12::i;:::-;:25;;;13831:34;;;;;;13876:26;13905:21;13876:50;;13937:32;13950:18;13937:12;:32::i;:::-;13789:188;:::o;6350:138::-;6416:7;6443:37;6463:7;:16;6471:7;6463:16;;;;;;;;;;;;;;;;6443:19;:37::i;:::-;6436:44;;6350:138;;;:::o;2804:148::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2911:1:::1;2874:40;;2895:6;::::0;::::1;;;;;;;;2874:40;;;;;;;;;;;;2942:1;2925:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2804:148::o:0;2590:79::-;2628:7;2655:6;;;;;;;;;;;2648:13;;2590:79;:::o;6061:87::-;6100:13;6133:7;;;;;;;;;;;;;;;;;6126:14;;6061:87;:::o;6496:199::-;6601:4;6623:42;6633:12;:10;:12::i;:::-;6647:9;6658:6;6623:9;:42::i;:::-;6683:4;6676:11;;6496:199;;;;:::o;13985:202::-;14068:9;;;;;;;;;;;14052:25;;:12;:10;:12::i;:::-;:25;;;14044:34;;;;;;14094:9;14089:91;14113:5;:12;14109:1;:16;14089:91;;;14164:4;14147;:14;14152:5;14158:1;14152:8;;;;;;;;;;;;;;;;;;;;;;14147:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14127:3;;;;;:::i;:::-;;;;14089:91;;;;13985:202;:::o;18015:251::-;18111:9;;;;;;;;;;;18095:25;;:12;:10;:12::i;:::-;:25;;;18087:34;;;;;;18159:1;18140:16;:20;18132:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18218:40;18252:5;18218:29;18230:16;4422:21;18218:11;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;18205:10;:53;;;;18015:251;:::o;13592:189::-;13658:9;;;;;;;;;;;13642:25;;:12;:10;:12::i;:::-;:25;;;13634:34;;;;;;13679:23;13705:24;13723:4;13705:9;:24::i;:::-;13679:50;;13740:33;13757:15;13740:16;:33::i;:::-;13592:189;:::o;12414:1016::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12478:11:::1;;;;;;;;;;;12477:12;12469:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12528:35;12598:42;12528:113;;12670:16;12652:15;;:34;;;;;;;;;;;;;;;;;;12697:58;12714:4;12729:15;;;;;;;;;;;4422:21;12697:8;:58::i;:::-;12800:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12782:70;;;12861:4;12868:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12782:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12766:13;;:126;;;;;;;;;;;;;;;;;;12903:15;;;;;;;;;;;:31;;;12942:21;12987:4;13007:24;13025:4;13007:9;:24::i;:::-;13046:1;13062::::0;13078:7:::1;:5;:7::i;:::-;13100:15;12903:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13151:4;13137:11;;:18;;;;;;;;;;;;;;;;;;13184:5;13166:15;;:23;;;;;;;;;;;;;;;;;;13215:19;13200:12;:34;;;;13259:12;13245:11;:26;;;;13296:4;13282:11;;:18;;;;;;;;;;;;;;;;;;13318:13;;;;;;;;;;;13311:29;;;13363:15;;;;;;;;;;;13394:17;13311:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2787:1;12414:1016::o:0;11338:117::-;11396:4;11420:18;:27;11439:7;11420:27;;;;;;;;;;;;;;;;;;;;;;;;;11413:34;;11338:117;;;:::o;5260:26::-;;;;:::o;17721:288::-;17812:9;;;;;;;;;;;17796:25;;:12;:10;:12::i;:::-;:25;;;17788:34;;;;;;17856:1;17841:12;:16;17833:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17917:36;17947:5;17917:25;17929:12;4422:21;17917:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;17902:12;:51;;;;17969:32;17988:12;;17969:32;;;;;;:::i;:::-;;;;;;;;17721:288;:::o;6703:184::-;6820:7;6852:11;:18;6864:5;6852:18;;;;;;;;;;;;;;;:27;6871:7;6852:27;;;;;;;;;;;;;;;;6845:34;;6703:184;;;;:::o;13442:132::-;13524:9;;;;;;;;;;;13508:25;;:12;:10;:12::i;:::-;:25;;;13500:34;;;;;;13559:7;13545:11;;:21;;;;;;;;;;;;;;;;;;13442:132;:::o;11463:106::-;11524:4;11548;:13;11553:7;11548:13;;;;;;;;;;;;;;;;;;;;;;;;;11541:20;;11463:106;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;8231:369::-;8375:1;8358:19;;:5;:19;;;;8350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8456:1;8437:21;;:7;:21;;;;8429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8538:6;8508:11;:18;8520:5;8508:18;;;;;;;;;;;;;;;:27;8527:7;8508:27;;;;;;;;;;;;;;;:36;;;;8576:7;8560:32;;8569:5;8560:32;;;8585:6;8560:32;;;;;;:::i;:::-;;;;;;;;8231:369;;;:::o;8608:2722::-;8746:1;8730:18;;:4;:18;;;;8722:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8823:1;8809:16;;:2;:16;;;;8801:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8893:1;8884:6;:10;8876:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8973:7;:5;:7::i;:::-;8965:15;;:4;:15;;;;:32;;;;;8990:7;:5;:7::i;:::-;8984:13;;:2;:13;;;;8965:32;8961:2168;;;9018:15;;;;;;;;;;;9014:526;;;9096:4;9080:21;;:4;:21;;;;:65;;;;;9140:4;9126:19;;:2;:19;;;;9080:65;:122;;;;;9186:15;;;;;;;;;;;9170:32;;:4;:32;;;;9080:122;:177;;;;;9241:15;;;;;;;;;;;9227:30;;:2;:30;;;;9080:177;9054:471;;;9358:15;;;;;;;;;;;9334:40;;:12;:10;:12::i;:::-;:40;;;:102;;;;9423:13;;;;;;;;;;;9407:29;;:12;:10;:12::i;:::-;:29;;;9334:102;9300:205;;;;;;;;;;;;:::i;:::-;;;;;;;;;9054:471;9014:526;9573:4;9557:21;;:4;:21;;;9554:91;;9616:12;;9606:6;:22;;9598:31;;;;;;9554:91;9668:4;:10;9673:4;9668:10;;;;;;;;;;;;;;;;;;;;;;;;;9667:11;:24;;;;;9683:4;:8;9688:2;9683:8;;;;;;;;;;;;;;;;;;;;;;;;;9682:9;9667:24;:45;;;;;9696:4;:16;9701:10;9696:16;;;;;;;;;;;;;;;;;;;;;;;;;9695:17;9667:45;9659:54;;;;;;9760:13;;;;;;;;;;;9752:21;;:4;:21;;;:72;;;;;9808:15;;;;;;;;;;;9794:30;;:2;:30;;;;9752:72;:116;;;;;9846:18;:22;9865:2;9846:22;;;;;;;;;;;;;;;;;;;;;;;;;9845:23;9752:116;:152;;;;;9889:15;;;;;;;;;;;9752:152;9730:328;;;9962:15;9947:8;:12;9956:2;9947:12;;;;;;;;;;;;;;;;:30;9939:39;;;;;;10031:10;10012:15;:30;;;;:::i;:::-;9997:8;:12;10006:2;9997:12;;;;;;;;;;;;;;;:45;;;;9730:328;10306:28;10337:24;10355:4;10337:9;:24::i;:::-;10306:55;;10417:10;;10393:20;:34;10390:120;;10484:10;;10461:33;;10390:120;10524:24;10575:29;;10551:20;:53;;10524:80;;10624:6;;;;;;;;;;;10623:7;:22;;;;;10634:11;;;;;;;;;;;10623:22;:45;;;;;10649:19;10623:45;:70;;;;;10680:13;;;;;;;;;;;10672:21;;:4;:21;;;;10623:70;:106;;;;;10713:15;;;;;;;;;;;10697:32;;:4;:32;;;;10623:106;10619:499;;;10854:38;10871:20;10854:16;:38::i;:::-;10929:26;10958:21;10929:50;;11022:1;11001:18;:22;10998:105;;;11048:35;11061:21;11048:12;:35::i;:::-;10998:105;10619:499;;8961:2168;;;11139:12;11154:4;11139:19;;11175:18;:24;11194:4;11175:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11203:18;:22;11222:2;11203:22;;;;;;;;;;;;;;;;;;;;;;;;;11175:50;11171:98;;;11252:5;11242:15;;11171:98;11281:41;11296:4;11302:2;11306:6;11314:7;11281:14;:41::i;:::-;8608:2722;;;;:::o;1355:224::-;1475:7;1508:1;1503;:6;;1511:12;1495:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1535:9;1551:1;1547;:5;;;;:::i;:::-;1535:17;;1570:1;1563:8;;;1355:224;;;;;:::o;12237:169::-;12294:14;;;;;;;;;;;:23;;:45;12318:20;12336:1;12318:13;12329:1;12318:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;12294:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12350:17;;;;;;;;;;;:26;;:48;12377:20;12395:1;12377:13;12388:1;12377:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;12350:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12237:169;:::o;7661:323::-;7756:7;7814;;7803;:18;;7781:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7902:19;7924:10;:8;:10::i;:::-;7902:32;;7952:24;7964:11;7952:7;:11;;:24;;;;:::i;:::-;7945:31;;;7661:323;;;:::o;1587:246::-;1645:7;1674:1;1669;:6;1665:47;;;1699:1;1692:8;;;;1665:47;1722:9;1738:1;1734;:5;;;;:::i;:::-;1722:17;;1767:1;1762;1758;:5;;;;:::i;:::-;:10;1750:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1824:1;1817:8;;;1587:246;;;;;:::o;1841:132::-;1899:7;1926:39;1930:1;1933;1926:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1919:46;;1841:132;;;;:::o;11577:652::-;5389:4;5380:6;;:13;;;;;;;;;;;;;;;;;;11722:21:::1;11760:1;11746:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11722:40;;11795:4;11777;11782:1;11777:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11825:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11815:4;11820:1;11815:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;11864:62;11881:4;11896:15;;;;;;;;;;;11914:11;11864:8;:62::i;:::-;11973:15;;;;;;;;;;;:66;;;12058:11;12088:1;12136:4;12167;12191:15;11973:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5404:1;5425:5:::0;5416:6;;:14;;;;;;;;;;;;;;;;;;11577:652;:::o;14326:282::-;14482:7;14477:28;;14491:14;:12;:14::i;:::-;14477:28;14516:44;14534:6;14542:9;14553:6;14516:17;:44::i;:::-;14576:7;14571:29;;14585:15;:13;:15::i;:::-;14571:29;14326:282;;;;:::o;17284:164::-;17326:7;17347:15;17364;17383:19;:17;:19::i;:::-;17346:56;;;;17420:20;17432:7;17420;:11;;:20;;;;:::i;:::-;17413:27;;;;17284:164;:::o;1981:223::-;2101:7;2133:1;2129;:5;2136:12;2121:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2160:9;2176:1;2172;:5;;;;:::i;:::-;2160:17;;2195:1;2188:8;;;1981:223;;;;;:::o;7992:137::-;8050:1;8039:7;;:12;:29;;;;;8067:1;8055:8;;:13;8039:29;8035:42;;;8070:7;;8035:42;8097:1;8087:7;:11;;;;8120:1;8109:8;:12;;;;7992:137;:::o;14616:610::-;14763:15;14793:23;14831:12;14858:23;14896:12;14923:13;14950:19;14961:7;14950:10;:19::i;:::-;14748:221;;;;;;;;;;;;14998:28;15018:7;14998;:15;15006:6;14998:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14980:7;:15;14988:6;14980:15;;;;;;;;;;;;;;;:46;;;;15058:39;15081:15;15058:7;:18;15066:9;15058:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15037:7;:18;15045:9;15037:18;;;;;;;;;;;;;;;:60;;;;15108:16;15118:5;15108:9;:16::i;:::-;15135:23;15147:4;15153;15135:11;:23::i;:::-;15191:9;15174:44;;15183:6;15174:44;;;15202:15;15174:44;;;;;;:::i;:::-;;;;;;;;14616:610;;;;;;;;;:::o;8137:86::-;8191:1;8181:7;:11;;;;8214:1;8203:8;:12;;;;8137:86::o;17456:257::-;17507:7;17516;17536:15;17554:7;;17536:25;;17572:15;4422:21;17572:25;;17622:20;4422:21;17622:7;;:11;;:20;;;;:::i;:::-;17612:7;:30;17608:61;;;17652:7;;4422:21;17644:25;;;;;;;;17608:61;17688:7;17697;17680:25;;;;;;17456:257;;;:::o;15645:614::-;15745:7;15767;15789;15811;15833;15855;15891:23;15916:12;15930:13;15960:39;15972:7;15981;;15990:8;;15960:11;:39::i;:::-;15890:109;;;;;;16010:19;16032:10;:8;:10::i;:::-;16010:32;;16054:15;16071:23;16096:12;16125:46;16137:7;16146:4;16152:5;16159:11;16125;:46::i;:::-;16053:118;;;;;;16190:7;16199:15;16216:4;16222:15;16239:4;16245:5;16182:69;;;;;;;;;;;;;;;;;;;15645:614;;;;;;;:::o;1211:136::-;1269:7;1296:43;1300:1;1303;1296:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1289:50;;1211:136;;;;:::o;1024:179::-;1082:7;1102:9;1118:1;1114;:5;;;;:::i;:::-;1102:17;;1143:1;1138;:6;;1130:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1194:1;1187:8;;;1024:179;;;;:::o;15234:211::-;15287:19;15309:10;:8;:10::i;:::-;15287:32;;15330:13;15346:22;15356:11;15346:5;:9;;:22;;;;:::i;:::-;15330:38;;15404:33;15431:5;15404:7;:22;15420:4;15404:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15379:7;:22;15395:4;15379:22;;;;;;;;;;;;;;;:58;;;;15234:211;;;:::o;15453:147::-;15531:17;15543:4;15531:7;;:11;;:17;;;;:::i;:::-;15521:7;:27;;;;15572:20;15587:4;15572:10;;:14;;:20;;;;:::i;:::-;15559:10;:33;;;;15453:147;;:::o;16267:467::-;16435:7;16457;16479;16514:12;16529:28;16553:3;16529:19;16541:6;16529:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16514:43;;16568:13;16584:29;16609:3;16584:20;16596:7;16584;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16568:45;;16624:23;16650:28;16672:5;16650:17;16662:4;16650:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16624:54;;16697:15;16714:4;16720:5;16689:37;;;;;;;;;16267:467;;;;;;;:::o;16742:534::-;16936:7;16958;16980;17015:15;17033:24;17045:11;17033:7;:11;;:24;;;;:::i;:::-;17015:42;;17068:12;17083:21;17092:11;17083:4;:8;;:21;;;;:::i;:::-;17068:36;;17115:13;17131:22;17141:11;17131:5;:9;;:22;;;;:::i;:::-;17115:38;;17164:23;17190:28;17212:5;17190:17;17202:4;17190:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17164:54;;17237:7;17246:15;17263:4;17229:39;;;;;;;;;;16742:534;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:262::-;1940:6;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;1947:196;;;;:::o;2149:284::-;2219:6;2268:2;2256:9;2247:7;2243:23;2239:32;2236:2;;;2284:1;2281;2274:12;2236:2;2327:1;2352:64;2408:7;2399:6;2388:9;2384:22;2352:64;:::i;:::-;2342:74;;2298:128;2226:207;;;;:::o;2439:407::-;2507:6;2515;2564:2;2552:9;2543:7;2539:23;2535:32;2532:2;;;2580:1;2577;2570:12;2532:2;2623:1;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;:::i;:::-;2638:63;;2594:117;2750:2;2776:53;2821:7;2812:6;2801:9;2797:22;2776:53;:::i;:::-;2766:63;;2721:118;2522:324;;;;;:::o;2852:552::-;2929:6;2937;2945;2994:2;2982:9;2973:7;2969:23;2965:32;2962:2;;;3010:1;3007;3000:12;2962:2;3053:1;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3024:117;3180:2;3206:53;3251:7;3242:6;3231:9;3227:22;3206:53;:::i;:::-;3196:63;;3151:118;3308:2;3334:53;3379:7;3370:6;3359:9;3355:22;3334:53;:::i;:::-;3324:63;;3279:118;2952:452;;;;;:::o;3410:407::-;3478:6;3486;3535:2;3523:9;3514:7;3510:23;3506:32;3503:2;;;3551:1;3548;3541:12;3503:2;3594:1;3619:53;3664:7;3655:6;3644:9;3640:22;3619:53;:::i;:::-;3609:63;;3565:117;3721:2;3747:53;3792:7;3783:6;3772:9;3768:22;3747:53;:::i;:::-;3737:63;;3692:118;3493:324;;;;;:::o;3823:405::-;3907:6;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;3972:1;3969;3962:12;3924:2;4043:1;4032:9;4028:17;4015:31;4073:18;4065:6;4062:30;4059:2;;;4105:1;4102;4095:12;4059:2;4133:78;4203:7;4194:6;4183:9;4179:22;4133:78;:::i;:::-;4123:88;;3986:235;3914:314;;;;:::o;4234:256::-;4290:6;4339:2;4327:9;4318:7;4314:23;4310:32;4307:2;;;4355:1;4352;4345:12;4307:2;4398:1;4423:50;4465:7;4456:6;4445:9;4441:22;4423:50;:::i;:::-;4413:60;;4369:114;4297:193;;;;:::o;4496:278::-;4563:6;4612:2;4600:9;4591:7;4587:23;4583:32;4580:2;;;4628:1;4625;4618:12;4580:2;4671:1;4696:61;4749:7;4740:6;4729:9;4725:22;4696:61;:::i;:::-;4686:71;;4642:125;4570:204;;;;:::o;4780:262::-;4839:6;4888:2;4876:9;4867:7;4863:23;4859:32;4856:2;;;4904:1;4901;4894:12;4856:2;4947:1;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4918:117;4846:196;;;;:::o;5048:596::-;5136:6;5144;5152;5201:2;5189:9;5180:7;5176:23;5172:32;5169:2;;;5217:1;5214;5207:12;5169:2;5260:1;5285:64;5341:7;5332:6;5321:9;5317:22;5285:64;:::i;:::-;5275:74;;5231:128;5398:2;5424:64;5480:7;5471:6;5460:9;5456:22;5424:64;:::i;:::-;5414:74;;5369:129;5537:2;5563:64;5619:7;5610:6;5599:9;5595:22;5563:64;:::i;:::-;5553:74;;5508:129;5159:485;;;;;:::o;5650:179::-;5719:10;5740:46;5782:3;5774:6;5740:46;:::i;:::-;5818:4;5813:3;5809:14;5795:28;;5730:99;;;;:::o;5835:108::-;5912:24;5930:5;5912:24;:::i;:::-;5907:3;5900:37;5890:53;;:::o;5949:118::-;6036:24;6054:5;6036:24;:::i;:::-;6031:3;6024:37;6014:53;;:::o;6103:732::-;6222:3;6251:54;6299:5;6251:54;:::i;:::-;6321:86;6400:6;6395:3;6321:86;:::i;:::-;6314:93;;6431:56;6481:5;6431:56;:::i;:::-;6510:7;6541:1;6526:284;6551:6;6548:1;6545:13;6526:284;;;6627:6;6621:13;6654:63;6713:3;6698:13;6654:63;:::i;:::-;6647:70;;6740:60;6793:6;6740:60;:::i;:::-;6730:70;;6586:224;6573:1;6570;6566:9;6561:14;;6526:284;;;6530:14;6826:3;6819:10;;6227:608;;;;;;;:::o;6841:109::-;6922:21;6937:5;6922:21;:::i;:::-;6917:3;6910:34;6900:50;;:::o;6956:147::-;7051:45;7090:5;7051:45;:::i;:::-;7046:3;7039:58;7029:74;;:::o;7109:364::-;7197:3;7225:39;7258:5;7225:39;:::i;:::-;7280:71;7344:6;7339:3;7280:71;:::i;:::-;7273:78;;7360:52;7405:6;7400:3;7393:4;7386:5;7382:16;7360:52;:::i;:::-;7437:29;7459:6;7437:29;:::i;:::-;7432:3;7428:39;7421:46;;7201:272;;;;;:::o;7479:366::-;7621:3;7642:67;7706:2;7701:3;7642:67;:::i;:::-;7635:74;;7718:93;7807:3;7718:93;:::i;:::-;7836:2;7831:3;7827:12;7820:19;;7625:220;;;:::o;7851:366::-;7993:3;8014:67;8078:2;8073:3;8014:67;:::i;:::-;8007:74;;8090:93;8179:3;8090:93;:::i;:::-;8208:2;8203:3;8199:12;8192:19;;7997:220;;;:::o;8223:366::-;8365:3;8386:67;8450:2;8445:3;8386:67;:::i;:::-;8379:74;;8462:93;8551:3;8462:93;:::i;:::-;8580:2;8575:3;8571:12;8564:19;;8369:220;;;:::o;8595:366::-;8737:3;8758:67;8822:2;8817:3;8758:67;:::i;:::-;8751:74;;8834:93;8923:3;8834:93;:::i;:::-;8952:2;8947:3;8943:12;8936:19;;8741:220;;;:::o;8967:366::-;9109:3;9130:67;9194:2;9189:3;9130:67;:::i;:::-;9123:74;;9206:93;9295:3;9206:93;:::i;:::-;9324:2;9319:3;9315:12;9308:19;;9113:220;;;:::o;9339:366::-;9481:3;9502:67;9566:2;9561:3;9502:67;:::i;:::-;9495:74;;9578:93;9667:3;9578:93;:::i;:::-;9696:2;9691:3;9687:12;9680:19;;9485:220;;;:::o;9711:366::-;9853:3;9874:67;9938:2;9933:3;9874:67;:::i;:::-;9867:74;;9950:93;10039:3;9950:93;:::i;:::-;10068:2;10063:3;10059:12;10052:19;;9857:220;;;:::o;10083:366::-;10225:3;10246:67;10310:2;10305:3;10246:67;:::i;:::-;10239:74;;10322:93;10411:3;10322:93;:::i;:::-;10440:2;10435:3;10431:12;10424:19;;10229:220;;;:::o;10455:366::-;10597:3;10618:67;10682:2;10677:3;10618:67;:::i;:::-;10611:74;;10694:93;10783:3;10694:93;:::i;:::-;10812:2;10807:3;10803:12;10796:19;;10601:220;;;:::o;10827:366::-;10969:3;10990:67;11054:2;11049:3;10990:67;:::i;:::-;10983:74;;11066:93;11155:3;11066:93;:::i;:::-;11184:2;11179:3;11175:12;11168:19;;10973:220;;;:::o;11199:366::-;11341:3;11362:67;11426:2;11421:3;11362:67;:::i;:::-;11355:74;;11438:93;11527:3;11438:93;:::i;:::-;11556:2;11551:3;11547:12;11540:19;;11345:220;;;:::o;11571:366::-;11713:3;11734:67;11798:2;11793:3;11734:67;:::i;:::-;11727:74;;11810:93;11899:3;11810:93;:::i;:::-;11928:2;11923:3;11919:12;11912:19;;11717:220;;;:::o;11943:366::-;12085:3;12106:67;12170:2;12165:3;12106:67;:::i;:::-;12099:74;;12182:93;12271:3;12182:93;:::i;:::-;12300:2;12295:3;12291:12;12284:19;;12089:220;;;:::o;12315:118::-;12402:24;12420:5;12402:24;:::i;:::-;12397:3;12390:37;12380:53;;:::o;12439:112::-;12522:22;12538:5;12522:22;:::i;:::-;12517:3;12510:35;12500:51;;:::o;12557:222::-;12650:4;12688:2;12677:9;12673:18;12665:26;;12701:71;12769:1;12758:9;12754:17;12745:6;12701:71;:::i;:::-;12655:124;;;;:::o;12785:332::-;12906:4;12944:2;12933:9;12929:18;12921:26;;12957:71;13025:1;13014:9;13010:17;13001:6;12957:71;:::i;:::-;13038:72;13106:2;13095:9;13091:18;13082:6;13038:72;:::i;:::-;12911:206;;;;;:::o;13123:332::-;13244:4;13282:2;13271:9;13267:18;13259:26;;13295:71;13363:1;13352:9;13348:17;13339:6;13295:71;:::i;:::-;13376:72;13444:2;13433:9;13429:18;13420:6;13376:72;:::i;:::-;13249:206;;;;;:::o;13461:807::-;13710:4;13748:3;13737:9;13733:19;13725:27;;13762:71;13830:1;13819:9;13815:17;13806:6;13762:71;:::i;:::-;13843:72;13911:2;13900:9;13896:18;13887:6;13843:72;:::i;:::-;13925:80;14001:2;13990:9;13986:18;13977:6;13925:80;:::i;:::-;14015;14091:2;14080:9;14076:18;14067:6;14015:80;:::i;:::-;14105:73;14173:3;14162:9;14158:19;14149:6;14105:73;:::i;:::-;14188;14256:3;14245:9;14241:19;14232:6;14188:73;:::i;:::-;13715:553;;;;;;;;;:::o;14274:210::-;14361:4;14399:2;14388:9;14384:18;14376:26;;14412:65;14474:1;14463:9;14459:17;14450:6;14412:65;:::i;:::-;14366:118;;;;:::o;14490:313::-;14603:4;14641:2;14630:9;14626:18;14618:26;;14690:9;14684:4;14680:20;14676:1;14665:9;14661:17;14654:47;14718:78;14791:4;14782:6;14718:78;:::i;:::-;14710:86;;14608:195;;;;:::o;14809:419::-;14975:4;15013:2;15002:9;14998:18;14990:26;;15062:9;15056:4;15052:20;15048:1;15037:9;15033:17;15026:47;15090:131;15216:4;15090:131;:::i;:::-;15082:139;;14980:248;;;:::o;15234:419::-;15400:4;15438:2;15427:9;15423:18;15415:26;;15487:9;15481:4;15477:20;15473:1;15462:9;15458:17;15451:47;15515:131;15641:4;15515:131;:::i;:::-;15507:139;;15405:248;;;:::o;15659:419::-;15825:4;15863:2;15852:9;15848:18;15840:26;;15912:9;15906:4;15902:20;15898:1;15887:9;15883:17;15876:47;15940:131;16066:4;15940:131;:::i;:::-;15932:139;;15830:248;;;:::o;16084:419::-;16250:4;16288:2;16277:9;16273:18;16265:26;;16337:9;16331:4;16327:20;16323:1;16312:9;16308:17;16301:47;16365:131;16491:4;16365:131;:::i;:::-;16357:139;;16255:248;;;:::o;16509:419::-;16675:4;16713:2;16702:9;16698:18;16690:26;;16762:9;16756:4;16752:20;16748:1;16737:9;16733:17;16726:47;16790:131;16916:4;16790:131;:::i;:::-;16782:139;;16680:248;;;:::o;16934:419::-;17100:4;17138:2;17127:9;17123:18;17115:26;;17187:9;17181:4;17177:20;17173:1;17162:9;17158:17;17151:47;17215:131;17341:4;17215:131;:::i;:::-;17207:139;;17105:248;;;:::o;17359:419::-;17525:4;17563:2;17552:9;17548:18;17540:26;;17612:9;17606:4;17602:20;17598:1;17587:9;17583:17;17576:47;17640:131;17766:4;17640:131;:::i;:::-;17632:139;;17530:248;;;:::o;17784:419::-;17950:4;17988:2;17977:9;17973:18;17965:26;;18037:9;18031:4;18027:20;18023:1;18012:9;18008:17;18001:47;18065:131;18191:4;18065:131;:::i;:::-;18057:139;;17955:248;;;:::o;18209:419::-;18375:4;18413:2;18402:9;18398:18;18390:26;;18462:9;18456:4;18452:20;18448:1;18437:9;18433:17;18426:47;18490:131;18616:4;18490:131;:::i;:::-;18482:139;;18380:248;;;:::o;18634:419::-;18800:4;18838:2;18827:9;18823:18;18815:26;;18887:9;18881:4;18877:20;18873:1;18862:9;18858:17;18851:47;18915:131;19041:4;18915:131;:::i;:::-;18907:139;;18805:248;;;:::o;19059:419::-;19225:4;19263:2;19252:9;19248:18;19240:26;;19312:9;19306:4;19302:20;19298:1;19287:9;19283:17;19276:47;19340:131;19466:4;19340:131;:::i;:::-;19332:139;;19230:248;;;:::o;19484:419::-;19650:4;19688:2;19677:9;19673:18;19665:26;;19737:9;19731:4;19727:20;19723:1;19712:9;19708:17;19701:47;19765:131;19891:4;19765:131;:::i;:::-;19757:139;;19655:248;;;:::o;19909:419::-;20075:4;20113:2;20102:9;20098:18;20090:26;;20162:9;20156:4;20152:20;20148:1;20137:9;20133:17;20126:47;20190:131;20316:4;20190:131;:::i;:::-;20182:139;;20080:248;;;:::o;20334:222::-;20427:4;20465:2;20454:9;20450:18;20442:26;;20478:71;20546:1;20535:9;20531:17;20522:6;20478:71;:::i;:::-;20432:124;;;;:::o;20562:831::-;20825:4;20863:3;20852:9;20848:19;20840:27;;20877:71;20945:1;20934:9;20930:17;20921:6;20877:71;:::i;:::-;20958:80;21034:2;21023:9;21019:18;21010:6;20958:80;:::i;:::-;21085:9;21079:4;21075:20;21070:2;21059:9;21055:18;21048:48;21113:108;21216:4;21207:6;21113:108;:::i;:::-;21105:116;;21231:72;21299:2;21288:9;21284:18;21275:6;21231:72;:::i;:::-;21313:73;21381:3;21370:9;21366:19;21357:6;21313:73;:::i;:::-;20830:563;;;;;;;;:::o;21399:214::-;21488:4;21526:2;21515:9;21511:18;21503:26;;21539:67;21603:1;21592:9;21588:17;21579:6;21539:67;:::i;:::-;21493:120;;;;:::o;21619:129::-;21653:6;21680:20;;:::i;:::-;21670:30;;21709:33;21737:4;21729:6;21709:33;:::i;:::-;21660:88;;;:::o;21754:75::-;21787:6;21820:2;21814:9;21804:19;;21794:35;:::o;21835:311::-;21912:4;22002:18;21994:6;21991:30;21988:2;;;22024:18;;:::i;:::-;21988:2;22074:4;22066:6;22062:17;22054:25;;22134:4;22128;22124:15;22116:23;;21917:229;;;:::o;22152:132::-;22219:4;22242:3;22234:11;;22272:4;22267:3;22263:14;22255:22;;22224:60;;;:::o;22290:114::-;22357:6;22391:5;22385:12;22375:22;;22364:40;;;:::o;22410:99::-;22462:6;22496:5;22490:12;22480:22;;22469:40;;;:::o;22515:113::-;22585:4;22617;22612:3;22608:14;22600:22;;22590:38;;;:::o;22634:184::-;22733:11;22767:6;22762:3;22755:19;22807:4;22802:3;22798:14;22783:29;;22745:73;;;;:::o;22824:169::-;22908:11;22942:6;22937:3;22930:19;22982:4;22977:3;22973:14;22958:29;;22920:73;;;;:::o;22999:305::-;23039:3;23058:20;23076:1;23058:20;:::i;:::-;23053:25;;23092:20;23110:1;23092:20;:::i;:::-;23087:25;;23246:1;23178:66;23174:74;23171:1;23168:81;23165:2;;;23252:18;;:::i;:::-;23165:2;23296:1;23293;23289:9;23282:16;;23043:261;;;;:::o;23310:185::-;23350:1;23367:20;23385:1;23367:20;:::i;:::-;23362:25;;23401:20;23419:1;23401:20;:::i;:::-;23396:25;;23440:1;23430:2;;23445:18;;:::i;:::-;23430:2;23487:1;23484;23480:9;23475:14;;23352:143;;;;:::o;23501:348::-;23541:7;23564:20;23582:1;23564:20;:::i;:::-;23559:25;;23598:20;23616:1;23598:20;:::i;:::-;23593:25;;23786:1;23718:66;23714:74;23711:1;23708:81;23703:1;23696:9;23689:17;23685:105;23682:2;;;23793:18;;:::i;:::-;23682:2;23841:1;23838;23834:9;23823:20;;23549:300;;;;:::o;23855:191::-;23895:4;23915:20;23933:1;23915:20;:::i;:::-;23910:25;;23949:20;23967:1;23949:20;:::i;:::-;23944:25;;23988:1;23985;23982:8;23979:2;;;23993:18;;:::i;:::-;23979:2;24038:1;24035;24031:9;24023:17;;23900:146;;;;:::o;24052:96::-;24089:7;24118:24;24136:5;24118:24;:::i;:::-;24107:35;;24097:51;;;:::o;24154:90::-;24188:7;24231:5;24224:13;24217:21;24206:32;;24196:48;;;:::o;24250:126::-;24287:7;24327:42;24320:5;24316:54;24305:65;;24295:81;;;:::o;24382:77::-;24419:7;24448:5;24437:16;;24427:32;;;:::o;24465:86::-;24500:7;24540:4;24533:5;24529:16;24518:27;;24508:43;;;:::o;24557:121::-;24615:9;24648:24;24666:5;24648:24;:::i;:::-;24635:37;;24625:53;;;:::o;24684:307::-;24752:1;24762:113;24776:6;24773:1;24770:13;24762:113;;;24861:1;24856:3;24852:11;24846:18;24842:1;24837:3;24833:11;24826:39;24798:2;24795:1;24791:10;24786:15;;24762:113;;;24893:6;24890:1;24887:13;24884:2;;;24973:1;24964:6;24959:3;24955:16;24948:27;24884:2;24733:258;;;;:::o;24997:281::-;25080:27;25102:4;25080:27;:::i;:::-;25072:6;25068:40;25210:6;25198:10;25195:22;25174:18;25162:10;25159:34;25156:62;25153:2;;;25221:18;;:::i;:::-;25153:2;25261:10;25257:2;25250:22;25040:238;;;:::o;25284:233::-;25323:3;25346:24;25364:5;25346:24;:::i;:::-;25337:33;;25392:66;25385:5;25382:77;25379:2;;;25462:18;;:::i;:::-;25379:2;25509:1;25502:5;25498:13;25491:20;;25327:190;;;:::o;25523:180::-;25571:77;25568:1;25561:88;25668:4;25665:1;25658:15;25692:4;25689:1;25682:15;25709:180;25757:77;25754:1;25747:88;25854:4;25851:1;25844:15;25878:4;25875:1;25868:15;25895:180;25943:77;25940:1;25933:88;26040:4;26037:1;26030:15;26064:4;26061:1;26054:15;26081:102;26122:6;26173:2;26169:7;26164:2;26157:5;26153:14;26149:28;26139:38;;26129:54;;;:::o;26189:222::-;26329:34;26325:1;26317:6;26313:14;26306:58;26398:5;26393:2;26385:6;26381:15;26374:30;26295:116;:::o;26417:229::-;26557:34;26553:1;26545:6;26541:14;26534:58;26626:12;26621:2;26613:6;26609:15;26602:37;26523:123;:::o;26652:221::-;26792:34;26788:1;26780:6;26776:14;26769:58;26861:4;26856:2;26848:6;26844:15;26837:29;26758:115;:::o;26879:177::-;27019:29;27015:1;27007:6;27003:14;26996:53;26985:71;:::o;27062:177::-;27202:29;27198:1;27190:6;27186:14;27179:53;27168:71;:::o;27245:179::-;27385:31;27381:1;27373:6;27369:14;27362:55;27351:73;:::o;27430:220::-;27570:34;27566:1;27558:6;27554:14;27547:58;27639:3;27634:2;27626:6;27622:15;27615:28;27536:114;:::o;27656:182::-;27796:34;27792:1;27784:6;27780:14;27773:58;27762:76;:::o;27844:228::-;27984:34;27980:1;27972:6;27968:14;27961:58;28053:11;28048:2;28040:6;28036:15;28029:36;27950:122;:::o;28078:224::-;28218:34;28214:1;28206:6;28202:14;28195:58;28287:7;28282:2;28274:6;28270:15;28263:32;28184:118;:::o;28308:223::-;28448:34;28444:1;28436:6;28432:14;28425:58;28517:6;28512:2;28504:6;28500:15;28493:31;28414:117;:::o;28537:173::-;28677:25;28673:1;28665:6;28661:14;28654:49;28643:67;:::o;28716:167::-;28856:19;28852:1;28844:6;28840:14;28833:43;28822:61;:::o;28889:122::-;28962:24;28980:5;28962:24;:::i;:::-;28955:5;28952:35;28942:2;;29001:1;28998;28991:12;28942:2;28932:79;:::o;29017:116::-;29087:21;29102:5;29087:21;:::i;:::-;29080:5;29077:32;29067:2;;29123:1;29120;29113:12;29067:2;29057:76;:::o;29139:122::-;29212:24;29230:5;29212:24;:::i;:::-;29205:5;29202:35;29192:2;;29251:1;29248;29241:12;29192:2;29182:79;:::o

Swarm Source

ipfs://1fb32bf6d7275bfcb26dc671af371e40187e5530830c84c3e393d653f1378bc4
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.