ETH Price: $2,651.24 (+1.71%)

Token

RaRoco (RaRoco)
 

Overview

Max Total Supply

10,000,000 RaRoco

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0.40602867 RaRoco

Value
$0.00
0xdd1511d1743c48bcce1e9f7a8b752233e662e041
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:
RaRoco

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

RaRoco

vxcnbbnmcxbnvhjkdshjfds

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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;
    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(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract RaRoco is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet = payable(msg.sender);

    uint256 private _initialTax=25;
    uint256 private _finalTax=25;
    uint256 private _reduceTaxCountdown=1000;
    uint256 private _preventSwapBefore=960;   
    uint256 private _taxBots = 65;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 10_000_000 * 10**_decimals;
    string private constant _name = "RaRoco";
    string private constant _symbol = "RaRoco";

    uint256 public _maxTxAmount = 200_000 * 10**_decimals;
    uint256 public _maxWalletSize = 200_000 * 10**_decimals;
    uint256 public _taxSwap=25_000 * 10**_decimals;
    

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    address _marketingWallet;
    address _developmentWallet;

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

    constructor () {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _developmentWallet = 0xcAf3ceD237DBDB9D3605B6aEfA6f35C9b9a570C7;
        _marketingWallet = 0xcAf3ceD237DBDB9D3605B6aEfA6f35C9b9a570C7;
        uint256 _marketingTokens = _tTotal.mul(8).div(100);
        _balances[_marketingWallet] = _marketingTokens;
        _balances[_msgSender()] = _tTotal - _marketingTokens;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

    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 _balances[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 _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");
        uint256 taxAmount=0;
        if (from != _taxWallet && to != _taxWallet && 
            from != _marketingWallet && from != _developmentWallet) {
            require(tradingOpen);

            if(!bots[from])
                taxAmount = amount.mul( (_reduceTaxCountdown==0)?_finalTax:_initialTax ).div(100);
            else
                taxAmount = amount.mul(_taxBots).div(100);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                if(_reduceTaxCountdown>0){_reduceTaxCountdown--;}
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwap && _reduceTaxCountdown<=_preventSwapBefore) {
                swapTokensForEth(_taxSwap);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function addBotsNew(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function excludeMultipleFromFees(address[] memory addressesToExclude, bool toExclude) public onlyOwner {
        for(uint256 i = 0;i<addressesToExclude.length;i++)
            bots[addressesToExclude[i]] = toExclude;
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;
    }

    function manualswap() external {
        swapTokensForEth(balanceOf(address(this)));
    }

    function manualsend() external {
        sendETHToFee(address(this).balance);
    }

    function reduceTax(uint256 newInitialTax, uint256 newFinalTax) external onlyOwner {
        require(newInitialTax < _initialTax, "Only tax reduction permitted.");
        require(newFinalTax < _finalTax, "Only tax reduction permitted.");
        _initialTax = newInitialTax;
        _finalTax = newFinalTax;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBotsNew","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":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addressesToExclude","type":"address[]"},{"internalType":"bool","name":"toExclude","type":"bool"}],"name":"excludeMultipleFromFees","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"newInitialTax","type":"uint256"},{"internalType":"uint256","name":"newFinalTax","type":"uint256"}],"name":"reduceTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"}]

608060405233600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960065560196007556103e86008556103c06009556041600a556008600a62000070919062000abe565b62030d4062000080919062000b0f565b600b556008600a62000093919062000abe565b62030d40620000a3919062000b0f565b600c556008600a620000b6919062000abe565b6161a8620000c5919062000b0f565b600d556000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055503480156200010b57600080fd5b5060006200011e620007b660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a5919062000bc4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000bc4565b6040518363ffffffff1660e01b81526004016200037492919062000c07565b6020604051808303816000875af115801562000394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ba919062000bc4565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073caf3ced237dbdb9d3605b6aefa6f35c9b9a570c7601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073caf3ced237dbdb9d3605b6aefa6f35c9b9a570c7601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000620004f96064620004e5600880600a620004c1919062000abe565b62989680620004d1919062000b0f565b620007be60201b620011711790919060201c565b6200084160201b620011eb1790919060201c565b90508060016000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806008600a62000572919062000abe565b6298968062000582919062000b0f565b6200058e919062000c34565b60016000620005a2620007b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620005f66200089360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000729620007b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a62000788919062000abe565b6298968062000798919062000b0f565b604051620007a7919062000c80565b60405180910390a35062000e5a565b600033905090565b6000808303620007d257600090506200083b565b60008284620007e2919062000b0f565b9050828482620007f3919062000ccc565b1462000836576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082d9062000d8b565b60405180910390fd5b809150505b92915050565b60006200088b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008bc60201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000906576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008fd919062000e36565b60405180910390fd5b506000838562000917919062000ccc565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009b2578086048111156200098a576200098962000924565b5b60018516156200099a5780820291505b8081029050620009aa8562000953565b94506200096a565b94509492505050565b600082620009cd576001905062000aa0565b81620009dd576000905062000aa0565b8160018114620009f6576002811462000a015762000a37565b600191505062000aa0565b60ff84111562000a165762000a1562000924565b5b8360020a91508482111562000a305762000a2f62000924565b5b5062000aa0565b5060208310610133831016604e8410600b841016171562000a715782820a90508381111562000a6b5762000a6a62000924565b5b62000aa0565b62000a80848484600162000960565b9250905081840481111562000a9a5762000a9962000924565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000acb8262000aa7565b915062000ad88362000ab1565b925062000b077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009bb565b905092915050565b600062000b1c8262000aa7565b915062000b298362000aa7565b925082820262000b398162000aa7565b9150828204841483151762000b535762000b5262000924565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b8c8262000b5f565b9050919050565b62000b9e8162000b7f565b811462000baa57600080fd5b50565b60008151905062000bbe8162000b93565b92915050565b60006020828403121562000bdd5762000bdc62000b5a565b5b600062000bed8482850162000bad565b91505092915050565b62000c018162000b7f565b82525050565b600060408201905062000c1e600083018562000bf6565b62000c2d602083018462000bf6565b9392505050565b600062000c418262000aa7565b915062000c4e8362000aa7565b925082820390508181111562000c695762000c6862000924565b5b92915050565b62000c7a8162000aa7565b82525050565b600060208201905062000c97600083018462000c6f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cd98262000aa7565b915062000ce68362000aa7565b92508262000cf95762000cf862000c9d565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000d7360218362000d04565b915062000d808262000d15565b604082019050919050565b6000602082019050818103600083015262000da68162000d64565b9050919050565b600081519050919050565b60005b8381101562000dd857808201518184015260208101905062000dbb565b60008484015250505050565b6000601f19601f8301169050919050565b600062000e028262000dad565b62000e0e818562000d04565b935062000e2081856020860162000db8565b62000e2b8162000de4565b840191505092915050565b6000602082019050818103600083015262000e52818462000df5565b905092915050565b6131d38062000e6a6000396000f3fe6080604052600436106101445760003560e01c8063751039fc116100b6578063b9a410ff1161006f578063b9a410ff14610433578063bea1cb271461045c578063c3c8cd8014610485578063c9567bf91461049c578063d34628cc146104b3578063dd62ed3e146104dc5761014b565b8063751039fc146103335780637d1db4a51461034a5780638da5cb5b146103755780638f9a55c0146103a057806395d89b41146103cb578063a9059cbb146103f65761014b565b8063313ce56711610108578063313ce5671461024957806331c2d8471461027457806334376f3b1461029d5780636fc3eaec146102c857806370a08231146102df578063715018a61461031c5761014b565b806306fdde0314610150578063095ea7b31461017b5780631354f2d4146101b857806318160ddd146101e157806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610519565b60405161017291906121a7565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612271565b610556565b6040516101af91906122cc565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da919061242f565b610574565b005b3480156101ed57600080fd5b506101f661069e565b6040516102039190612487565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e91906124a2565b6106c1565b60405161024091906122cc565b60405180910390f35b34801561025557600080fd5b5061025e61079a565b60405161026b9190612511565b60405180910390f35b34801561028057600080fd5b5061029b6004803603810190610296919061242f565b6107a3565b005b3480156102a957600080fd5b506102b26108cd565b6040516102bf9190612487565b60405180910390f35b3480156102d457600080fd5b506102dd6108d3565b005b3480156102eb57600080fd5b506103066004803603810190610301919061252c565b6108de565b6040516103139190612487565b60405180910390f35b34801561032857600080fd5b50610331610927565b005b34801561033f57600080fd5b50610348610a7a565b005b34801561035657600080fd5b5061035f610ba7565b60405161036c9190612487565b60405180910390f35b34801561038157600080fd5b5061038a610bad565b6040516103979190612568565b60405180910390f35b3480156103ac57600080fd5b506103b5610bd6565b6040516103c29190612487565b60405180910390f35b3480156103d757600080fd5b506103e0610bdc565b6040516103ed91906121a7565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190612271565b610c19565b60405161042a91906122cc565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612583565b610c37565b005b34801561046857600080fd5b50610483600480360381019061047e91906125ef565b610d66565b005b34801561049157600080fd5b5061049a610e90565b005b3480156104a857600080fd5b506104b1610ea3565b005b3480156104bf57600080fd5b506104da60048036038101906104d5919061242f565b610fc0565b005b3480156104e857600080fd5b5061050360048036038101906104fe919061264b565b6110ea565b6040516105109190612487565b60405180910390f35b60606040518060400160405280600681526020017f5261526f636f0000000000000000000000000000000000000000000000000000815250905090565b600061056a610563611235565b848461123d565b6001905092915050565b61057c611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610609576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610600906126d7565b60405180910390fd5b60005b815181101561069a5760016004600084848151811061062e5761062d6126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061069290612755565b91505061060c565b5050565b60006008600a6106ae91906128d0565b629896806106bc919061291b565b905090565b60006106ce848484611406565b61078f846106da611235565b61078a8560405180606001604052806028815260200161317660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610740611235565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cc39092919063ffffffff16565b61123d565b600190509392505050565b60006008905090565b6107ab611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f906126d7565b60405180910390fd5b60005b81518110156108c95760006004600084848151811061085d5761085c6126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108c190612755565b91505061083b565b5050565b600d5481565b6108dc47611d27565b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61092f611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b3906126d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a82611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906126d7565b60405180910390fd5b6008600a610b1d91906128d0565b62989680610b2b919061291b565b600b819055506008600a610b3f91906128d0565b62989680610b4d919061291b565b600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610b8291906128d0565b62989680610b90919061291b565b604051610b9d9190612487565b60405180910390a1565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600681526020017f5261526f636f0000000000000000000000000000000000000000000000000000815250905090565b6000610c2d610c26611235565b8484611406565b6001905092915050565b610c3f611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906126d7565b60405180910390fd5b6006548210610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d07906129a9565b60405180910390fd5b6007548110610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b906129a9565b60405180910390fd5b81600681905550806007819055505050565b610d6e611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df2906126d7565b60405180910390fd5b60005b8251811015610e8b578160046000858481518110610e1f57610e1e6126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e8390612755565b915050610dfe565b505050565b610ea1610e9c306108de565b611d93565b565b610eab611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f906126d7565b60405180910390fd5b600f60149054906101000a900460ff1615610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90612a15565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550565b610fc8611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c906126d7565b60405180910390fd5b60005b81518110156110e65760016004600084848151811061107a576110796126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110de90612755565b915050611058565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080830361118357600090506111e5565b60008284611191919061291b565b90508284826111a09190612a64565b146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612b07565b60405180910390fd5b809150505b92915050565b600061122d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061200c565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612b99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612c2b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113f99190612487565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90612cbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90612d4f565b60405180910390fd5b60008111611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612de1565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115d55750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561162f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156116895750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a0657600f60149054906101000a900460ff166116a757600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661173a57611733606461172560006008541461171257600654611716565b6007545b8561117190919063ffffffff16565b6111eb90919063ffffffff16565b9050611765565b6117626064611754600a548561117190919063ffffffff16565b6111eb90919063ffffffff16565b90505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118105750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118665750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561192d57600b548211156118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612e4d565b60405180910390fd5b600c54826118bd856108de565b6118c79190612e6d565b1115611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90612eed565b60405180910390fd5b6000600854111561192c576008600081548092919061192690612f0d565b91905055505b5b6000611938306108de565b9050600f60159054906101000a900460ff161580156119a55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119bd5750600f60169054906101000a900460ff165b80156119ca5750600d5481115b80156119da575060095460085411155b15611a04576119ea600d54611d93565b60004790506000811115611a0257611a0147611d27565b5b505b505b611a5882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aff611ab1828461206f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ba4848661206f90919063ffffffff16565b604051611bb19190612487565b60405180910390a36000811115611cbd57611c1481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb49190612487565b60405180910390a35b50505050565b6000838311158290611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0291906121a7565b60405180910390fd5b5060008385611d1a9190612f36565b9050809150509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d8f573d6000803e3d6000fd5b5050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dcb57611dca6122ec565b5b604051908082528060200260200182016040528015611df95781602001602082028036833780820191505090505b5090503081600081518110611e1157611e106126f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edc9190612f7f565b81600181518110611ef057611eef6126f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f5730600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461123d565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fbb9594939291906130af565b600060405180830381600087803b158015611fd557600080fd5b505af1158015611fe9573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b60008083118290612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a91906121a7565b60405180910390fd5b50600083856120629190612a64565b9050809150509392505050565b60006120b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cc3565b905092915050565b60008082846120c89190612e6d565b90508381101561210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490613155565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612151578082015181840152602081019050612136565b60008484015250505050565b6000601f19601f8301169050919050565b600061217982612117565b6121838185612122565b9350612193818560208601612133565b61219c8161215d565b840191505092915050565b600060208201905081810360008301526121c1818461216e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612208826121dd565b9050919050565b612218816121fd565b811461222357600080fd5b50565b6000813590506122358161220f565b92915050565b6000819050919050565b61224e8161223b565b811461225957600080fd5b50565b60008135905061226b81612245565b92915050565b60008060408385031215612288576122876121d3565b5b600061229685828601612226565b92505060206122a78582860161225c565b9150509250929050565b60008115159050919050565b6122c6816122b1565b82525050565b60006020820190506122e160008301846122bd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123248261215d565b810181811067ffffffffffffffff82111715612343576123426122ec565b5b80604052505050565b60006123566121c9565b9050612362828261231b565b919050565b600067ffffffffffffffff821115612382576123816122ec565b5b602082029050602081019050919050565b600080fd5b60006123ab6123a684612367565b61234c565b905080838252602082019050602084028301858111156123ce576123cd612393565b5b835b818110156123f757806123e38882612226565b8452602084019350506020810190506123d0565b5050509392505050565b600082601f830112612416576124156122e7565b5b8135612426848260208601612398565b91505092915050565b600060208284031215612445576124446121d3565b5b600082013567ffffffffffffffff811115612463576124626121d8565b5b61246f84828501612401565b91505092915050565b6124818161223b565b82525050565b600060208201905061249c6000830184612478565b92915050565b6000806000606084860312156124bb576124ba6121d3565b5b60006124c986828701612226565b93505060206124da86828701612226565b92505060406124eb8682870161225c565b9150509250925092565b600060ff82169050919050565b61250b816124f5565b82525050565b60006020820190506125266000830184612502565b92915050565b600060208284031215612542576125416121d3565b5b600061255084828501612226565b91505092915050565b612562816121fd565b82525050565b600060208201905061257d6000830184612559565b92915050565b6000806040838503121561259a576125996121d3565b5b60006125a88582860161225c565b92505060206125b98582860161225c565b9150509250929050565b6125cc816122b1565b81146125d757600080fd5b50565b6000813590506125e9816125c3565b92915050565b60008060408385031215612606576126056121d3565b5b600083013567ffffffffffffffff811115612624576126236121d8565b5b61263085828601612401565b9250506020612641858286016125da565b9150509250929050565b60008060408385031215612662576126616121d3565b5b600061267085828601612226565b925050602061268185828601612226565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126c1602083612122565b91506126cc8261268b565b602082019050919050565b600060208201905081810360008301526126f0816126b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127608261223b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361279257612791612726565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156127f4578086048111156127d0576127cf612726565b5b60018516156127df5780820291505b80810290506127ed8561279d565b94506127b4565b94509492505050565b60008261280d57600190506128c9565b8161281b57600090506128c9565b8160018114612831576002811461283b5761286a565b60019150506128c9565b60ff84111561284d5761284c612726565b5b8360020a91508482111561286457612863612726565b5b506128c9565b5060208310610133831016604e8410600b841016171561289f5782820a90508381111561289a57612899612726565b5b6128c9565b6128ac84848460016127aa565b925090508184048111156128c3576128c2612726565b5b81810290505b9392505050565b60006128db8261223b565b91506128e6836124f5565b92506129137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127fd565b905092915050565b60006129268261223b565b91506129318361223b565b925082820261293f8161223b565b9150828204841483151761295657612955612726565b5b5092915050565b7f4f6e6c792074617820726564756374696f6e207065726d69747465642e000000600082015250565b6000612993601d83612122565b915061299e8261295d565b602082019050919050565b600060208201905081810360008301526129c281612986565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006129ff601783612122565b9150612a0a826129c9565b602082019050919050565b60006020820190508181036000830152612a2e816129f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a6f8261223b565b9150612a7a8361223b565b925082612a8a57612a89612a35565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612af1602183612122565b9150612afc82612a95565b604082019050919050565b60006020820190508181036000830152612b2081612ae4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b83602483612122565b9150612b8e82612b27565b604082019050919050565b60006020820190508181036000830152612bb281612b76565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c15602283612122565b9150612c2082612bb9565b604082019050919050565b60006020820190508181036000830152612c4481612c08565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ca7602583612122565b9150612cb282612c4b565b604082019050919050565b60006020820190508181036000830152612cd681612c9a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d39602383612122565b9150612d4482612cdd565b604082019050919050565b60006020820190508181036000830152612d6881612d2c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612dcb602983612122565b9150612dd682612d6f565b604082019050919050565b60006020820190508181036000830152612dfa81612dbe565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612e37601983612122565b9150612e4282612e01565b602082019050919050565b60006020820190508181036000830152612e6681612e2a565b9050919050565b6000612e788261223b565b9150612e838361223b565b9250828201905080821115612e9b57612e9a612726565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612ed7601a83612122565b9150612ee282612ea1565b602082019050919050565b60006020820190508181036000830152612f0681612eca565b9050919050565b6000612f188261223b565b915060008203612f2b57612f2a612726565b5b600182039050919050565b6000612f418261223b565b9150612f4c8361223b565b9250828203905081811115612f6457612f63612726565b5b92915050565b600081519050612f798161220f565b92915050565b600060208284031215612f9557612f946121d3565b5b6000612fa384828501612f6a565b91505092915050565b6000819050919050565b6000819050919050565b6000612fdb612fd6612fd184612fac565b612fb6565b61223b565b9050919050565b612feb81612fc0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613026816121fd565b82525050565b6000613038838361301d565b60208301905092915050565b6000602082019050919050565b600061305c82612ff1565b6130668185612ffc565b93506130718361300d565b8060005b838110156130a2578151613089888261302c565b975061309483613044565b925050600181019050613075565b5085935050505092915050565b600060a0820190506130c46000830188612478565b6130d16020830187612fe2565b81810360408301526130e38186613051565b90506130f26060830185612559565b6130ff6080830184612478565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061313f601b83612122565b915061314a82613109565b602082019050919050565b6000602082019050818103600083015261316e81613132565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c3af3c6a81a7fb9ea5b7a7966e25332e233abf09713154adc4845e3334ce0a4364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063751039fc116100b6578063b9a410ff1161006f578063b9a410ff14610433578063bea1cb271461045c578063c3c8cd8014610485578063c9567bf91461049c578063d34628cc146104b3578063dd62ed3e146104dc5761014b565b8063751039fc146103335780637d1db4a51461034a5780638da5cb5b146103755780638f9a55c0146103a057806395d89b41146103cb578063a9059cbb146103f65761014b565b8063313ce56711610108578063313ce5671461024957806331c2d8471461027457806334376f3b1461029d5780636fc3eaec146102c857806370a08231146102df578063715018a61461031c5761014b565b806306fdde0314610150578063095ea7b31461017b5780631354f2d4146101b857806318160ddd146101e157806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610519565b60405161017291906121a7565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612271565b610556565b6040516101af91906122cc565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da919061242f565b610574565b005b3480156101ed57600080fd5b506101f661069e565b6040516102039190612487565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e91906124a2565b6106c1565b60405161024091906122cc565b60405180910390f35b34801561025557600080fd5b5061025e61079a565b60405161026b9190612511565b60405180910390f35b34801561028057600080fd5b5061029b6004803603810190610296919061242f565b6107a3565b005b3480156102a957600080fd5b506102b26108cd565b6040516102bf9190612487565b60405180910390f35b3480156102d457600080fd5b506102dd6108d3565b005b3480156102eb57600080fd5b506103066004803603810190610301919061252c565b6108de565b6040516103139190612487565b60405180910390f35b34801561032857600080fd5b50610331610927565b005b34801561033f57600080fd5b50610348610a7a565b005b34801561035657600080fd5b5061035f610ba7565b60405161036c9190612487565b60405180910390f35b34801561038157600080fd5b5061038a610bad565b6040516103979190612568565b60405180910390f35b3480156103ac57600080fd5b506103b5610bd6565b6040516103c29190612487565b60405180910390f35b3480156103d757600080fd5b506103e0610bdc565b6040516103ed91906121a7565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190612271565b610c19565b60405161042a91906122cc565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612583565b610c37565b005b34801561046857600080fd5b50610483600480360381019061047e91906125ef565b610d66565b005b34801561049157600080fd5b5061049a610e90565b005b3480156104a857600080fd5b506104b1610ea3565b005b3480156104bf57600080fd5b506104da60048036038101906104d5919061242f565b610fc0565b005b3480156104e857600080fd5b5061050360048036038101906104fe919061264b565b6110ea565b6040516105109190612487565b60405180910390f35b60606040518060400160405280600681526020017f5261526f636f0000000000000000000000000000000000000000000000000000815250905090565b600061056a610563611235565b848461123d565b6001905092915050565b61057c611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610609576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610600906126d7565b60405180910390fd5b60005b815181101561069a5760016004600084848151811061062e5761062d6126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061069290612755565b91505061060c565b5050565b60006008600a6106ae91906128d0565b629896806106bc919061291b565b905090565b60006106ce848484611406565b61078f846106da611235565b61078a8560405180606001604052806028815260200161317660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610740611235565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cc39092919063ffffffff16565b61123d565b600190509392505050565b60006008905090565b6107ab611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f906126d7565b60405180910390fd5b60005b81518110156108c95760006004600084848151811061085d5761085c6126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108c190612755565b91505061083b565b5050565b600d5481565b6108dc47611d27565b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61092f611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b3906126d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a82611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906126d7565b60405180910390fd5b6008600a610b1d91906128d0565b62989680610b2b919061291b565b600b819055506008600a610b3f91906128d0565b62989680610b4d919061291b565b600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610b8291906128d0565b62989680610b90919061291b565b604051610b9d9190612487565b60405180910390a1565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600681526020017f5261526f636f0000000000000000000000000000000000000000000000000000815250905090565b6000610c2d610c26611235565b8484611406565b6001905092915050565b610c3f611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906126d7565b60405180910390fd5b6006548210610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d07906129a9565b60405180910390fd5b6007548110610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b906129a9565b60405180910390fd5b81600681905550806007819055505050565b610d6e611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df2906126d7565b60405180910390fd5b60005b8251811015610e8b578160046000858481518110610e1f57610e1e6126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e8390612755565b915050610dfe565b505050565b610ea1610e9c306108de565b611d93565b565b610eab611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f906126d7565b60405180910390fd5b600f60149054906101000a900460ff1615610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90612a15565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550565b610fc8611235565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c906126d7565b60405180910390fd5b60005b81518110156110e65760016004600084848151811061107a576110796126f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110de90612755565b915050611058565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080830361118357600090506111e5565b60008284611191919061291b565b90508284826111a09190612a64565b146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612b07565b60405180910390fd5b809150505b92915050565b600061122d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061200c565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612b99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612c2b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113f99190612487565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90612cbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90612d4f565b60405180910390fd5b60008111611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612de1565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115d55750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561162f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156116895750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a0657600f60149054906101000a900460ff166116a757600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661173a57611733606461172560006008541461171257600654611716565b6007545b8561117190919063ffffffff16565b6111eb90919063ffffffff16565b9050611765565b6117626064611754600a548561117190919063ffffffff16565b6111eb90919063ffffffff16565b90505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118105750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118665750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561192d57600b548211156118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612e4d565b60405180910390fd5b600c54826118bd856108de565b6118c79190612e6d565b1115611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90612eed565b60405180910390fd5b6000600854111561192c576008600081548092919061192690612f0d565b91905055505b5b6000611938306108de565b9050600f60159054906101000a900460ff161580156119a55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119bd5750600f60169054906101000a900460ff165b80156119ca5750600d5481115b80156119da575060095460085411155b15611a04576119ea600d54611d93565b60004790506000811115611a0257611a0147611d27565b5b505b505b611a5882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aff611ab1828461206f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ba4848661206f90919063ffffffff16565b604051611bb19190612487565b60405180910390a36000811115611cbd57611c1481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb49190612487565b60405180910390a35b50505050565b6000838311158290611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0291906121a7565b60405180910390fd5b5060008385611d1a9190612f36565b9050809150509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d8f573d6000803e3d6000fd5b5050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dcb57611dca6122ec565b5b604051908082528060200260200182016040528015611df95781602001602082028036833780820191505090505b5090503081600081518110611e1157611e106126f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edc9190612f7f565b81600181518110611ef057611eef6126f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f5730600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461123d565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fbb9594939291906130af565b600060405180830381600087803b158015611fd557600080fd5b505af1158015611fe9573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b60008083118290612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a91906121a7565b60405180910390fd5b50600083856120629190612a64565b9050809150509392505050565b60006120b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cc3565b905092915050565b60008082846120c89190612e6d565b90508381101561210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490613155565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612151578082015181840152602081019050612136565b60008484015250505050565b6000601f19601f8301169050919050565b600061217982612117565b6121838185612122565b9350612193818560208601612133565b61219c8161215d565b840191505092915050565b600060208201905081810360008301526121c1818461216e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612208826121dd565b9050919050565b612218816121fd565b811461222357600080fd5b50565b6000813590506122358161220f565b92915050565b6000819050919050565b61224e8161223b565b811461225957600080fd5b50565b60008135905061226b81612245565b92915050565b60008060408385031215612288576122876121d3565b5b600061229685828601612226565b92505060206122a78582860161225c565b9150509250929050565b60008115159050919050565b6122c6816122b1565b82525050565b60006020820190506122e160008301846122bd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123248261215d565b810181811067ffffffffffffffff82111715612343576123426122ec565b5b80604052505050565b60006123566121c9565b9050612362828261231b565b919050565b600067ffffffffffffffff821115612382576123816122ec565b5b602082029050602081019050919050565b600080fd5b60006123ab6123a684612367565b61234c565b905080838252602082019050602084028301858111156123ce576123cd612393565b5b835b818110156123f757806123e38882612226565b8452602084019350506020810190506123d0565b5050509392505050565b600082601f830112612416576124156122e7565b5b8135612426848260208601612398565b91505092915050565b600060208284031215612445576124446121d3565b5b600082013567ffffffffffffffff811115612463576124626121d8565b5b61246f84828501612401565b91505092915050565b6124818161223b565b82525050565b600060208201905061249c6000830184612478565b92915050565b6000806000606084860312156124bb576124ba6121d3565b5b60006124c986828701612226565b93505060206124da86828701612226565b92505060406124eb8682870161225c565b9150509250925092565b600060ff82169050919050565b61250b816124f5565b82525050565b60006020820190506125266000830184612502565b92915050565b600060208284031215612542576125416121d3565b5b600061255084828501612226565b91505092915050565b612562816121fd565b82525050565b600060208201905061257d6000830184612559565b92915050565b6000806040838503121561259a576125996121d3565b5b60006125a88582860161225c565b92505060206125b98582860161225c565b9150509250929050565b6125cc816122b1565b81146125d757600080fd5b50565b6000813590506125e9816125c3565b92915050565b60008060408385031215612606576126056121d3565b5b600083013567ffffffffffffffff811115612624576126236121d8565b5b61263085828601612401565b9250506020612641858286016125da565b9150509250929050565b60008060408385031215612662576126616121d3565b5b600061267085828601612226565b925050602061268185828601612226565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126c1602083612122565b91506126cc8261268b565b602082019050919050565b600060208201905081810360008301526126f0816126b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127608261223b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361279257612791612726565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156127f4578086048111156127d0576127cf612726565b5b60018516156127df5780820291505b80810290506127ed8561279d565b94506127b4565b94509492505050565b60008261280d57600190506128c9565b8161281b57600090506128c9565b8160018114612831576002811461283b5761286a565b60019150506128c9565b60ff84111561284d5761284c612726565b5b8360020a91508482111561286457612863612726565b5b506128c9565b5060208310610133831016604e8410600b841016171561289f5782820a90508381111561289a57612899612726565b5b6128c9565b6128ac84848460016127aa565b925090508184048111156128c3576128c2612726565b5b81810290505b9392505050565b60006128db8261223b565b91506128e6836124f5565b92506129137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127fd565b905092915050565b60006129268261223b565b91506129318361223b565b925082820261293f8161223b565b9150828204841483151761295657612955612726565b5b5092915050565b7f4f6e6c792074617820726564756374696f6e207065726d69747465642e000000600082015250565b6000612993601d83612122565b915061299e8261295d565b602082019050919050565b600060208201905081810360008301526129c281612986565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006129ff601783612122565b9150612a0a826129c9565b602082019050919050565b60006020820190508181036000830152612a2e816129f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a6f8261223b565b9150612a7a8361223b565b925082612a8a57612a89612a35565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612af1602183612122565b9150612afc82612a95565b604082019050919050565b60006020820190508181036000830152612b2081612ae4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b83602483612122565b9150612b8e82612b27565b604082019050919050565b60006020820190508181036000830152612bb281612b76565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c15602283612122565b9150612c2082612bb9565b604082019050919050565b60006020820190508181036000830152612c4481612c08565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ca7602583612122565b9150612cb282612c4b565b604082019050919050565b60006020820190508181036000830152612cd681612c9a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d39602383612122565b9150612d4482612cdd565b604082019050919050565b60006020820190508181036000830152612d6881612d2c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612dcb602983612122565b9150612dd682612d6f565b604082019050919050565b60006020820190508181036000830152612dfa81612dbe565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612e37601983612122565b9150612e4282612e01565b602082019050919050565b60006020820190508181036000830152612e6681612e2a565b9050919050565b6000612e788261223b565b9150612e838361223b565b9250828201905080821115612e9b57612e9a612726565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612ed7601a83612122565b9150612ee282612ea1565b602082019050919050565b60006020820190508181036000830152612f0681612eca565b9050919050565b6000612f188261223b565b915060008203612f2b57612f2a612726565b5b600182039050919050565b6000612f418261223b565b9150612f4c8361223b565b9250828203905081811115612f6457612f63612726565b5b92915050565b600081519050612f798161220f565b92915050565b600060208284031215612f9557612f946121d3565b5b6000612fa384828501612f6a565b91505092915050565b6000819050919050565b6000819050919050565b6000612fdb612fd6612fd184612fac565b612fb6565b61223b565b9050919050565b612feb81612fc0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613026816121fd565b82525050565b6000613038838361301d565b60208301905092915050565b6000602082019050919050565b600061305c82612ff1565b6130668185612ffc565b93506130718361300d565b8060005b838110156130a2578151613089888261302c565b975061309483613044565b925050600181019050613075565b5085935050505092915050565b600060a0820190506130c46000830188612478565b6130d16020830187612fe2565b81810360408301526130e38186613051565b90506130f26060830185612559565b6130ff6080830184612478565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061313f601b83612122565b915061314a82613109565b602082019050919050565b6000602082019050818103600083015261316e81613132565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c3af3c6a81a7fb9ea5b7a7966e25332e233abf09713154adc4845e3334ce0a4364736f6c63430008110033

Deployed Bytecode Sourcemap

3520:7971:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5714:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6547:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10223:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5991:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6716:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5900:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10398:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4438:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11077:85;;;;;;;;;;;;;:::i;:::-;;6094:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2601:148;;;;;;;;;;;;;:::i;:::-;;9778:161;;;;;;;;;;;;;:::i;:::-;;4316:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2387:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4376:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5805:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6221:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11170:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10568:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10977:92;;;;;;;;;;;;;:::i;:::-;;10801:168;;;;;;;;;;;;;:::i;:::-;;10047:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6396:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5714:83;5751:13;5784:5;;;;;;;;;;;;;;;;;5777:12;;5714:83;:::o;6547:161::-;6622:4;6639:39;6648:12;:10;:12::i;:::-;6662:7;6671:6;6639:8;:39::i;:::-;6696:4;6689:11;;6547:161;;;;:::o;10223:167::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10300:6:::1;10295:88;10316:5;:12;10312:1;:16;10295:88;;;10367:4;10350;:14;10355:5;10361:1;10355:8;;;;;;;;:::i;:::-;;;;;;;;10350:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10330:3;;;;;:::i;:::-;;;;10295:88;;;;10223:167:::0;:::o;5991:95::-;6044:7;4142:1;4198:2;:13;;;;:::i;:::-;4185:10;:26;;;;:::i;:::-;6064:14;;5991:95;:::o;6716:313::-;6814:4;6831:36;6841:6;6849:9;6860:6;6831:9;:36::i;:::-;6878:121;6887:6;6895:12;:10;:12::i;:::-;6909:89;6947:6;6909:89;;;;;;;;;;;;;;;;;:11;:19;6921:6;6909:19;;;;;;;;;;;;;;;:33;6929:12;:10;:12::i;:::-;6909:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6878:8;:121::i;:::-;7017:4;7010:11;;6716:313;;;;;:::o;5900:83::-;5941:5;4142:1;5959:16;;5900:83;:::o;10398:162::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10471:6:::1;10466:87;10487:6;:13;10483:1;:17;10466:87;;;10538:5;10520:4;:15;10525:6;10532:1;10525:9;;;;;;;;:::i;:::-;;;;;;;;10520:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10502:3;;;;;:::i;:::-;;;;10466:87;;;;10398:162:::0;:::o;4438:46::-;;;;:::o;11077:85::-;11119:35;11132:21;11119:12;:35::i;:::-;11077:85::o;6094:119::-;6160:7;6187:9;:18;6197:7;6187:18;;;;;;;;;;;;;;;;6180:25;;6094:119;;;:::o;2601:148::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2708:1:::1;2671:40;;2692:6;::::0;::::1;;;;;;;;2671:40;;;;;;;;;;;;2739:1;2722:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2601:148::o:0;9778:161::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4142:1:::1;4198:2;:13;;;;:::i;:::-;4185:10;:26;;;;:::i;:::-;9831:12;:22;;;;4142:1;4198:2;:13;;;;:::i;:::-;4185:10;:26;;;;:::i;:::-;9864:14;:24;;;;9904:27;4142:1;4198:2;:13;;;;:::i;:::-;4185:10;:26;;;;:::i;:::-;9904:27;;;;;;:::i;:::-;;;;;;;;9778:161::o:0;4316:53::-;;;;:::o;2387:79::-;2425:7;2452:6;;;;;;;;;;;2445:13;;2387:79;:::o;4376:55::-;;;;:::o;5805:87::-;5844:13;5877:7;;;;;;;;;;;;;;;;;5870:14;;5805:87;:::o;6221:167::-;6299:4;6316:42;6326:12;:10;:12::i;:::-;6340:9;6351:6;6316:9;:42::i;:::-;6376:4;6369:11;;6221:167;;;;:::o;11170:318::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11287:11:::1;;11271:13;:27;11263:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11365:9;;11351:11;:23;11343:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11433:13;11419:11;:27;;;;11469:11;11457:9;:23;;;;11170:318:::0;;:::o;10568:225::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10686:9:::1;10682:103;10702:18;:25;10700:1;:27;10682:103;;;10776:9;10746:4;:27;10751:18;10770:1;10751:21;;;;;;;;:::i;:::-;;;;;;;;10746:27;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;10728:3;;;;;:::i;:::-;;;;10682:103;;;;10568:225:::0;;:::o;10977:92::-;11019:42;11036:24;11054:4;11036:9;:24::i;:::-;11019:16;:42::i;:::-;10977:92::o;10801:168::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10865:11:::1;;;;;;;;;;;10864:12;10856:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10928:4;10914:11;;:18;;;;;;;;;;;;;;;;;;10957:4;10943:11;;:18;;;;;;;;;;;;;;;;;;10801:168::o:0;10047:164::-;2524:12;:10;:12::i;:::-;2514:22;;:6;;;;;;;;;;:22;;;2506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10121:6:::1;10116:88;10137:5;:12;10133:1;:16;10116:88;;;10188:4;10171;:14;10176:5;10182:1;10176:8;;;;;;;;:::i;:::-;;;;;;;;10171:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10151:3;;;;;:::i;:::-;;;;10116:88;;;;10047:164:::0;:::o;6396:143::-;6477:7;6504:11;:18;6516:5;6504:18;;;;;;;;;;;;;;;:27;6523:7;6504:27;;;;;;;;;;;;;;;;6497:34;;6396:143;;;;:::o;1477:246::-;1535:7;1564:1;1559;:6;1555:47;;1589:1;1582:8;;;;1555:47;1612:9;1628:1;1624;:5;;;;:::i;:::-;1612:17;;1657:1;1652;1648;:5;;;;:::i;:::-;:10;1640:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1714:1;1707:8;;;1477:246;;;;;:::o;1731:132::-;1789:7;1816:39;1820:1;1823;1816:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1809:46;;1731:132;;;;:::o;142:98::-;195:7;222:10;215:17;;142:98;:::o;7037:335::-;7147:1;7130:19;;:5;:19;;;7122:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7228:1;7209:21;;:7;:21;;;7201:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7310:6;7280:11;:18;7292:5;7280:18;;;;;;;;;;;;;;;:27;7299:7;7280:27;;;;;;;;;;;;;;;:36;;;;7348:7;7332:32;;7341:5;7332:32;;;7357:6;7332:32;;;;;;:::i;:::-;;;;;;;;7037:335;;;:::o;7380:1899::-;7484:1;7468:18;;:4;:18;;;7460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7561:1;7547:16;;:2;:16;;;7539:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7631:1;7622:6;:10;7614:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7689:17;7731:10;;;;;;;;;;;7723:18;;:4;:18;;;;:38;;;;;7751:10;;;;;;;;;;;7745:16;;:2;:16;;;;7723:38;:80;;;;;7787:16;;;;;;;;;;;7779:24;;:4;:24;;;;7723:80;:110;;;;;7815:18;;;;;;;;;;;7807:26;;:4;:26;;;;7723:110;7719:1204;;;7858:11;;;;;;;;;;;7850:20;;;;;;7891:4;:10;7896:4;7891:10;;;;;;;;;;;;;;;;;;;;;;;;;7887:192;;7932:69;7997:3;7932:60;7966:1;7945:19;;:22;7944:46;;7979:11;;7944:46;;;7969:9;;7944:46;7932:6;:10;;:60;;;;:::i;:::-;:64;;:69;;;;:::i;:::-;7920:81;;7887:192;;;8050:29;8075:3;8050:20;8061:8;;8050:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;8038:41;;7887:192;8106:13;;;;;;;;;;;8098:21;;:4;:21;;;:55;;;;;8137:15;;;;;;;;;;;8123:30;;:2;:30;;;;8098:55;:83;;;;;8159:18;:22;8178:2;8159:22;;;;;;;;;;;;;;;;;;;;;;;;;8157:24;8098:83;8094:350;;;8221:12;;8211:6;:22;;8203:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8316:14;;8306:6;8290:13;8300:2;8290:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8282:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8403:1;8383:19;;:21;8380:49;;;8406:19;;:21;;;;;;;;;:::i;:::-;;;;;;8380:49;8094:350;8460:28;8491:24;8509:4;8491:9;:24::i;:::-;8460:55;;8535:6;;;;;;;;;;;8534:7;:32;;;;;8553:13;;;;;;;;;;;8545:21;;:4;:21;;;;8534:32;:47;;;;;8570:11;;;;;;;;;;;8534:47;:80;;;;;8606:8;;8585:20;:29;8534:80;:123;;;;;8639:18;;8618:19;;:39;;8534:123;8530:382;;;8678:26;8695:8;;8678:16;:26::i;:::-;8723;8752:21;8723:50;;8816:1;8795:18;:22;8792:105;;;8842:35;8855:21;8842:12;:35::i;:::-;8792:105;8659:253;8530:382;7835:1088;7719:1204;8951:27;8971:6;8951:9;:15;8961:4;8951:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;8935:9;:15;8945:4;8935:15;;;;;;;;;;;;;;;:43;;;;9003:40;9021:21;9032:9;9021:6;:10;;:21;;;;:::i;:::-;9003:9;:13;9013:2;9003:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;8989:9;:13;8999:2;8989:13;;;;;;;;;;;;;;;:54;;;;9074:2;9059:41;;9068:4;9059:41;;;9078:21;9089:9;9078:6;:10;;:21;;;;:::i;:::-;9059:41;;;;;;:::i;:::-;;;;;;;;9124:1;9114:9;:11;9111:161;;;9164:39;9193:9;9164;:24;9182:4;9164:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9139:9;:24;9157:4;9139:24;;;;;;;;;;;;;;;:64;;;;9244:4;9221:39;;9230:4;9221:39;;;9250:9;9221:39;;;;;;:::i;:::-;;;;;;;;9111:161;7449:1830;7380:1899;;;:::o;1279:190::-;1365:7;1398:1;1393;:6;;1401:12;1385:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1425:9;1441:1;1437;:5;;;;:::i;:::-;1425:17;;1460:1;1453:8;;;1279:190;;;;;:::o;9947:92::-;10004:10;;;;;;;;;;;:19;;:27;10024:6;10004:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9947:92;:::o;9287:483::-;4845:4;4836:6;;:13;;;;;;;;;;;;;;;;;;9365:21:::1;9403:1;9389:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9365:40;;9434:4;9416;9421:1;9416:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9460:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9450:4;9455:1;9450:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9493:62;9510:4;9525:15;;;;;;;;;;;9543:11;9493:8;:62::i;:::-;9566:15;;;;;;;;;;;:66;;;9647:11;9673:1;9689:4;9716;9736:15;9566:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9354:416;4881:5:::0;4872:6;;:14;;;;;;;;;;;;;;;;;;9287:483;:::o;1871:189::-;1957:7;1989:1;1985;:5;1992:12;1977:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2016:9;2032:1;2028;:5;;;;:::i;:::-;2016:17;;2051:1;2044:8;;;1871:189;;;;;:::o;1135:136::-;1193:7;1220:43;1224:1;1227;1220:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1213:50;;1135:136;;;;:::o;948:179::-;1006:7;1026:9;1042:1;1038;:5;;;;:::i;:::-;1026:17;;1067:1;1062;:6;;1054:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1118:1;1111:8;;;948:179;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:117::-;3555:1;3552;3545:12;3569:180;3617:77;3614:1;3607:88;3714:4;3711:1;3704:15;3738:4;3735:1;3728:15;3755:281;3838:27;3860:4;3838:27;:::i;:::-;3830:6;3826:40;3968:6;3956:10;3953:22;3932:18;3920:10;3917:34;3914:62;3911:88;;;3979:18;;:::i;:::-;3911:88;4019:10;4015:2;4008:22;3798:238;3755:281;;:::o;4042:129::-;4076:6;4103:20;;:::i;:::-;4093:30;;4132:33;4160:4;4152:6;4132:33;:::i;:::-;4042:129;;;:::o;4177:311::-;4254:4;4344:18;4336:6;4333:30;4330:56;;;4366:18;;:::i;:::-;4330:56;4416:4;4408:6;4404:17;4396:25;;4476:4;4470;4466:15;4458:23;;4177:311;;;:::o;4494:117::-;4603:1;4600;4593:12;4634:710;4730:5;4755:81;4771:64;4828:6;4771:64;:::i;:::-;4755:81;:::i;:::-;4746:90;;4856:5;4885:6;4878:5;4871:21;4919:4;4912:5;4908:16;4901:23;;4972:4;4964:6;4960:17;4952:6;4948:30;5001:3;4993:6;4990:15;4987:122;;;5020:79;;:::i;:::-;4987:122;5135:6;5118:220;5152:6;5147:3;5144:15;5118:220;;;5227:3;5256:37;5289:3;5277:10;5256:37;:::i;:::-;5251:3;5244:50;5323:4;5318:3;5314:14;5307:21;;5194:144;5178:4;5173:3;5169:14;5162:21;;5118:220;;;5122:21;4736:608;;4634:710;;;;;:::o;5367:370::-;5438:5;5487:3;5480:4;5472:6;5468:17;5464:27;5454:122;;5495:79;;:::i;:::-;5454:122;5612:6;5599:20;5637:94;5727:3;5719:6;5712:4;5704:6;5700:17;5637:94;:::i;:::-;5628:103;;5444:293;5367:370;;;;:::o;5743:539::-;5827:6;5876:2;5864:9;5855:7;5851:23;5847:32;5844:119;;;5882:79;;:::i;:::-;5844:119;6030:1;6019:9;6015:17;6002:31;6060:18;6052:6;6049:30;6046:117;;;6082:79;;:::i;:::-;6046:117;6187:78;6257:7;6248:6;6237:9;6233:22;6187:78;:::i;:::-;6177:88;;5973:302;5743:539;;;;:::o;6288:118::-;6375:24;6393:5;6375:24;:::i;:::-;6370:3;6363:37;6288:118;;:::o;6412:222::-;6505:4;6543:2;6532:9;6528:18;6520:26;;6556:71;6624:1;6613:9;6609:17;6600:6;6556:71;:::i;:::-;6412:222;;;;:::o;6640:619::-;6717:6;6725;6733;6782:2;6770:9;6761:7;6757:23;6753:32;6750:119;;;6788:79;;:::i;:::-;6750:119;6908:1;6933:53;6978:7;6969:6;6958:9;6954:22;6933:53;:::i;:::-;6923:63;;6879:117;7035:2;7061:53;7106:7;7097:6;7086:9;7082:22;7061:53;:::i;:::-;7051:63;;7006:118;7163:2;7189:53;7234:7;7225:6;7214:9;7210:22;7189:53;:::i;:::-;7179:63;;7134:118;6640:619;;;;;:::o;7265:86::-;7300:7;7340:4;7333:5;7329:16;7318:27;;7265:86;;;:::o;7357:112::-;7440:22;7456:5;7440:22;:::i;:::-;7435:3;7428:35;7357:112;;:::o;7475:214::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7615:67;7679:1;7668:9;7664:17;7655:6;7615:67;:::i;:::-;7475:214;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:118::-;8117:24;8135:5;8117:24;:::i;:::-;8112:3;8105:37;8030:118;;:::o;8154:222::-;8247:4;8285:2;8274:9;8270:18;8262:26;;8298:71;8366:1;8355:9;8351:17;8342:6;8298:71;:::i;:::-;8154:222;;;;:::o;8382:474::-;8450:6;8458;8507:2;8495:9;8486:7;8482:23;8478:32;8475:119;;;8513:79;;:::i;:::-;8475:119;8633:1;8658:53;8703:7;8694:6;8683:9;8679:22;8658:53;:::i;:::-;8648:63;;8604:117;8760:2;8786:53;8831:7;8822:6;8811:9;8807:22;8786:53;:::i;:::-;8776:63;;8731:118;8382:474;;;;;:::o;8862:116::-;8932:21;8947:5;8932:21;:::i;:::-;8925:5;8922:32;8912:60;;8968:1;8965;8958:12;8912:60;8862:116;:::o;8984:133::-;9027:5;9065:6;9052:20;9043:29;;9081:30;9105:5;9081:30;:::i;:::-;8984:133;;;;:::o;9123:678::-;9213:6;9221;9270:2;9258:9;9249:7;9245:23;9241:32;9238:119;;;9276:79;;:::i;:::-;9238:119;9424:1;9413:9;9409:17;9396:31;9454:18;9446:6;9443:30;9440:117;;;9476:79;;:::i;:::-;9440:117;9581:78;9651:7;9642:6;9631:9;9627:22;9581:78;:::i;:::-;9571:88;;9367:302;9708:2;9734:50;9776:7;9767:6;9756:9;9752:22;9734:50;:::i;:::-;9724:60;;9679:115;9123:678;;;;;:::o;9807:474::-;9875:6;9883;9932:2;9920:9;9911:7;9907:23;9903:32;9900:119;;;9938:79;;:::i;:::-;9900:119;10058:1;10083:53;10128:7;10119:6;10108:9;10104:22;10083:53;:::i;:::-;10073:63;;10029:117;10185:2;10211:53;10256:7;10247:6;10236:9;10232:22;10211:53;:::i;:::-;10201:63;;10156:118;9807:474;;;;;:::o;10287:182::-;10427:34;10423:1;10415:6;10411:14;10404:58;10287:182;:::o;10475:366::-;10617:3;10638:67;10702:2;10697:3;10638:67;:::i;:::-;10631:74;;10714:93;10803:3;10714:93;:::i;:::-;10832:2;10827:3;10823:12;10816:19;;10475:366;;;:::o;10847:419::-;11013:4;11051:2;11040:9;11036:18;11028:26;;11100:9;11094:4;11090:20;11086:1;11075:9;11071:17;11064:47;11128:131;11254:4;11128:131;:::i;:::-;11120:139;;10847:419;;;:::o;11272:180::-;11320:77;11317:1;11310:88;11417:4;11414:1;11407:15;11441:4;11438:1;11431:15;11458:180;11506:77;11503:1;11496:88;11603:4;11600:1;11593:15;11627:4;11624:1;11617:15;11644:233;11683:3;11706:24;11724:5;11706:24;:::i;:::-;11697:33;;11752:66;11745:5;11742:77;11739:103;;11822:18;;:::i;:::-;11739:103;11869:1;11862:5;11858:13;11851:20;;11644:233;;;:::o;11883:102::-;11925:8;11972:5;11969:1;11965:13;11944:34;;11883:102;;;:::o;11991:848::-;12052:5;12059:4;12083:6;12074:15;;12107:5;12098:14;;12121:712;12142:1;12132:8;12129:15;12121:712;;;12237:4;12232:3;12228:14;12222:4;12219:24;12216:50;;;12246:18;;:::i;:::-;12216:50;12296:1;12286:8;12282:16;12279:451;;;12711:4;12704:5;12700:16;12691:25;;12279:451;12761:4;12755;12751:15;12743:23;;12791:32;12814:8;12791:32;:::i;:::-;12779:44;;12121:712;;;11991:848;;;;;;;:::o;12845:1073::-;12899:5;13090:8;13080:40;;13111:1;13102:10;;13113:5;;13080:40;13139:4;13129:36;;13156:1;13147:10;;13158:5;;13129:36;13225:4;13273:1;13268:27;;;;13309:1;13304:191;;;;13218:277;;13268:27;13286:1;13277:10;;13288:5;;;13304:191;13349:3;13339:8;13336:17;13333:43;;;13356:18;;:::i;:::-;13333:43;13405:8;13402:1;13398:16;13389:25;;13440:3;13433:5;13430:14;13427:40;;;13447:18;;:::i;:::-;13427:40;13480:5;;;13218:277;;13604:2;13594:8;13591:16;13585:3;13579:4;13576:13;13572:36;13554:2;13544:8;13541:16;13536:2;13530:4;13527:12;13523:35;13507:111;13504:246;;;13660:8;13654:4;13650:19;13641:28;;13695:3;13688:5;13685:14;13682:40;;;13702:18;;:::i;:::-;13682:40;13735:5;;13504:246;13775:42;13813:3;13803:8;13797:4;13794:1;13775:42;:::i;:::-;13760:57;;;;13849:4;13844:3;13840:14;13833:5;13830:25;13827:51;;;13858:18;;:::i;:::-;13827:51;13907:4;13900:5;13896:16;13887:25;;12845:1073;;;;;;:::o;13924:281::-;13982:5;14006:23;14024:4;14006:23;:::i;:::-;13998:31;;14050:25;14066:8;14050:25;:::i;:::-;14038:37;;14094:104;14131:66;14121:8;14115:4;14094:104;:::i;:::-;14085:113;;13924:281;;;;:::o;14211:410::-;14251:7;14274:20;14292:1;14274:20;:::i;:::-;14269:25;;14308:20;14326:1;14308:20;:::i;:::-;14303:25;;14363:1;14360;14356:9;14385:30;14403:11;14385:30;:::i;:::-;14374:41;;14564:1;14555:7;14551:15;14548:1;14545:22;14525:1;14518:9;14498:83;14475:139;;14594:18;;:::i;:::-;14475:139;14259:362;14211:410;;;;:::o;14627:179::-;14767:31;14763:1;14755:6;14751:14;14744:55;14627:179;:::o;14812:366::-;14954:3;14975:67;15039:2;15034:3;14975:67;:::i;:::-;14968:74;;15051:93;15140:3;15051:93;:::i;:::-;15169:2;15164:3;15160:12;15153:19;;14812:366;;;:::o;15184:419::-;15350:4;15388:2;15377:9;15373:18;15365:26;;15437:9;15431:4;15427:20;15423:1;15412:9;15408:17;15401:47;15465:131;15591:4;15465:131;:::i;:::-;15457:139;;15184:419;;;:::o;15609:173::-;15749:25;15745:1;15737:6;15733:14;15726:49;15609:173;:::o;15788:366::-;15930:3;15951:67;16015:2;16010:3;15951:67;:::i;:::-;15944:74;;16027:93;16116:3;16027:93;:::i;:::-;16145:2;16140:3;16136:12;16129:19;;15788:366;;;:::o;16160:419::-;16326:4;16364:2;16353:9;16349:18;16341:26;;16413:9;16407:4;16403:20;16399:1;16388:9;16384:17;16377:47;16441:131;16567:4;16441:131;:::i;:::-;16433:139;;16160:419;;;:::o;16585:180::-;16633:77;16630:1;16623:88;16730:4;16727:1;16720:15;16754:4;16751:1;16744:15;16771:185;16811:1;16828:20;16846:1;16828:20;:::i;:::-;16823:25;;16862:20;16880:1;16862:20;:::i;:::-;16857:25;;16901:1;16891:35;;16906:18;;:::i;:::-;16891:35;16948:1;16945;16941:9;16936:14;;16771:185;;;;:::o;16962:220::-;17102:34;17098:1;17090:6;17086:14;17079:58;17171:3;17166:2;17158:6;17154:15;17147:28;16962:220;:::o;17188:366::-;17330:3;17351:67;17415:2;17410:3;17351:67;:::i;:::-;17344:74;;17427:93;17516:3;17427:93;:::i;:::-;17545:2;17540:3;17536:12;17529:19;;17188:366;;;:::o;17560:419::-;17726:4;17764:2;17753:9;17749:18;17741:26;;17813:9;17807:4;17803:20;17799:1;17788:9;17784:17;17777:47;17841:131;17967:4;17841:131;:::i;:::-;17833:139;;17560:419;;;:::o;17985:223::-;18125:34;18121:1;18113:6;18109:14;18102:58;18194:6;18189:2;18181:6;18177:15;18170:31;17985:223;:::o;18214:366::-;18356:3;18377:67;18441:2;18436:3;18377:67;:::i;:::-;18370:74;;18453:93;18542:3;18453:93;:::i;:::-;18571:2;18566:3;18562:12;18555:19;;18214:366;;;:::o;18586:419::-;18752:4;18790:2;18779:9;18775:18;18767:26;;18839:9;18833:4;18829:20;18825:1;18814:9;18810:17;18803:47;18867:131;18993:4;18867:131;:::i;:::-;18859:139;;18586:419;;;:::o;19011:221::-;19151:34;19147:1;19139:6;19135:14;19128:58;19220:4;19215:2;19207:6;19203:15;19196:29;19011:221;:::o;19238:366::-;19380:3;19401:67;19465:2;19460:3;19401:67;:::i;:::-;19394:74;;19477:93;19566:3;19477:93;:::i;:::-;19595:2;19590:3;19586:12;19579:19;;19238:366;;;:::o;19610:419::-;19776:4;19814:2;19803:9;19799:18;19791:26;;19863:9;19857:4;19853:20;19849:1;19838:9;19834:17;19827:47;19891:131;20017:4;19891:131;:::i;:::-;19883:139;;19610:419;;;:::o;20035:224::-;20175:34;20171:1;20163:6;20159:14;20152:58;20244:7;20239:2;20231:6;20227:15;20220:32;20035:224;:::o;20265:366::-;20407:3;20428:67;20492:2;20487:3;20428:67;:::i;:::-;20421:74;;20504:93;20593:3;20504:93;:::i;:::-;20622:2;20617:3;20613:12;20606:19;;20265:366;;;:::o;20637:419::-;20803:4;20841:2;20830:9;20826:18;20818:26;;20890:9;20884:4;20880:20;20876:1;20865:9;20861:17;20854:47;20918:131;21044:4;20918:131;:::i;:::-;20910:139;;20637:419;;;:::o;21062:222::-;21202:34;21198:1;21190:6;21186:14;21179:58;21271:5;21266:2;21258:6;21254:15;21247:30;21062:222;:::o;21290:366::-;21432:3;21453:67;21517:2;21512:3;21453:67;:::i;:::-;21446:74;;21529:93;21618:3;21529:93;:::i;:::-;21647:2;21642:3;21638:12;21631:19;;21290:366;;;:::o;21662:419::-;21828:4;21866:2;21855:9;21851:18;21843:26;;21915:9;21909:4;21905:20;21901:1;21890:9;21886:17;21879:47;21943:131;22069:4;21943:131;:::i;:::-;21935:139;;21662:419;;;:::o;22087:228::-;22227:34;22223:1;22215:6;22211:14;22204:58;22296:11;22291:2;22283:6;22279:15;22272:36;22087:228;:::o;22321:366::-;22463:3;22484:67;22548:2;22543:3;22484:67;:::i;:::-;22477:74;;22560:93;22649:3;22560:93;:::i;:::-;22678:2;22673:3;22669:12;22662:19;;22321:366;;;:::o;22693:419::-;22859:4;22897:2;22886:9;22882:18;22874:26;;22946:9;22940:4;22936:20;22932:1;22921:9;22917:17;22910:47;22974:131;23100:4;22974:131;:::i;:::-;22966:139;;22693:419;;;:::o;23118:175::-;23258:27;23254:1;23246:6;23242:14;23235:51;23118:175;:::o;23299:366::-;23441:3;23462:67;23526:2;23521:3;23462:67;:::i;:::-;23455:74;;23538:93;23627:3;23538:93;:::i;:::-;23656:2;23651:3;23647:12;23640:19;;23299:366;;;:::o;23671:419::-;23837:4;23875:2;23864:9;23860:18;23852:26;;23924:9;23918:4;23914:20;23910:1;23899:9;23895:17;23888:47;23952:131;24078:4;23952:131;:::i;:::-;23944:139;;23671:419;;;:::o;24096:191::-;24136:3;24155:20;24173:1;24155:20;:::i;:::-;24150:25;;24189:20;24207:1;24189:20;:::i;:::-;24184:25;;24232:1;24229;24225:9;24218:16;;24253:3;24250:1;24247:10;24244:36;;;24260:18;;:::i;:::-;24244:36;24096:191;;;;:::o;24293:176::-;24433:28;24429:1;24421:6;24417:14;24410:52;24293:176;:::o;24475:366::-;24617:3;24638:67;24702:2;24697:3;24638:67;:::i;:::-;24631:74;;24714:93;24803:3;24714:93;:::i;:::-;24832:2;24827:3;24823:12;24816:19;;24475:366;;;:::o;24847:419::-;25013:4;25051:2;25040:9;25036:18;25028:26;;25100:9;25094:4;25090:20;25086:1;25075:9;25071:17;25064:47;25128:131;25254:4;25128:131;:::i;:::-;25120:139;;24847:419;;;:::o;25272:171::-;25311:3;25334:24;25352:5;25334:24;:::i;:::-;25325:33;;25380:4;25373:5;25370:15;25367:41;;25388:18;;:::i;:::-;25367:41;25435:1;25428:5;25424:13;25417:20;;25272:171;;;:::o;25449:194::-;25489:4;25509:20;25527:1;25509:20;:::i;:::-;25504:25;;25543:20;25561:1;25543:20;:::i;:::-;25538:25;;25587:1;25584;25580:9;25572:17;;25611:1;25605:4;25602:11;25599:37;;;25616:18;;:::i;:::-;25599:37;25449:194;;;;:::o;25649:143::-;25706:5;25737:6;25731:13;25722:22;;25753:33;25780:5;25753:33;:::i;:::-;25649:143;;;;:::o;25798:351::-;25868:6;25917:2;25905:9;25896:7;25892:23;25888:32;25885:119;;;25923:79;;:::i;:::-;25885:119;26043:1;26068:64;26124:7;26115:6;26104:9;26100:22;26068:64;:::i;:::-;26058:74;;26014:128;25798:351;;;;:::o;26155:85::-;26200:7;26229:5;26218:16;;26155:85;;;:::o;26246:60::-;26274:3;26295:5;26288:12;;26246:60;;;:::o;26312:158::-;26370:9;26403:61;26421:42;26430:32;26456:5;26430:32;:::i;:::-;26421:42;:::i;:::-;26403:61;:::i;:::-;26390:74;;26312:158;;;:::o;26476:147::-;26571:45;26610:5;26571:45;:::i;:::-;26566:3;26559:58;26476:147;;:::o;26629:114::-;26696:6;26730:5;26724:12;26714:22;;26629:114;;;:::o;26749:184::-;26848:11;26882:6;26877:3;26870:19;26922:4;26917:3;26913:14;26898:29;;26749:184;;;;:::o;26939:132::-;27006:4;27029:3;27021:11;;27059:4;27054:3;27050:14;27042:22;;26939:132;;;:::o;27077:108::-;27154:24;27172:5;27154:24;:::i;:::-;27149:3;27142:37;27077:108;;:::o;27191:179::-;27260:10;27281:46;27323:3;27315:6;27281:46;:::i;:::-;27359:4;27354:3;27350:14;27336:28;;27191:179;;;;:::o;27376:113::-;27446:4;27478;27473:3;27469:14;27461:22;;27376:113;;;:::o;27525:732::-;27644:3;27673:54;27721:5;27673:54;:::i;:::-;27743:86;27822:6;27817:3;27743:86;:::i;:::-;27736:93;;27853:56;27903:5;27853:56;:::i;:::-;27932:7;27963:1;27948:284;27973:6;27970:1;27967:13;27948:284;;;28049:6;28043:13;28076:63;28135:3;28120:13;28076:63;:::i;:::-;28069:70;;28162:60;28215:6;28162:60;:::i;:::-;28152:70;;28008:224;27995:1;27992;27988:9;27983:14;;27948:284;;;27952:14;28248:3;28241:10;;27649:608;;;27525:732;;;;:::o;28263:831::-;28526:4;28564:3;28553:9;28549:19;28541:27;;28578:71;28646:1;28635:9;28631:17;28622:6;28578:71;:::i;:::-;28659:80;28735:2;28724:9;28720:18;28711:6;28659:80;:::i;:::-;28786:9;28780:4;28776:20;28771:2;28760:9;28756:18;28749:48;28814:108;28917:4;28908:6;28814:108;:::i;:::-;28806:116;;28932:72;29000:2;28989:9;28985:18;28976:6;28932:72;:::i;:::-;29014:73;29082:3;29071:9;29067:19;29058:6;29014:73;:::i;:::-;28263:831;;;;;;;;:::o;29100:177::-;29240:29;29236:1;29228:6;29224:14;29217:53;29100:177;:::o;29283:366::-;29425:3;29446:67;29510:2;29505:3;29446:67;:::i;:::-;29439:74;;29522:93;29611:3;29522:93;:::i;:::-;29640:2;29635:3;29631:12;29624:19;;29283:366;;;:::o;29655:419::-;29821:4;29859:2;29848:9;29844:18;29836:26;;29908:9;29902:4;29898:20;29894:1;29883:9;29879:17;29872:47;29936:131;30062:4;29936:131;:::i;:::-;29928:139;;29655:419;;;:::o

Swarm Source

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