ETH Price: $3,603.37 (-3.23%)

Token

ERC-20: Ethario (ETHARIO)
 

Overview

Max Total Supply

100,000,000 ETHARIO

Holders

139

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
30,434.100265236 ETHARIO

Value
$0.00
0xb35cd5ad81705398b17306a5ad1b4c6d55a1474b
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:
ethario

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-01
*/

// SPDX-License-Identifier: Unlicensed
/*
Ethario is a browser-game that is inspired by the wildly popular game Agar.
We took the Agar experience to the next level by adding a play-to-earn (P2E)twist,
offering players the bet live while playing.

Website/Game: https://ethario.game/
Telegram:     https://t.me/ethario 
Docs:         https://docs.ethario.game/
x:            https://x.com/etharioerc
*/

pragma solidity 0.8.23;

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

library SafeMath {
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "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;
    }
}

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(), "caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "new owner is the zero address");
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
    }

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom( address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

contract ethario is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedWallet;
    uint8 private constant _decimals = 9;

    string private constant _name = "Ethario";
    string private constant _symbol = "ETHARIO";
    
    uint256 private constant _totalSupply = 100000000 * 10**_decimals;
    uint256 public maxWalletAmount = (_totalSupply * 2)/100;
    uint256 public maxTxAmount = (_totalSupply * 2)/100;
    uint256 private constant minCaSell = _totalSupply / 100 / 2;  //0.5%
    uint256 private maxCaSell = _totalSupply / 100 ; // 1%

    uint256 public buyTax = 30;
    uint256 public sellTax = 45;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private launch = false;
    uint256 private blockLaunch;
    uint256 private lastSellBlock;
    uint256 private sellCount;
    uint256 private _buyCount= 0;
    bool private inSwap;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    address payable private treasury; 

    constructor() payable {
        treasury = payable (msg.sender);
        _isExcludedWallet[msg.sender] = true;
        _isExcludedWallet[address(this)] = true;
        _isExcludedWallet[treasury] = true;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _allowances[owner()][address(uniswapV2Router)] = _totalSupply;
        _balance[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balance[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,"low allowance"));
        return true;
    }

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

    function openTrading() external onlyOwner {
        launch = true;
        blockLaunch = block.number;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer zero address");
        require(amount > 0, "transfer zero amount");
        uint256 _tax = 0;

        if(!_isExcludedWallet[from] && !_isExcludedWallet[to]){
            //NOT EXCLUDED:
            require(launch);
            require(amount <= maxTxAmount, "Over MaxTx limit");
            if (from == uniswapV2Pair) {
                //BUY:
                require(balanceOf(to) + amount <= maxWalletAmount, "Over MaxWallet limit");
                _tax = buyTax;
            } else if (to == uniswapV2Pair) {
                //SELL:
                _tax = sellTax;
                uint256 tokensSwap = balanceOf(address(this));
                if (tokensSwap > minCaSell && !inSwap) {
                    if (block.number > lastSellBlock) {
                        sellCount = 0;
                    }
                    if (sellCount < 3){
                        sellCount++;
                        lastSellBlock = block.number;
                        swapTokensEth(min(maxCaSell, min(amount, tokensSwap)));
                    }
                }
            }
        }
        _balance[from] = _balance[from] - amount;

        if(_tax > 0){
            uint256 taxTokens = (amount * _tax) / 100;
            _balance[address(this)] = _balance[address(this)] + taxTokens;
            amount = amount - taxTokens;
            emit Transfer(from, address(this), taxTokens);
        }

        _balance[to] = _balance[to] + amount;
        emit Transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensEth(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,treasury,block.timestamp);
    }

    function transferOwnership(address newOwner) public override onlyOwner {
        _isExcludedWallet[owner()] = false;
        super.transferOwnership(newOwner);
        _isExcludedWallet[newOwner] = true;
    }

    function newFee(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        buyTax = newBuyTax;
        sellTax = newSellTax;
    }

    function setExcludedWallet(address wAddress, bool isExcle) external  onlyOwner {
        _isExcludedWallet[wAddress] = isExcle;
    }

    function trigger(uint256 percentToSell) external onlyOwner {
        uint256 amount = percentToSell = min(balanceOf(address(this)), (_totalSupply / 100 * percentToSell));
        swapTokensEth(amount);
    }

    function setMaxCaSell(uint256 _maxCaSell) external onlyOwner{
        maxCaSell = _maxCaSell * 10**_decimals;
    }

    function setLimits(uint256 newMaxWalletAmount, uint256 newMaxTxAmount) external onlyOwner {
        maxWalletAmount = newMaxWalletAmount * 10**_decimals;
        maxTxAmount = newMaxTxAmount * 10**_decimals;
    }

    function removeAllLimits() external onlyOwner {
        maxWalletAmount = _totalSupply;
        maxTxAmount = _totalSupply;
    }

    //Amounts with decimals
    function clearStuckToken(address tokenAddress, uint256 amounts) external {
        require(msg.sender == treasury);
        if(amounts == 0){
            amounts = IERC20(tokenAddress).balanceOf(address(this));
        }
        IERC20(tokenAddress).transfer(treasury, amounts);
    }

    //Send tokens from ca to dead, call only from owner (without decimals)
    function burnTokens(uint256 amounts) external onlyOwner() {
        IERC20(address(this)).transfer(0x000000000000000000000000000000000000dEaD, amounts * 10**_decimals);
    }

    function exportETH() external {
        require(msg.sender == treasury);
        treasury.transfer(address(this).balance);
    }

    function addLP() external payable onlyOwner() {
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLP","outputs":[],"stateMutability":"payable","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":[{"internalType":"uint256","name":"amounts","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amounts","type":"uint256"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"exportETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"newFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wAddress","type":"address"},{"internalType":"bool","name":"isExcle","type":"bool"}],"name":"setExcludedWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"newMaxTxAmount","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxCaSell","type":"uint256"}],"name":"setMaxCaSell","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentToSell","type":"uint256"}],"name":"trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052606460026009600a620000189190620008ba565b6305f5e1006200002991906200090a565b6200003591906200090a565b62000041919062000981565b600455606460026009600a620000589190620008ba565b6305f5e1006200006991906200090a565b6200007591906200090a565b62000081919062000981565b60055560646009600a620000969190620008ba565b6305f5e100620000a791906200090a565b620000b3919062000981565b600655601e600755602d6008555f600a60146101000a81548160ff0219169083151502179055505f600e555f620000ef620006fa60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000a1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000459573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200047f919062000a1d565b6040518363ffffffff1660e01b81526004016200049e92919062000a5e565b6020604051808303815f875af1158015620004bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004e1919062000a1d565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620005309190620008ba565b6305f5e1006200054191906200090a565b60025f620005546200070160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506009600a620005fd9190620008ba565b6305f5e1006200060e91906200090a565b60015f620006216200070160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506200066e6200070160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620006cc9190620008ba565b6305f5e100620006dd91906200090a565b604051620006ec919062000a9a565b60405180910390a362000ab5565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620007b2578086048111156200078a576200078962000728565b5b60018516156200079a5780820291505b8081029050620007aa8562000755565b94506200076a565b94509492505050565b5f82620007cc57600190506200089e565b81620007db575f90506200089e565b8160018114620007f45760028114620007ff5762000835565b60019150506200089e565b60ff84111562000814576200081362000728565b5b8360020a9150848211156200082e576200082d62000728565b5b506200089e565b5060208310610133831016604e8410600b84101617156200086f5782820a90508381111562000869576200086862000728565b5b6200089e565b6200087e848484600162000761565b9250905081840481111562000898576200089762000728565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008c682620008a5565b9150620008d383620008ae565b9250620009027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007bb565b905092915050565b5f6200091682620008a5565b91506200092383620008a5565b92508282026200093381620008a5565b915082820484148315176200094d576200094c62000728565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200098d82620008a5565b91506200099a83620008a5565b925082620009ad57620009ac62000954565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009e782620009bc565b9050919050565b620009f981620009db565b811462000a04575f80fd5b50565b5f8151905062000a1781620009ee565b92915050565b5f6020828403121562000a355762000a34620009b8565b5b5f62000a448482850162000a07565b91505092915050565b62000a5881620009db565b82525050565b5f60408201905062000a735f83018562000a4d565b62000a82602083018462000a4d565b9392505050565b62000a9481620008a5565b82525050565b5f60208201905062000aaf5f83018462000a89565b92915050565b6130568062000ac35f395ff3fe6080604052600436106101ba575f3560e01c80638da5cb5b116100eb578063c9567bf911610089578063db05e5cb11610063578063db05e5cb14610595578063dd62ed3e146105ab578063ed684cc6146105e7578063f2fde38b1461060f576101c1565b8063c9567bf91461053f578063cc1776d314610555578063d579d4ed1461057f576101c1565b8063aa4bde28116100c5578063aa4bde28146104bb578063aca2cd6e146104e5578063bc37e1a31461050d578063c4590d3f14610517576101c1565b80638da5cb5b1461042b57806395d89b4114610455578063a9059cbb1461047f576101c1565b806349bd5a5e1161015857806370a082311161013257806370a0823114610387578063715018a6146103c357806377b54bad146103d95780638c0b5e2214610401576101c1565b806349bd5a5e1461030b5780634f7041a5146103355780636d1b229d1461035f576101c1565b8063143a8eb911610194578063143a8eb91461025357806318160ddd1461027b57806323b872dd146102a5578063313ce567146102e1576101c1565b806306fdde03146101c557806307056d37146101ef578063095ea7b314610217576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610637565b6040516101e69190612370565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906123c7565b610674565b005b348015610222575f80fd5b5061023d6004803603810190610238919061245f565b61071a565b60405161024a91906124b7565b60405180910390f35b34801561025e575f80fd5b50610279600480360381019061027491906124d0565b610737565b005b348015610286575f80fd5b5061028f6107ed565b60405161029c919061250a565b60405180910390f35b3480156102b0575f80fd5b506102cb60048036038101906102c69190612523565b610810565b6040516102d891906124b7565b60405180910390f35b3480156102ec575f80fd5b506102f5610901565b604051610302919061258e565b60405180910390f35b348015610316575f80fd5b5061031f610909565b60405161032c91906125b6565b60405180910390f35b348015610340575f80fd5b5061034961092e565b604051610356919061250a565b60405180910390f35b34801561036a575f80fd5b50610385600480360381019061038091906124d0565b610934565b005b348015610392575f80fd5b506103ad60048036038101906103a891906125cf565b610a61565b6040516103ba919061250a565b60405180910390f35b3480156103ce575f80fd5b506103d7610aa7565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa919061245f565b610bf5565b005b34801561040c575f80fd5b50610415610d72565b604051610422919061250a565b60405180910390f35b348015610436575f80fd5b5061043f610d78565b60405161044c91906125b6565b60405180910390f35b348015610460575f80fd5b50610469610d9f565b6040516104769190612370565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a0919061245f565b610ddc565b6040516104b291906124b7565b60405180910390f35b3480156104c6575f80fd5b506104cf610df9565b6040516104dc919061250a565b60405180910390f35b3480156104f0575f80fd5b5061050b60048036038101906105069190612624565b610dff565b005b610515610eeb565b005b348015610522575f80fd5b5061053d600480360381019061053891906123c7565b611081565b005b34801561054a575f80fd5b50610553611157565b005b348015610560575f80fd5b5061056961120f565b604051610576919061250a565b60405180910390f35b34801561058a575f80fd5b50610593611215565b005b3480156105a0575f80fd5b506105a96112d6565b005b3480156105b6575f80fd5b506105d160048036038101906105cc9190612662565b6113b2565b6040516105de919061250a565b60405180910390f35b3480156105f2575f80fd5b5061060d600480360381019061060891906124d0565b611434565b005b34801561061a575f80fd5b50610635600480360381019061063091906125cf565b611520565b005b60606040518060400160405280600781526020017f4574686172696f00000000000000000000000000000000000000000000000000815250905090565b61067c611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ff906126ea565b60405180910390fd5b81600781905550806008819055505050565b5f61072d610726611670565b8484611677565b6001905092915050565b61073f611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c2906126ea565b60405180910390fd5b6009600a6107d99190612864565b816107e491906128ae565b60068190555050565b5f6009600a6107fc9190612864565b6305f5e10061080b91906128ae565b905090565b5f61081c848484611805565b6108f684610828611670565b6108f1856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e63650000000000000000000000000000000000000081525060025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a8611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e249092919063ffffffff16565b611677565b600190509392505050565b5f6009905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b61093c611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf906126ea565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead6009600a6109f59190612864565b84610a0091906128ae565b6040518363ffffffff1660e01b8152600401610a1d9291906128ef565b6020604051808303815f875af1158015610a39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d919061292a565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aaf611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b32906126ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4e575f80fd5b5f8103610cd0578173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c8e91906125b6565b602060405180830381865afa158015610ca9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccd9190612969565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d2d9291906129ef565b6020604051808303815f875af1158015610d49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6d919061292a565b505050565b60055481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4554484152494f00000000000000000000000000000000000000000000000000815250905090565b5f610def610de8611670565b8484611805565b6001905092915050565b60045481565b610e07611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906126ea565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610ef3611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906126ea565b60405180910390fd5b610fc73060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fb39190612864565b6305f5e100610fc291906128ae565b611677565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061100f30610a61565b5f80611019610d78565b426040518863ffffffff1660e01b815260040161103b96959493929190612a4f565b60606040518083038185885af1158015611057573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061107c9190612aae565b505050565b611089611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c906126ea565b60405180910390fd5b6009600a6111239190612864565b8261112e91906128ae565b6004819055506009600a6111429190612864565b8161114d91906128ae565b6005819055505050565b61115f611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906126ea565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555043600b81905550565b60085481565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126e575f80fd5b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156112d3573d5f803e3d5ffd5b50565b6112de611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611361906126ea565b60405180910390fd5b6009600a6113789190612864565b6305f5e10061138791906128ae565b6004819055506009600a61139b9190612864565b6305f5e1006113aa91906128ae565b600581905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61143c611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf906126ea565b60405180910390fd5b5f61150e6114d530610a61565b8360646009600a6114e69190612864565b6305f5e1006114f591906128ae565b6114ff9190612b2b565b61150991906128ae565b611e86565b915081905061151c81611e9e565b5050565b611528611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906126ea565b60405180910390fd5b5f60035f6115c0610d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061161881612129565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116df57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590612ba5565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117f8919061250a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a90612c0d565b60405180910390fd5b5f81116118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ac90612c75565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611954575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b8357600a60149054906101000a900460ff16611971575f80fd5b6005548211156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90612cdd565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a6c5760045482611a1785610a61565b611a219190612cfb565b1115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990612d78565b60405180910390fd5b6007549050611b82565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b815760085490505f611acf30610a61565b9050600260646009600a611ae39190612864565b6305f5e100611af291906128ae565b611afc9190612b2b565b611b069190612b2b565b81118015611b205750600f5f9054906101000a900460ff16155b15611b7f57600c54431115611b37575f600d819055505b6003600d541015611b7e57600d5f815480929190611b5490612d96565b919050555043600c81905550611b7d611b78600654611b738685611e86565b611e86565b611e9e565b5b5b505b5b5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bcc9190612ddd565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f811115611d2f575f60648284611c2491906128ae565b611c2e9190612b2b565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c799190612cfb565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508083611cc69190612ddd565b92503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d25919061250a565b60405180910390a3505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d789190612cfb565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e16919061250a565b60405180910390a350505050565b5f838311158290611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e629190612370565b60405180910390fd5b505f8385611e799190612ddd565b9050809150509392505050565b5f818311611e945782611e96565b815b905092915050565b6001600f5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ed457611ed3612e10565b5b604051908082528060200260200182016040528015611f025781602001602082028036833780820191505090505b50905030815f81518110611f1957611f18612e3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe19190612e7e565b81600181518110611ff557611ff4612e3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205b3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611677565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f84600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016120df959493929190612f60565b5f604051808303815f87803b1580156120f6575f80fd5b505af1158015612108573d5f803e3d5ffd5b50505050505f600f5f6101000a81548160ff02191690831515021790555050565b612131611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b4906126ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290613002565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561231d578082015181840152602081019050612302565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612342826122e6565b61234c81856122f0565b935061235c818560208601612300565b61236581612328565b840191505092915050565b5f6020820190508181035f8301526123888184612338565b905092915050565b5f80fd5b5f819050919050565b6123a681612394565b81146123b0575f80fd5b50565b5f813590506123c18161239d565b92915050565b5f80604083850312156123dd576123dc612390565b5b5f6123ea858286016123b3565b92505060206123fb858286016123b3565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61242e82612405565b9050919050565b61243e81612424565b8114612448575f80fd5b50565b5f8135905061245981612435565b92915050565b5f806040838503121561247557612474612390565b5b5f6124828582860161244b565b9250506020612493858286016123b3565b9150509250929050565b5f8115159050919050565b6124b18161249d565b82525050565b5f6020820190506124ca5f8301846124a8565b92915050565b5f602082840312156124e5576124e4612390565b5b5f6124f2848285016123b3565b91505092915050565b61250481612394565b82525050565b5f60208201905061251d5f8301846124fb565b92915050565b5f805f6060848603121561253a57612539612390565b5b5f6125478682870161244b565b93505060206125588682870161244b565b9250506040612569868287016123b3565b9150509250925092565b5f60ff82169050919050565b61258881612573565b82525050565b5f6020820190506125a15f83018461257f565b92915050565b6125b081612424565b82525050565b5f6020820190506125c95f8301846125a7565b92915050565b5f602082840312156125e4576125e3612390565b5b5f6125f18482850161244b565b91505092915050565b6126038161249d565b811461260d575f80fd5b50565b5f8135905061261e816125fa565b92915050565b5f806040838503121561263a57612639612390565b5b5f6126478582860161244b565b925050602061265885828601612610565b9150509250929050565b5f806040838503121561267857612677612390565b5b5f6126858582860161244b565b92505060206126968582860161244b565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f6126d46017836122f0565b91506126df826126a0565b602082019050919050565b5f6020820190508181035f830152612701816126c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561278a5780860481111561276657612765612708565b5b60018516156127755780820291505b808102905061278385612735565b945061274a565b94509492505050565b5f826127a2576001905061285d565b816127af575f905061285d565b81600181146127c557600281146127cf576127fe565b600191505061285d565b60ff8411156127e1576127e0612708565b5b8360020a9150848211156127f8576127f7612708565b5b5061285d565b5060208310610133831016604e8410600b84101617156128335782820a90508381111561282e5761282d612708565b5b61285d565b6128408484846001612741565b9250905081840481111561285757612856612708565b5b81810290505b9392505050565b5f61286e82612394565b915061287983612573565b92506128a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612793565b905092915050565b5f6128b882612394565b91506128c383612394565b92508282026128d181612394565b915082820484148315176128e8576128e7612708565b5b5092915050565b5f6040820190506129025f8301856125a7565b61290f60208301846124fb565b9392505050565b5f81519050612924816125fa565b92915050565b5f6020828403121561293f5761293e612390565b5b5f61294c84828501612916565b91505092915050565b5f815190506129638161239d565b92915050565b5f6020828403121561297e5761297d612390565b5b5f61298b84828501612955565b91505092915050565b5f819050919050565b5f6129b76129b26129ad84612405565b612994565b612405565b9050919050565b5f6129c88261299d565b9050919050565b5f6129d9826129be565b9050919050565b6129e9816129cf565b82525050565b5f604082019050612a025f8301856129e0565b612a0f60208301846124fb565b9392505050565b5f819050919050565b5f612a39612a34612a2f84612a16565b612994565b612394565b9050919050565b612a4981612a1f565b82525050565b5f60c082019050612a625f8301896125a7565b612a6f60208301886124fb565b612a7c6040830187612a40565b612a896060830186612a40565b612a9660808301856125a7565b612aa360a08301846124fb565b979650505050505050565b5f805f60608486031215612ac557612ac4612390565b5b5f612ad286828701612955565b9350506020612ae386828701612955565b9250506040612af486828701612955565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b3582612394565b9150612b4083612394565b925082612b5057612b4f612afe565b5b828204905092915050565b7f617070726f7665207a65726f20616464726573730000000000000000000000005f82015250565b5f612b8f6014836122f0565b9150612b9a82612b5b565b602082019050919050565b5f6020820190508181035f830152612bbc81612b83565b9050919050565b7f7472616e73666572207a65726f206164647265737300000000000000000000005f82015250565b5f612bf76015836122f0565b9150612c0282612bc3565b602082019050919050565b5f6020820190508181035f830152612c2481612beb565b9050919050565b7f7472616e73666572207a65726f20616d6f756e740000000000000000000000005f82015250565b5f612c5f6014836122f0565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b7f4f766572204d61785478206c696d6974000000000000000000000000000000005f82015250565b5f612cc76010836122f0565b9150612cd282612c93565b602082019050919050565b5f6020820190508181035f830152612cf481612cbb565b9050919050565b5f612d0582612394565b9150612d1083612394565b9250828201905080821115612d2857612d27612708565b5b92915050565b7f4f766572204d617857616c6c6574206c696d69740000000000000000000000005f82015250565b5f612d626014836122f0565b9150612d6d82612d2e565b602082019050919050565b5f6020820190508181035f830152612d8f81612d56565b9050919050565b5f612da082612394565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dd257612dd1612708565b5b600182019050919050565b5f612de782612394565b9150612df283612394565b9250828203905081811115612e0a57612e09612708565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612e7881612435565b92915050565b5f60208284031215612e9357612e92612390565b5b5f612ea084828501612e6a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612edb81612424565b82525050565b5f612eec8383612ed2565b60208301905092915050565b5f602082019050919050565b5f612f0e82612ea9565b612f188185612eb3565b9350612f2383612ec3565b805f5b83811015612f53578151612f3a8882612ee1565b9750612f4583612ef8565b925050600181019050612f26565b5085935050505092915050565b5f60a082019050612f735f8301886124fb565b612f806020830187612a40565b8181036040830152612f928186612f04565b9050612fa160608301856129e0565b612fae60808301846124fb565b9695505050505050565b7f6e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f612fec601d836122f0565b9150612ff782612fb8565b602082019050919050565b5f6020820190508181035f83015261301981612fe0565b905091905056fea2646970667358221220f0c04f68887fc36a5196caaeacb64021b60f889a0cfd0eda2c2727d8c08ffc7464736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c80638da5cb5b116100eb578063c9567bf911610089578063db05e5cb11610063578063db05e5cb14610595578063dd62ed3e146105ab578063ed684cc6146105e7578063f2fde38b1461060f576101c1565b8063c9567bf91461053f578063cc1776d314610555578063d579d4ed1461057f576101c1565b8063aa4bde28116100c5578063aa4bde28146104bb578063aca2cd6e146104e5578063bc37e1a31461050d578063c4590d3f14610517576101c1565b80638da5cb5b1461042b57806395d89b4114610455578063a9059cbb1461047f576101c1565b806349bd5a5e1161015857806370a082311161013257806370a0823114610387578063715018a6146103c357806377b54bad146103d95780638c0b5e2214610401576101c1565b806349bd5a5e1461030b5780634f7041a5146103355780636d1b229d1461035f576101c1565b8063143a8eb911610194578063143a8eb91461025357806318160ddd1461027b57806323b872dd146102a5578063313ce567146102e1576101c1565b806306fdde03146101c557806307056d37146101ef578063095ea7b314610217576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610637565b6040516101e69190612370565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906123c7565b610674565b005b348015610222575f80fd5b5061023d6004803603810190610238919061245f565b61071a565b60405161024a91906124b7565b60405180910390f35b34801561025e575f80fd5b50610279600480360381019061027491906124d0565b610737565b005b348015610286575f80fd5b5061028f6107ed565b60405161029c919061250a565b60405180910390f35b3480156102b0575f80fd5b506102cb60048036038101906102c69190612523565b610810565b6040516102d891906124b7565b60405180910390f35b3480156102ec575f80fd5b506102f5610901565b604051610302919061258e565b60405180910390f35b348015610316575f80fd5b5061031f610909565b60405161032c91906125b6565b60405180910390f35b348015610340575f80fd5b5061034961092e565b604051610356919061250a565b60405180910390f35b34801561036a575f80fd5b50610385600480360381019061038091906124d0565b610934565b005b348015610392575f80fd5b506103ad60048036038101906103a891906125cf565b610a61565b6040516103ba919061250a565b60405180910390f35b3480156103ce575f80fd5b506103d7610aa7565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa919061245f565b610bf5565b005b34801561040c575f80fd5b50610415610d72565b604051610422919061250a565b60405180910390f35b348015610436575f80fd5b5061043f610d78565b60405161044c91906125b6565b60405180910390f35b348015610460575f80fd5b50610469610d9f565b6040516104769190612370565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a0919061245f565b610ddc565b6040516104b291906124b7565b60405180910390f35b3480156104c6575f80fd5b506104cf610df9565b6040516104dc919061250a565b60405180910390f35b3480156104f0575f80fd5b5061050b60048036038101906105069190612624565b610dff565b005b610515610eeb565b005b348015610522575f80fd5b5061053d600480360381019061053891906123c7565b611081565b005b34801561054a575f80fd5b50610553611157565b005b348015610560575f80fd5b5061056961120f565b604051610576919061250a565b60405180910390f35b34801561058a575f80fd5b50610593611215565b005b3480156105a0575f80fd5b506105a96112d6565b005b3480156105b6575f80fd5b506105d160048036038101906105cc9190612662565b6113b2565b6040516105de919061250a565b60405180910390f35b3480156105f2575f80fd5b5061060d600480360381019061060891906124d0565b611434565b005b34801561061a575f80fd5b50610635600480360381019061063091906125cf565b611520565b005b60606040518060400160405280600781526020017f4574686172696f00000000000000000000000000000000000000000000000000815250905090565b61067c611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ff906126ea565b60405180910390fd5b81600781905550806008819055505050565b5f61072d610726611670565b8484611677565b6001905092915050565b61073f611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c2906126ea565b60405180910390fd5b6009600a6107d99190612864565b816107e491906128ae565b60068190555050565b5f6009600a6107fc9190612864565b6305f5e10061080b91906128ae565b905090565b5f61081c848484611805565b6108f684610828611670565b6108f1856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e63650000000000000000000000000000000000000081525060025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a8611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e249092919063ffffffff16565b611677565b600190509392505050565b5f6009905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b61093c611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf906126ea565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead6009600a6109f59190612864565b84610a0091906128ae565b6040518363ffffffff1660e01b8152600401610a1d9291906128ef565b6020604051808303815f875af1158015610a39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d919061292a565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aaf611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b32906126ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4e575f80fd5b5f8103610cd0578173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c8e91906125b6565b602060405180830381865afa158015610ca9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccd9190612969565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d2d9291906129ef565b6020604051808303815f875af1158015610d49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6d919061292a565b505050565b60055481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4554484152494f00000000000000000000000000000000000000000000000000815250905090565b5f610def610de8611670565b8484611805565b6001905092915050565b60045481565b610e07611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906126ea565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610ef3611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906126ea565b60405180910390fd5b610fc73060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fb39190612864565b6305f5e100610fc291906128ae565b611677565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061100f30610a61565b5f80611019610d78565b426040518863ffffffff1660e01b815260040161103b96959493929190612a4f565b60606040518083038185885af1158015611057573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061107c9190612aae565b505050565b611089611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c906126ea565b60405180910390fd5b6009600a6111239190612864565b8261112e91906128ae565b6004819055506009600a6111429190612864565b8161114d91906128ae565b6005819055505050565b61115f611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906126ea565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555043600b81905550565b60085481565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126e575f80fd5b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156112d3573d5f803e3d5ffd5b50565b6112de611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611361906126ea565b60405180910390fd5b6009600a6113789190612864565b6305f5e10061138791906128ae565b6004819055506009600a61139b9190612864565b6305f5e1006113aa91906128ae565b600581905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61143c611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf906126ea565b60405180910390fd5b5f61150e6114d530610a61565b8360646009600a6114e69190612864565b6305f5e1006114f591906128ae565b6114ff9190612b2b565b61150991906128ae565b611e86565b915081905061151c81611e9e565b5050565b611528611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906126ea565b60405180910390fd5b5f60035f6115c0610d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061161881612129565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116df57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590612ba5565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117f8919061250a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a90612c0d565b60405180910390fd5b5f81116118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ac90612c75565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611954575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b8357600a60149054906101000a900460ff16611971575f80fd5b6005548211156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90612cdd565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a6c5760045482611a1785610a61565b611a219190612cfb565b1115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990612d78565b60405180910390fd5b6007549050611b82565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b815760085490505f611acf30610a61565b9050600260646009600a611ae39190612864565b6305f5e100611af291906128ae565b611afc9190612b2b565b611b069190612b2b565b81118015611b205750600f5f9054906101000a900460ff16155b15611b7f57600c54431115611b37575f600d819055505b6003600d541015611b7e57600d5f815480929190611b5490612d96565b919050555043600c81905550611b7d611b78600654611b738685611e86565b611e86565b611e9e565b5b5b505b5b5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bcc9190612ddd565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f811115611d2f575f60648284611c2491906128ae565b611c2e9190612b2b565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c799190612cfb565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508083611cc69190612ddd565b92503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d25919061250a565b60405180910390a3505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d789190612cfb565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e16919061250a565b60405180910390a350505050565b5f838311158290611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e629190612370565b60405180910390fd5b505f8385611e799190612ddd565b9050809150509392505050565b5f818311611e945782611e96565b815b905092915050565b6001600f5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ed457611ed3612e10565b5b604051908082528060200260200182016040528015611f025781602001602082028036833780820191505090505b50905030815f81518110611f1957611f18612e3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe19190612e7e565b81600181518110611ff557611ff4612e3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205b3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611677565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f84600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016120df959493929190612f60565b5f604051808303815f87803b1580156120f6575f80fd5b505af1158015612108573d5f803e3d5ffd5b50505050505f600f5f6101000a81548160ff02191690831515021790555050565b612131611670565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b4906126ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290613002565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561231d578082015181840152602081019050612302565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612342826122e6565b61234c81856122f0565b935061235c818560208601612300565b61236581612328565b840191505092915050565b5f6020820190508181035f8301526123888184612338565b905092915050565b5f80fd5b5f819050919050565b6123a681612394565b81146123b0575f80fd5b50565b5f813590506123c18161239d565b92915050565b5f80604083850312156123dd576123dc612390565b5b5f6123ea858286016123b3565b92505060206123fb858286016123b3565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61242e82612405565b9050919050565b61243e81612424565b8114612448575f80fd5b50565b5f8135905061245981612435565b92915050565b5f806040838503121561247557612474612390565b5b5f6124828582860161244b565b9250506020612493858286016123b3565b9150509250929050565b5f8115159050919050565b6124b18161249d565b82525050565b5f6020820190506124ca5f8301846124a8565b92915050565b5f602082840312156124e5576124e4612390565b5b5f6124f2848285016123b3565b91505092915050565b61250481612394565b82525050565b5f60208201905061251d5f8301846124fb565b92915050565b5f805f6060848603121561253a57612539612390565b5b5f6125478682870161244b565b93505060206125588682870161244b565b9250506040612569868287016123b3565b9150509250925092565b5f60ff82169050919050565b61258881612573565b82525050565b5f6020820190506125a15f83018461257f565b92915050565b6125b081612424565b82525050565b5f6020820190506125c95f8301846125a7565b92915050565b5f602082840312156125e4576125e3612390565b5b5f6125f18482850161244b565b91505092915050565b6126038161249d565b811461260d575f80fd5b50565b5f8135905061261e816125fa565b92915050565b5f806040838503121561263a57612639612390565b5b5f6126478582860161244b565b925050602061265885828601612610565b9150509250929050565b5f806040838503121561267857612677612390565b5b5f6126858582860161244b565b92505060206126968582860161244b565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f6126d46017836122f0565b91506126df826126a0565b602082019050919050565b5f6020820190508181035f830152612701816126c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561278a5780860481111561276657612765612708565b5b60018516156127755780820291505b808102905061278385612735565b945061274a565b94509492505050565b5f826127a2576001905061285d565b816127af575f905061285d565b81600181146127c557600281146127cf576127fe565b600191505061285d565b60ff8411156127e1576127e0612708565b5b8360020a9150848211156127f8576127f7612708565b5b5061285d565b5060208310610133831016604e8410600b84101617156128335782820a90508381111561282e5761282d612708565b5b61285d565b6128408484846001612741565b9250905081840481111561285757612856612708565b5b81810290505b9392505050565b5f61286e82612394565b915061287983612573565b92506128a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612793565b905092915050565b5f6128b882612394565b91506128c383612394565b92508282026128d181612394565b915082820484148315176128e8576128e7612708565b5b5092915050565b5f6040820190506129025f8301856125a7565b61290f60208301846124fb565b9392505050565b5f81519050612924816125fa565b92915050565b5f6020828403121561293f5761293e612390565b5b5f61294c84828501612916565b91505092915050565b5f815190506129638161239d565b92915050565b5f6020828403121561297e5761297d612390565b5b5f61298b84828501612955565b91505092915050565b5f819050919050565b5f6129b76129b26129ad84612405565b612994565b612405565b9050919050565b5f6129c88261299d565b9050919050565b5f6129d9826129be565b9050919050565b6129e9816129cf565b82525050565b5f604082019050612a025f8301856129e0565b612a0f60208301846124fb565b9392505050565b5f819050919050565b5f612a39612a34612a2f84612a16565b612994565b612394565b9050919050565b612a4981612a1f565b82525050565b5f60c082019050612a625f8301896125a7565b612a6f60208301886124fb565b612a7c6040830187612a40565b612a896060830186612a40565b612a9660808301856125a7565b612aa360a08301846124fb565b979650505050505050565b5f805f60608486031215612ac557612ac4612390565b5b5f612ad286828701612955565b9350506020612ae386828701612955565b9250506040612af486828701612955565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b3582612394565b9150612b4083612394565b925082612b5057612b4f612afe565b5b828204905092915050565b7f617070726f7665207a65726f20616464726573730000000000000000000000005f82015250565b5f612b8f6014836122f0565b9150612b9a82612b5b565b602082019050919050565b5f6020820190508181035f830152612bbc81612b83565b9050919050565b7f7472616e73666572207a65726f206164647265737300000000000000000000005f82015250565b5f612bf76015836122f0565b9150612c0282612bc3565b602082019050919050565b5f6020820190508181035f830152612c2481612beb565b9050919050565b7f7472616e73666572207a65726f20616d6f756e740000000000000000000000005f82015250565b5f612c5f6014836122f0565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b7f4f766572204d61785478206c696d6974000000000000000000000000000000005f82015250565b5f612cc76010836122f0565b9150612cd282612c93565b602082019050919050565b5f6020820190508181035f830152612cf481612cbb565b9050919050565b5f612d0582612394565b9150612d1083612394565b9250828201905080821115612d2857612d27612708565b5b92915050565b7f4f766572204d617857616c6c6574206c696d69740000000000000000000000005f82015250565b5f612d626014836122f0565b9150612d6d82612d2e565b602082019050919050565b5f6020820190508181035f830152612d8f81612d56565b9050919050565b5f612da082612394565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dd257612dd1612708565b5b600182019050919050565b5f612de782612394565b9150612df283612394565b9250828203905081811115612e0a57612e09612708565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612e7881612435565b92915050565b5f60208284031215612e9357612e92612390565b5b5f612ea084828501612e6a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612edb81612424565b82525050565b5f612eec8383612ed2565b60208301905092915050565b5f602082019050919050565b5f612f0e82612ea9565b612f188185612eb3565b9350612f2383612ec3565b805f5b83811015612f53578151612f3a8882612ee1565b9750612f4583612ef8565b925050600181019050612f26565b5085935050505092915050565b5f60a082019050612f735f8301886124fb565b612f806020830187612a40565b8181036040830152612f928186612f04565b9050612fa160608301856129e0565b612fae60808301846124fb565b9695505050505050565b7f6e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f612fec601d836122f0565b9150612ff782612fb8565b602082019050919050565b5f6020820190508181035f83015261301981612fe0565b905091905056fea2646970667358221220f0c04f68887fc36a5196caaeacb64021b60f889a0cfd0eda2c2727d8c08ffc7464736f6c63430008170033

Deployed Bytecode Sourcemap

3293:7944:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5135:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9203:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5969:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9714:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5412:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6137:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5321:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4155:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4037:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10606:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5520:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1725:148;;;;;;;;;;;;;:::i;:::-;;10232:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3843:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1277:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5226:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5646:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3781:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9353:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10929:268;;;:::i;:::-;;9839:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6701:111;;;;;;;;;;;;;:::i;:::-;;4070:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10790:131;;;;;;;;;;;;;:::i;:::-;;10063:132;;;;;;;;;;;;;:::i;:::-;;5819:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9496:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8982:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5135:83;5172:13;5205:5;;;;;;;;;;;;;;;;;5198:12;;5135:83;:::o;9203:142::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9297:9:::1;9288:6;:18;;;;9327:10;9317:7;:20;;;;9203:142:::0;;:::o;5969:160::-;6044:4;6060:39;6069:12;:10;:12::i;:::-;6083:7;6092:6;6060:8;:39::i;:::-;6117:4;6110:11;;5969:160;;;;:::o;9714:117::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3595:1:::1;9810:2;:13;;;;:::i;:::-;9797:10;:26;;;;:::i;:::-;9785:9;:38;;;;9714:117:::0;:::o;5412:100::-;5465:7;3595:1;3761:2;:13;;;;:::i;:::-;3749:9;:25;;;;:::i;:::-;5485:19;;5412:100;:::o;6137:283::-;6235:4;6252:36;6262:6;6270:9;6281:6;6252:9;:36::i;:::-;6299:91;6308:6;6315:12;:10;:12::i;:::-;6328:61;6366:6;6328:61;;;;;;;;;;;;;;;;;:11;:19;6340:6;6328:19;;;;;;;;;;;;;;;:33;6348:12;:10;:12::i;:::-;6328:33;;;;;;;;;;;;;;;;:37;;:61;;;;;:::i;:::-;6299:8;:91::i;:::-;6408:4;6401:11;;6137:283;;;;;:::o;5321:83::-;5362:5;3595:1;5380:16;;5321:83;:::o;4155:28::-;;;;;;;;;;;;;:::o;4037:26::-;;;;:::o;10606:176::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10690:4:::1;10675:30;;;10706:42;3595:1;10760:2;:13;;;;:::i;:::-;10750:7;:23;;;;:::i;:::-;10675:99;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10606:176:::0;:::o;5520:118::-;5586:7;5613:8;:17;5622:7;5613:17;;;;;;;;;;;;;;;;5606:24;;5520:118;;;:::o;1725:148::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;1832:1:::1;1795:40;;1816:6;::::0;::::1;;;;;;;;1795:40;;;;;;;;;;;;1863:1;1846:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1725:148::o:0;10232:290::-;10338:8;;;;;;;;;;;10324:22;;:10;:22;;;10316:31;;;;;;10372:1;10361:7;:12;10358:98;;10406:12;10399:30;;;10438:4;10399:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10389:55;;10358:98;10473:12;10466:29;;;10496:8;;;;;;;;;;;10506:7;10466:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10232:290;;:::o;3843:51::-;;;;:::o;1277:79::-;1315:7;1342:6;;;;;;;;;;;1335:13;;1277:79;:::o;5226:87::-;5265:13;5298:7;;;;;;;;;;;;;;;;;5291:14;;5226:87;:::o;5646:165::-;5723:4;5739:42;5749:12;:10;:12::i;:::-;5763:9;5774:6;5739:9;:42::i;:::-;5799:4;5792:11;;5646:165;;;;:::o;3781:55::-;;;;:::o;9353:135::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9473:7:::1;9443:17;:27;9461:8;9443:27;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9353:135:::0;;:::o;10929:268::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10986:63:::1;11003:4;11018:15;;;;;;;;;;;3595:1;3761:2;:13;;;;:::i;:::-;3749:9;:25;;;;:::i;:::-;10986:8;:63::i;:::-;11060:15;;;;;;;;;;;:31;;;11099:21;11130:4;11136:24;11154:4;11136:9;:24::i;:::-;11161:1;11163::::0;11165:7:::1;:5;:7::i;:::-;11173:15;11060:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10929:268::o:0;9839:216::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3595:1:::1;9979:2;:13;;;;:::i;:::-;9958:18;:34;;;;:::i;:::-;9940:15;:52;;;;3595:1;10034:2;:13;;;;:::i;:::-;10017:14;:30;;;;:::i;:::-;10003:11;:44;;;;9839:216:::0;;:::o;6701:111::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6763:4:::1;6754:6;;:13;;;;;;;;;;;;;;;;;;6792:12;6778:11;:26;;;;6701:111::o:0;4070:27::-;;;;:::o;10790:131::-;10853:8;;;;;;;;;;;10839:22;;:10;:22;;;10831:31;;;;;;10873:8;;;;;;;;;;;:17;;:40;10891:21;10873:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10790:131::o;10063:132::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3595:1:::1;3761:2;:13;;;;:::i;:::-;3749:9;:25;;;;:::i;:::-;10120:15;:30;;;;3595:1;3761:2;:13;;;;:::i;:::-;3749:9;:25;;;;:::i;:::-;10161:11;:26;;;;10063:132::o:0;5819:142::-;5900:7;5926:11;:18;5938:5;5926:18;;;;;;;;;;;;;;;:27;5945:7;5926:27;;;;;;;;;;;;;;;;5919:34;;5819:142;;;;:::o;9496:210::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9566:14:::1;9599:67;9603:24;9621:4;9603:9;:24::i;:::-;9651:13;9645:3;3595:1;3761:2;:13;;;;:::i;:::-;3749:9;:25;;;;:::i;:::-;9630:18;;;;:::i;:::-;:34;;;;:::i;:::-;9599:3;:67::i;:::-;9583:83;;;9566:100;;9677:21;9691:6;9677:13;:21::i;:::-;9555:151;9496:210:::0;:::o;8982:213::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9093:5:::1;9064:17;:26;9082:7;:5;:7::i;:::-;9064:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9109:33;9133:8;9109:23;:33::i;:::-;9183:4;9153:17;:27;9171:8;9153:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8982:213:::0;:::o;475:98::-;528:7;555:10;548:17;;475:98;:::o;6428:265::-;6538:1;6521:19;;:5;:19;;;;:44;;;;;6563:1;6544:21;;:7;:21;;;;6521:44;6513:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;6631:6;6601:11;:18;6613:5;6601:18;;;;;;;;;;;;;;;:27;6620:7;6601:27;;;;;;;;;;;;;;;:36;;;;6669:7;6653:32;;6662:5;6653:32;;;6678:6;6653:32;;;;;;:::i;:::-;;;;;;;;6428:265;;;:::o;6820:1645::-;6924:1;6908:18;;:4;:18;;;6900:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6980:1;6971:6;:10;6963:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7017:12;7050:17;:23;7068:4;7050:23;;;;;;;;;;;;;;;;;;;;;;;;;7049:24;:50;;;;;7078:17;:21;7096:2;7078:21;;;;;;;;;;;;;;;;;;;;;;;;;7077:22;7049:50;7046:1000;;;7152:6;;;;;;;;;;;7144:15;;;;;;7192:11;;7182:6;:21;;7174:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7251:13;;;;;;;;;;;7243:21;;:4;:21;;;7239:796;;7343:15;;7333:6;7317:13;7327:2;7317:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;7309:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7409:6;;7402:13;;7239:796;;;7447:13;;;;;;;;;;;7441:19;;:2;:19;;;7437:598;;7513:7;;7506:14;;7539:18;7560:24;7578:4;7560:9;:24::i;:::-;7539:45;;3959:1;3953:3;3595:1;3761:2;:13;;;;:::i;:::-;3749:9;:25;;;;:::i;:::-;3938:18;;;;:::i;:::-;:22;;;;:::i;:::-;7607:10;:22;:33;;;;;7634:6;;;;;;;;;;;7633:7;7607:33;7603:417;;;7684:13;;7669:12;:28;7665:98;;;7738:1;7726:9;:13;;;;7665:98;7801:1;7789:9;;:13;7785:216;;;7830:9;;:11;;;;;;;;;:::i;:::-;;;;;;7884:12;7868:13;:28;;;;7923:54;7937:39;7941:9;;7952:23;7956:6;7964:10;7952:3;:23::i;:::-;7937:3;:39::i;:::-;7923:13;:54::i;:::-;7785:216;7603:417;7462:573;7437:598;7239:796;7046:1000;8090:6;8073:8;:14;8082:4;8073:14;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;8056:8;:14;8065:4;8056:14;;;;;;;;;;;;;;;:40;;;;8119:1;8112:4;:8;8109:258;;;8136:17;8174:3;8166:4;8157:6;:13;;;;:::i;:::-;8156:21;;;;:::i;:::-;8136:41;;8244:9;8218:8;:23;8235:4;8218:23;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;8192:8;:23;8209:4;8192:23;;;;;;;;;;;;;;;:61;;;;8286:9;8277:6;:18;;;;:::i;:::-;8268:27;;8338:4;8315:40;;8324:4;8315:40;;;8345:9;8315:40;;;;;;:::i;:::-;;;;;;;;8121:246;8109:258;8409:6;8394:8;:12;8403:2;8394:12;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;8379:8;:12;8388:2;8379:12;;;;;;;;;;;;;;;:36;;;;8446:2;8431:26;;8440:4;8431:26;;;8450:6;8431:26;;;;;;:::i;:::-;;;;;;;;6889:1576;6820:1645;;;:::o;738:190::-;824:7;857:1;852;:6;;860:12;844:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;884:9;900:1;896;:5;;;;:::i;:::-;884:17;;919:1;912:8;;;738:190;;;;;:::o;8473:98::-;8530:7;8557:1;8555;:3;8554:9;;8562:1;8554:9;;;8560:1;8554:9;8547:16;;8473:98;;;;:::o;8579:395::-;4428:4;4419:6;;:13;;;;;;;;;;;;;;;;;;8654:21:::1;8692:1;8678:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8654:40;;8723:4;8705;8710:1;8705:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8749:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8739:4;8744:1;8739:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;8782:62;8799:4;8814:15;;;;;;;;;;;8832:11;8782:8;:62::i;:::-;8855:15;;;;;;;;;;;:66;;;8922:11;8934:1;8936:4;8941:8;;;;;;;;;;;8950:15;8855:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8643:331;4464:5:::0;4455:6;;:14;;;;;;;;;;;;;;;;;;8579:395;:::o;1482:235::-;1414:12;:10;:12::i;:::-;1404:22;;:6;;;;;;;;;;:22;;;1396:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;1591:1:::1;1571:22;;:8;:22;;::::0;1563:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1647:8;1638:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1700:8;1671:38;;1692:6;::::0;::::1;;;;;;;;1671:38;;;;;;;;;;;;1482:235:::0;:::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;1430:117::-;1539:1;1536;1529:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:474::-;2100:6;2108;2157:2;2145:9;2136:7;2132:23;2128:32;2125:119;;;2163:79;;:::i;:::-;2125:119;2283:1;2308:53;2353:7;2344:6;2333:9;2329:22;2308:53;:::i;:::-;2298:63;;2254:117;2410:2;2436:53;2481:7;2472:6;2461:9;2457:22;2436:53;:::i;:::-;2426:63;;2381:118;2032:474;;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:118::-;4348:24;4366:5;4348:24;:::i;:::-;4343:3;4336:37;4261:118;;:::o;4385:222::-;4478:4;4516:2;4505:9;4501:18;4493:26;;4529:71;4597:1;4586:9;4582:17;4573:6;4529:71;:::i;:::-;4385:222;;;;:::o;4613:619::-;4690:6;4698;4706;4755:2;4743:9;4734:7;4730:23;4726:32;4723:119;;;4761:79;;:::i;:::-;4723:119;4881:1;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4852:117;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;5136:2;5162:53;5207:7;5198:6;5187:9;5183:22;5162:53;:::i;:::-;5152:63;;5107:118;4613:619;;;;;:::o;5238:86::-;5273:7;5313:4;5306:5;5302:16;5291:27;;5238:86;;;:::o;5330:112::-;5413:22;5429:5;5413:22;:::i;:::-;5408:3;5401:35;5330:112;;:::o;5448:214::-;5537:4;5575:2;5564:9;5560:18;5552:26;;5588:67;5652:1;5641:9;5637:17;5628:6;5588:67;:::i;:::-;5448:214;;;;:::o;5668:118::-;5755:24;5773:5;5755:24;:::i;:::-;5750:3;5743:37;5668:118;;:::o;5792:222::-;5885:4;5923:2;5912:9;5908:18;5900:26;;5936:71;6004:1;5993:9;5989:17;5980:6;5936:71;:::i;:::-;5792:222;;;;:::o;6020:329::-;6079:6;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6020:329;;;;:::o;6355:116::-;6425:21;6440:5;6425:21;:::i;:::-;6418:5;6415:32;6405:60;;6461:1;6458;6451:12;6405:60;6355:116;:::o;6477:133::-;6520:5;6558:6;6545:20;6536:29;;6574:30;6598:5;6574:30;:::i;:::-;6477:133;;;;:::o;6616:468::-;6681:6;6689;6738:2;6726:9;6717:7;6713:23;6709:32;6706:119;;;6744:79;;:::i;:::-;6706:119;6864:1;6889:53;6934:7;6925:6;6914:9;6910:22;6889:53;:::i;:::-;6879:63;;6835:117;6991:2;7017:50;7059:7;7050:6;7039:9;7035:22;7017:50;:::i;:::-;7007:60;;6962:115;6616:468;;;;;:::o;7090:474::-;7158:6;7166;7215:2;7203:9;7194:7;7190:23;7186:32;7183:119;;;7221:79;;:::i;:::-;7183:119;7341:1;7366:53;7411:7;7402:6;7391:9;7387:22;7366:53;:::i;:::-;7356:63;;7312:117;7468:2;7494:53;7539:7;7530:6;7519:9;7515:22;7494:53;:::i;:::-;7484:63;;7439:118;7090:474;;;;;:::o;7570:173::-;7710:25;7706:1;7698:6;7694:14;7687:49;7570:173;:::o;7749:366::-;7891:3;7912:67;7976:2;7971:3;7912:67;:::i;:::-;7905:74;;7988:93;8077:3;7988:93;:::i;:::-;8106:2;8101:3;8097:12;8090:19;;7749:366;;;:::o;8121:419::-;8287:4;8325:2;8314:9;8310:18;8302:26;;8374:9;8368:4;8364:20;8360:1;8349:9;8345:17;8338:47;8402:131;8528:4;8402:131;:::i;:::-;8394:139;;8121:419;;;:::o;8546:180::-;8594:77;8591:1;8584:88;8691:4;8688:1;8681:15;8715:4;8712:1;8705:15;8732:102;8774:8;8821:5;8818:1;8814:13;8793:34;;8732:102;;;:::o;8840:848::-;8901:5;8908:4;8932:6;8923:15;;8956:5;8947:14;;8970:712;8991:1;8981:8;8978:15;8970:712;;;9086:4;9081:3;9077:14;9071:4;9068:24;9065:50;;;9095:18;;:::i;:::-;9065:50;9145:1;9135:8;9131:16;9128:451;;;9560:4;9553:5;9549:16;9540:25;;9128:451;9610:4;9604;9600:15;9592:23;;9640:32;9663:8;9640:32;:::i;:::-;9628:44;;8970:712;;;8840:848;;;;;;;:::o;9694:1073::-;9748:5;9939:8;9929:40;;9960:1;9951:10;;9962:5;;9929:40;9988:4;9978:36;;10005:1;9996:10;;10007:5;;9978:36;10074:4;10122:1;10117:27;;;;10158:1;10153:191;;;;10067:277;;10117:27;10135:1;10126:10;;10137:5;;;10153:191;10198:3;10188:8;10185:17;10182:43;;;10205:18;;:::i;:::-;10182:43;10254:8;10251:1;10247:16;10238:25;;10289:3;10282:5;10279:14;10276:40;;;10296:18;;:::i;:::-;10276:40;10329:5;;;10067:277;;10453:2;10443:8;10440:16;10434:3;10428:4;10425:13;10421:36;10403:2;10393:8;10390:16;10385:2;10379:4;10376:12;10372:35;10356:111;10353:246;;;10509:8;10503:4;10499:19;10490:28;;10544:3;10537:5;10534:14;10531:40;;;10551:18;;:::i;:::-;10531:40;10584:5;;10353:246;10624:42;10662:3;10652:8;10646:4;10643:1;10624:42;:::i;:::-;10609:57;;;;10698:4;10693:3;10689:14;10682:5;10679:25;10676:51;;;10707:18;;:::i;:::-;10676:51;10756:4;10749:5;10745:16;10736:25;;9694:1073;;;;;;:::o;10773:281::-;10831:5;10855:23;10873:4;10855:23;:::i;:::-;10847:31;;10899:25;10915:8;10899:25;:::i;:::-;10887:37;;10943:104;10980:66;10970:8;10964:4;10943:104;:::i;:::-;10934:113;;10773:281;;;;:::o;11060:410::-;11100:7;11123:20;11141:1;11123:20;:::i;:::-;11118:25;;11157:20;11175:1;11157:20;:::i;:::-;11152:25;;11212:1;11209;11205:9;11234:30;11252:11;11234:30;:::i;:::-;11223:41;;11413:1;11404:7;11400:15;11397:1;11394:22;11374:1;11367:9;11347:83;11324:139;;11443:18;;:::i;:::-;11324:139;11108:362;11060:410;;;;:::o;11476:332::-;11597:4;11635:2;11624:9;11620:18;11612:26;;11648:71;11716:1;11705:9;11701:17;11692:6;11648:71;:::i;:::-;11729:72;11797:2;11786:9;11782:18;11773:6;11729:72;:::i;:::-;11476:332;;;;;:::o;11814:137::-;11868:5;11899:6;11893:13;11884:22;;11915:30;11939:5;11915:30;:::i;:::-;11814:137;;;;:::o;11957:345::-;12024:6;12073:2;12061:9;12052:7;12048:23;12044:32;12041:119;;;12079:79;;:::i;:::-;12041:119;12199:1;12224:61;12277:7;12268:6;12257:9;12253:22;12224:61;:::i;:::-;12214:71;;12170:125;11957:345;;;;:::o;12308:143::-;12365:5;12396:6;12390:13;12381:22;;12412:33;12439:5;12412:33;:::i;:::-;12308:143;;;;:::o;12457:351::-;12527:6;12576:2;12564:9;12555:7;12551:23;12547:32;12544:119;;;12582:79;;:::i;:::-;12544:119;12702:1;12727:64;12783:7;12774:6;12763:9;12759:22;12727:64;:::i;:::-;12717:74;;12673:128;12457:351;;;;:::o;12814:60::-;12842:3;12863:5;12856:12;;12814:60;;;:::o;12880:142::-;12930:9;12963:53;12981:34;12990:24;13008:5;12990:24;:::i;:::-;12981:34;:::i;:::-;12963:53;:::i;:::-;12950:66;;12880:142;;;:::o;13028:126::-;13078:9;13111:37;13142:5;13111:37;:::i;:::-;13098:50;;13028:126;;;:::o;13160:134::-;13218:9;13251:37;13282:5;13251:37;:::i;:::-;13238:50;;13160:134;;;:::o;13300:147::-;13395:45;13434:5;13395:45;:::i;:::-;13390:3;13383:58;13300:147;;:::o;13453:348::-;13582:4;13620:2;13609:9;13605:18;13597:26;;13633:79;13709:1;13698:9;13694:17;13685:6;13633:79;:::i;:::-;13722:72;13790:2;13779:9;13775:18;13766:6;13722:72;:::i;:::-;13453:348;;;;;:::o;13807:85::-;13852:7;13881:5;13870:16;;13807:85;;;:::o;13898:158::-;13956:9;13989:61;14007:42;14016:32;14042:5;14016:32;:::i;:::-;14007:42;:::i;:::-;13989:61;:::i;:::-;13976:74;;13898:158;;;:::o;14062:147::-;14157:45;14196:5;14157:45;:::i;:::-;14152:3;14145:58;14062:147;;:::o;14215:807::-;14464:4;14502:3;14491:9;14487:19;14479:27;;14516:71;14584:1;14573:9;14569:17;14560:6;14516:71;:::i;:::-;14597:72;14665:2;14654:9;14650:18;14641:6;14597:72;:::i;:::-;14679:80;14755:2;14744:9;14740:18;14731:6;14679:80;:::i;:::-;14769;14845:2;14834:9;14830:18;14821:6;14769:80;:::i;:::-;14859:73;14927:3;14916:9;14912:19;14903:6;14859:73;:::i;:::-;14942;15010:3;14999:9;14995:19;14986:6;14942:73;:::i;:::-;14215:807;;;;;;;;;:::o;15028:663::-;15116:6;15124;15132;15181:2;15169:9;15160:7;15156:23;15152:32;15149:119;;;15187:79;;:::i;:::-;15149:119;15307:1;15332:64;15388:7;15379:6;15368:9;15364:22;15332:64;:::i;:::-;15322:74;;15278:128;15445:2;15471:64;15527:7;15518:6;15507:9;15503:22;15471:64;:::i;:::-;15461:74;;15416:129;15584:2;15610:64;15666:7;15657:6;15646:9;15642:22;15610:64;:::i;:::-;15600:74;;15555:129;15028:663;;;;;:::o;15697:180::-;15745:77;15742:1;15735:88;15842:4;15839:1;15832:15;15866:4;15863:1;15856:15;15883:185;15923:1;15940:20;15958:1;15940:20;:::i;:::-;15935:25;;15974:20;15992:1;15974:20;:::i;:::-;15969:25;;16013:1;16003:35;;16018:18;;:::i;:::-;16003:35;16060:1;16057;16053:9;16048:14;;15883:185;;;;:::o;16074:170::-;16214:22;16210:1;16202:6;16198:14;16191:46;16074:170;:::o;16250:366::-;16392:3;16413:67;16477:2;16472:3;16413:67;:::i;:::-;16406:74;;16489:93;16578:3;16489:93;:::i;:::-;16607:2;16602:3;16598:12;16591:19;;16250:366;;;:::o;16622:419::-;16788:4;16826:2;16815:9;16811:18;16803:26;;16875:9;16869:4;16865:20;16861:1;16850:9;16846:17;16839:47;16903:131;17029:4;16903:131;:::i;:::-;16895:139;;16622:419;;;:::o;17047:171::-;17187:23;17183:1;17175:6;17171:14;17164:47;17047:171;:::o;17224:366::-;17366:3;17387:67;17451:2;17446:3;17387:67;:::i;:::-;17380:74;;17463:93;17552:3;17463:93;:::i;:::-;17581:2;17576:3;17572:12;17565:19;;17224:366;;;:::o;17596:419::-;17762:4;17800:2;17789:9;17785:18;17777:26;;17849:9;17843:4;17839:20;17835:1;17824:9;17820:17;17813:47;17877:131;18003:4;17877:131;:::i;:::-;17869:139;;17596:419;;;:::o;18021:170::-;18161:22;18157:1;18149:6;18145:14;18138:46;18021:170;:::o;18197:366::-;18339:3;18360:67;18424:2;18419:3;18360:67;:::i;:::-;18353:74;;18436:93;18525:3;18436:93;:::i;:::-;18554:2;18549:3;18545:12;18538:19;;18197:366;;;:::o;18569:419::-;18735:4;18773:2;18762:9;18758:18;18750:26;;18822:9;18816:4;18812:20;18808:1;18797:9;18793:17;18786:47;18850:131;18976:4;18850:131;:::i;:::-;18842:139;;18569:419;;;:::o;18994:166::-;19134:18;19130:1;19122:6;19118:14;19111:42;18994:166;:::o;19166:366::-;19308:3;19329:67;19393:2;19388:3;19329:67;:::i;:::-;19322:74;;19405:93;19494:3;19405:93;:::i;:::-;19523:2;19518:3;19514:12;19507:19;;19166:366;;;:::o;19538:419::-;19704:4;19742:2;19731:9;19727:18;19719:26;;19791:9;19785:4;19781:20;19777:1;19766:9;19762:17;19755:47;19819:131;19945:4;19819:131;:::i;:::-;19811:139;;19538:419;;;:::o;19963:191::-;20003:3;20022:20;20040:1;20022:20;:::i;:::-;20017:25;;20056:20;20074:1;20056:20;:::i;:::-;20051:25;;20099:1;20096;20092:9;20085:16;;20120:3;20117:1;20114:10;20111:36;;;20127:18;;:::i;:::-;20111:36;19963:191;;;;:::o;20160:170::-;20300:22;20296:1;20288:6;20284:14;20277:46;20160:170;:::o;20336:366::-;20478:3;20499:67;20563:2;20558:3;20499:67;:::i;:::-;20492:74;;20575:93;20664:3;20575:93;:::i;:::-;20693:2;20688:3;20684:12;20677:19;;20336:366;;;:::o;20708:419::-;20874:4;20912:2;20901:9;20897:18;20889:26;;20961:9;20955:4;20951:20;20947:1;20936:9;20932:17;20925:47;20989:131;21115:4;20989:131;:::i;:::-;20981:139;;20708:419;;;:::o;21133:233::-;21172:3;21195:24;21213:5;21195:24;:::i;:::-;21186:33;;21241:66;21234:5;21231:77;21228:103;;21311:18;;:::i;:::-;21228:103;21358:1;21351:5;21347:13;21340:20;;21133:233;;;:::o;21372:194::-;21412:4;21432:20;21450:1;21432:20;:::i;:::-;21427:25;;21466:20;21484:1;21466:20;:::i;:::-;21461:25;;21510:1;21507;21503:9;21495:17;;21534:1;21528:4;21525:11;21522:37;;;21539:18;;:::i;:::-;21522:37;21372:194;;;;:::o;21572:180::-;21620:77;21617:1;21610:88;21717:4;21714:1;21707:15;21741:4;21738:1;21731:15;21758:180;21806:77;21803:1;21796:88;21903:4;21900:1;21893:15;21927:4;21924:1;21917:15;21944:143;22001:5;22032:6;22026:13;22017:22;;22048:33;22075:5;22048:33;:::i;:::-;21944:143;;;;:::o;22093:351::-;22163:6;22212:2;22200:9;22191:7;22187:23;22183:32;22180:119;;;22218:79;;:::i;:::-;22180:119;22338:1;22363:64;22419:7;22410:6;22399:9;22395:22;22363:64;:::i;:::-;22353:74;;22309:128;22093:351;;;;:::o;22450:114::-;22517:6;22551:5;22545:12;22535:22;;22450:114;;;:::o;22570:184::-;22669:11;22703:6;22698:3;22691:19;22743:4;22738:3;22734:14;22719:29;;22570:184;;;;:::o;22760:132::-;22827:4;22850:3;22842:11;;22880:4;22875:3;22871:14;22863:22;;22760:132;;;:::o;22898:108::-;22975:24;22993:5;22975:24;:::i;:::-;22970:3;22963:37;22898:108;;:::o;23012:179::-;23081:10;23102:46;23144:3;23136:6;23102:46;:::i;:::-;23180:4;23175:3;23171:14;23157:28;;23012:179;;;;:::o;23197:113::-;23267:4;23299;23294:3;23290:14;23282:22;;23197:113;;;:::o;23346:732::-;23465:3;23494:54;23542:5;23494:54;:::i;:::-;23564:86;23643:6;23638:3;23564:86;:::i;:::-;23557:93;;23674:56;23724:5;23674:56;:::i;:::-;23753:7;23784:1;23769:284;23794:6;23791:1;23788:13;23769:284;;;23870:6;23864:13;23897:63;23956:3;23941:13;23897:63;:::i;:::-;23890:70;;23983:60;24036:6;23983:60;:::i;:::-;23973:70;;23829:224;23816:1;23813;23809:9;23804:14;;23769:284;;;23773:14;24069:3;24062:10;;23470:608;;;23346:732;;;;:::o;24084:847::-;24355:4;24393:3;24382:9;24378:19;24370:27;;24407:71;24475:1;24464:9;24460:17;24451:6;24407:71;:::i;:::-;24488:80;24564:2;24553:9;24549:18;24540:6;24488:80;:::i;:::-;24615:9;24609:4;24605:20;24600:2;24589:9;24585:18;24578:48;24643:108;24746:4;24737:6;24643:108;:::i;:::-;24635:116;;24761:80;24837:2;24826:9;24822:18;24813:6;24761:80;:::i;:::-;24851:73;24919:3;24908:9;24904:19;24895:6;24851:73;:::i;:::-;24084:847;;;;;;;;:::o;24937:179::-;25077:31;25073:1;25065:6;25061:14;25054:55;24937:179;:::o;25122:366::-;25264:3;25285:67;25349:2;25344:3;25285:67;:::i;:::-;25278:74;;25361:93;25450:3;25361:93;:::i;:::-;25479:2;25474:3;25470:12;25463:19;;25122:366;;;:::o;25494:419::-;25660:4;25698:2;25687:9;25683:18;25675:26;;25747:9;25741:4;25737:20;25733:1;25722:9;25718:17;25711:47;25775:131;25901:4;25775:131;:::i;:::-;25767:139;;25494:419;;;:::o

Swarm Source

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