ETH Price: $3,040.95 (+3.45%)

Token

Pig Inu (PIG)
 

Overview

Max Total Supply

1,000,000 PIG

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
24,921.067202131 PIG

Value
$0.00
0xa8580a72cc728a3697c817e4e3e1387ff4f0e1fa
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:
PigInu

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-11
*/

/*
https://t.me/PigInuETH
https://twitter.com/piginutoken

**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.11;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; }
    function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; }
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked { uint256 c = a + b; if(c < a) return(false, 0); return(true, c); }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked { if(b > a) return(false, 0); return(true, a - b); }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked { if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c); }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked { if(b == 0) return(false, 0); return(true, a / b); }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked { if(b == 0) return(false, 0); return(true, a % b); }
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked { require(b <= a, errorMessage); return a - b; }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked { require(b > 0, errorMessage); return a / b; }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked { require(b > 0, errorMessage); return a % b; }
    }
}

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) { owner = _owner; }
    modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; }
    function isOwner(address account) public view returns (bool) { return account == owner; }
    function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); }
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract PigInu is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Pig Inu';
    string private constant _symbol = 'PIG';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 100; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 600;
    uint256 private developmentFee = 400;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1000;
    uint256 private sellFee = 1500;
    uint256 private transferFee = 1500;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 350 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap { swapping = true; _; swapping = false; }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x385B86D5b8243e308a0e7626155eA4bDA332511F; 
    address internal constant marketing_receiver = 0x385B86D5b8243e308a0e7626155eA4bDA332511F;
    address internal constant liquidity_receiver = 0x385B86D5b8243e308a0e7626155eA4bDA332511F;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) { return _name; }
    function symbol() public pure returns (string memory) { return _symbol; }
    function decimals() public pure returns (uint8) { return _decimals; }
    function startTrading() external onlyOwner { tradingAllowed = true; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; }
    function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; }
    function isCont(address addr) internal view returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisBot(address _address, bool _enabled) external onlyOwner { isBot[_address] = _enabled; }
    function setisExempt(address _address, bool _enabled) external onlyOwner { isFeeExempt[_address] = _enabled; }
    function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; }
    function totalSupply() public view override returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0))); }
    function _maxWalletToken() public view returns (uint256) { return totalSupply() * _maxWalletPercent / denominator; }
    function _maxTxAmount() public view returns (uint256) { return totalSupply() * _maxTxAmountPercent / denominator; }
    function _maxTransferAmount() public view returns (uint256) { return totalSupply() * _maxTransferPercent / denominator; }

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1), "totalFee and sellFee cannot be more than 10%");
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]) { require(tradingAllowed, "tradingAllowed"); }
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)) {
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");
        }
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]) { swapTimes += uint256(1); }
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair) { require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); }
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)) { addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0) { payable(marketing_receiver).transfer(marketingAmt); }
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)) { payable(development_receiver).transfer(remainingBalance); }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

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

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(2) && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)) { swapAndLiquify(swapThreshold); swapTimes = uint256(0); }
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]) { return denominator.sub(uint256(100)); }
        if(recipient == pair) { return sellFee; }
        if(sender == pair) { return totalFee; }
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if(burnFee > uint256(0)) { _transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee)); }
            return amount.sub(feeAmount); 
        }   
        return amount;
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000711565b620f424062000024919062000762565b600155606460025560c860035560c86004556000600a60146101000a81548160ff0219169083151502179055506000600b55610258600c55610190600d556000600e556103e8600f556105dc6010556105dc6011556127106012556001601360006101000a81548160ff021916908315150217905550620186a061015e600154620000b0919062000762565b620000bc9190620007f2565b601655620186a0600a600154620000d4919062000762565b620000e09190620007f2565b601755348015620000f057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c0919062000894565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000228573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024e919062000894565b6040518363ffffffff1660e01b81526004016200026d929190620008d7565b6020604051808303816000875af11580156200028d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b3919062000894565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073385b86d5b8243e308a0e7626155ea4bda332511f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073385b86d5b8243e308a0e7626155ea4bda332511f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000567919062000915565b60405180910390a3505062000932565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060557808604811115620005dd57620005dc62000577565b5b6001851615620005ed5780820291505b8081029050620005fd85620005a6565b9450620005bd565b94509492505050565b600082620006205760019050620006f3565b81620006305760009050620006f3565b816001811462000649576002811462000654576200068a565b6001915050620006f3565b60ff84111562000669576200066862000577565b5b8360020a91508482111562000683576200068262000577565b5b50620006f3565b5060208310610133831016604e8410600b8410161715620006c45782820a905083811115620006be57620006bd62000577565b5b620006f3565b620006d38484846001620005b3565b92509050818404811115620006ed57620006ec62000577565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071e82620006fa565b91506200072b8362000704565b92506200075a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200060e565b905092915050565b60006200076f82620006fa565b91506200077c83620006fa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007b857620007b762000577565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007ff82620006fa565b91506200080c83620006fa565b9250826200081f576200081e620007c3565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200085c826200082f565b9050919050565b6200086e816200084f565b81146200087a57600080fd5b50565b6000815190506200088e8162000863565b92915050565b600060208284031215620008ad57620008ac6200082a565b5b6000620008bd848285016200087d565b91505092915050565b620008d1816200084f565b82525050565b6000604082019050620008ee6000830185620008c6565b620008fd6020830184620008c6565b9392505050565b6200090f81620006fa565b82525050565b60006020820190506200092c600083018462000904565b92915050565b6134b380620009426000396000f3fe6080604052600436106101395760003560e01c806348ff2b8b116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806348ff2b8b1461034e57806370a082311461037757806378109e54146103b45780637d1db4a5146103df578063893d20e81461040a57610140565b806323b872dd116100fd57806323b872dd1461022c578063293230b8146102695780632f54bf6e14610280578063313ce567146102bd57806334c5d2ce146102e85780633f4218e01461031157610140565b8063044019301461014557806306fdde031461016e578063095ea7b31461019957806318160ddd146101d65780631f976b7e1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c600480360381019061016791906124c6565b610557565b005b34801561017a57600080fd5b50610183610656565b6040516101909190612601565b60405180910390f35b3480156101a557600080fd5b506101c060048036038101906101bb9190612681565b610693565b6040516101cd91906126dc565b60405180910390f35b3480156101e257600080fd5b506101eb6106aa565b6040516101f89190612706565b60405180910390f35b34801561020d57600080fd5b506102166106eb565b6040516102239190612706565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190612721565b610714565b60405161026091906126dc565b60405180910390f35b34801561027557600080fd5b5061027e6107df565b005b34801561028c57600080fd5b506102a760048036038101906102a29190612774565b610844565b6040516102b491906126dc565b60405180910390f35b3480156102c957600080fd5b506102d261089d565b6040516102df91906127bd565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a91906127d8565b6108a6565b005b34801561031d57600080fd5b5061033860048036038101906103339190612774565b610a06565b60405161034591906126dc565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190612857565b610a26565b005b34801561038357600080fd5b5061039e60048036038101906103999190612774565b610ac9565b6040516103ab9190612706565b60405180910390f35b3480156103c057600080fd5b506103c9610b12565b6040516103d69190612706565b60405180910390f35b3480156103eb57600080fd5b506103f4610b3b565b6040516104019190612706565b60405180910390f35b34801561041657600080fd5b5061041f610b64565b60405161042c91906128a6565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190612857565b610b8d565b005b34801561046a57600080fd5b50610473610c30565b6040516104809190612601565b60405180910390f35b34801561049557600080fd5b5061049e610c6d565b6040516104ab91906128a6565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612681565b610c93565b6040516104e891906126dc565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906128c1565b610caa565b6040516105259190612706565b60405180910390f35b34801561053a57600080fd5b506105556004803603810190610550919061293f565b610d31565b005b61056033610844565b61059f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610596906129b8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506105e66001601254610df390919063ffffffff16565b600f541115801561060e57506106086001601254610df390919063ffffffff16565b60105411155b61064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490612a4a565b60405180910390fd5b50505050505050565b60606040518060400160405280600781526020017f50696720496e7500000000000000000000000000000000000000000000000000815250905090565b60006106a0338484610e09565b6001905092915050565b60006106e66106b96000610ac9565b6106d86106c761dead610ac9565b600154610fd490919063ffffffff16565b610fd490919063ffffffff16565b905090565b60006012546003546106fb6106aa565b6107059190612a99565b61070f9190612b22565b905090565b6000610721848484610fea565b6107d484336107cf8560405180606001604052806028815260200161345660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e39092919063ffffffff16565b610e09565b600190509392505050565b6107e833610844565b610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081e906129b8565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6108af33610844565b6108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e5906129b8565b60405180910390fd5b6000612710846108fc6106aa565b6109069190612a99565b6109109190612b22565b90506000612710846109206106aa565b61092a9190612a99565b6109349190612b22565b90506000612710846109446106aa565b61094e9190612a99565b6109589190612b22565b905085600281905550846003819055508360048190555060006109a06103e861099260056109846106aa565b61123890919063ffffffff16565b610df390919063ffffffff16565b90508084101580156109b25750808310155b80156109be5750808210155b6109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f490612bc5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610a2f33610844565b610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a65906129b8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610b226106aa565b610b2c9190612a99565b610b369190612b22565b905090565b6000601254600254610b4b6106aa565b610b559190612a99565b610b5f9190612b22565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b9633610844565b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906129b8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600381526020017f5049470000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ca0338484610fea565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d3a33610844565b610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d70906129b8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610de89190612c44565b60405180910390a150565b60008183610e019190612b22565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee090612d63565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fc79190612706565b60405180910390a3505050565b60008183610fe29190612d83565b905092915050565b610ff583838361124e565b610fff83836113c1565b61100a8383836114be565b611014838361169c565b61101f838383611767565b61102a8383836119a6565b61107c81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd490919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110cb84846119cf565b6110d557816110e1565b6110e0848484611a7d565b5b905061113581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111d59190612706565b60405180910390a350505050565b600083831115829061122b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112229190612601565b60405180910390fd5b5082840390509392505050565b600081836112469190612a99565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590612e29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590612ebb565b60405180910390fd5b60008111611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890612f4d565b60405180910390fd5b61137a83610ac9565b8111156113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b390612fdf565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114655750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114ba57600a60149054906101000a900460ff166114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b09061304b565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115625750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115bc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156115f6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561169757611603610b12565b61165582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2590919063ffffffff16565b1115611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906130b7565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117435750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117635760016014600082825461175b91906130d7565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118af576117c46106eb565b8111158061181b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061186f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613179565b60405180910390fd5b5b6118b7610b3b565b8111158061190e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119625750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890613179565b60405180910390fd5b505050565b6119b1838383611c3b565b156119ca576119c1601654611d74565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a755750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a8a8585611fc5565b1115611c1a576000611ac2611a9f8686611fc5565b611ab460125486610df390919063ffffffff16565b61123890919063ffffffff16565b9050611b1681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb69190612706565b60405180910390a36000600e541115611bff57611bfe3061dead611bf9600e54611beb60125489610df390919063ffffffff16565b61123890919063ffffffff16565b610fea565b5b611c128184610fd490919063ffffffff16565b915050611c1e565b8190505b9392505050565b60008183611c3391906130d7565b905092915050565b60008060175483101590506000601654611c5430610ac9565b10159050601560009054906101000a900460ff16158015611c815750601360009054906101000a900460ff165b8015611c995750600a60149054906101000a900460ff165b8015611ca25750815b8015611cf85750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d515750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d605750600260145410155b8015611d695750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611de26002611dd4600d54611dc6600c54611db86001600b54611c2590919063ffffffff16565b611c2590919063ffffffff16565b611c2590919063ffffffff16565b61123890919063ffffffff16565b90506000611e0d82611dff600b548661123890919063ffffffff16565b610df390919063ffffffff16565b90506000611e248285610fd490919063ffffffff16565b90506000479050611e3482612156565b6000611e498247610fd490919063ffffffff16565b90506000611e74611e65600b5488610fd490919063ffffffff16565b83610df390919063ffffffff16565b90506000611e8d600b548361123890919063ffffffff16565b90506000811115611ea357611ea28682612399565b5b6000611ecd600c54611ebf60028661123890919063ffffffff16565b61123890919063ffffffff16565b90506000811115611f345773385b86d5b8243e308a0e7626155ea4bda332511f73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f32573d6000803e3d6000fd5b505b60004790506000811115611f9e5773385b86d5b8243e308a0e7626155ea4bda332511f73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f9c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120685750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561208a576120836064601254610fd490919063ffffffff16565b9050612150565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ea576010549050612150565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561214a57600f549050612150565b60115490505b92915050565b6000600267ffffffffffffffff81111561217357612172613199565b5b6040519080825280602002602001820160405280156121a15781602001602082028036833780820191505090505b50905030816000815181106121b9576121b86131c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612260573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612284919061320c565b81600181518110612298576122976131c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122ff30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e09565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612363959493929190613332565b600060405180830381600087803b15801561237d57600080fd5b505af1158015612391573d6000803e3d6000fd5b505050505050565b6123c630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e09565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073385b86d5b8243e308a0e7626155ea4bda332511f426040518863ffffffff1660e01b81526004016124419695949392919061338c565b60606040518083038185885af115801561245f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124849190613402565b5050505050565b600080fd5b6000819050919050565b6124a381612490565b81146124ae57600080fd5b50565b6000813590506124c08161249a565b92915050565b600080600080600080600060e0888a0312156124e5576124e461248b565b5b60006124f38a828b016124b1565b97505060206125048a828b016124b1565b96505060406125158a828b016124b1565b95505060606125268a828b016124b1565b94505060806125378a828b016124b1565b93505060a06125488a828b016124b1565b92505060c06125598a828b016124b1565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156125a2578082015181840152602081019050612587565b838111156125b1576000848401525b50505050565b6000601f19601f8301169050919050565b60006125d382612568565b6125dd8185612573565b93506125ed818560208601612584565b6125f6816125b7565b840191505092915050565b6000602082019050818103600083015261261b81846125c8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061264e82612623565b9050919050565b61265e81612643565b811461266957600080fd5b50565b60008135905061267b81612655565b92915050565b600080604083850312156126985761269761248b565b5b60006126a68582860161266c565b92505060206126b7858286016124b1565b9150509250929050565b60008115159050919050565b6126d6816126c1565b82525050565b60006020820190506126f160008301846126cd565b92915050565b61270081612490565b82525050565b600060208201905061271b60008301846126f7565b92915050565b60008060006060848603121561273a5761273961248b565b5b60006127488682870161266c565b93505060206127598682870161266c565b925050604061276a868287016124b1565b9150509250925092565b60006020828403121561278a5761278961248b565b5b60006127988482850161266c565b91505092915050565b600060ff82169050919050565b6127b7816127a1565b82525050565b60006020820190506127d260008301846127ae565b92915050565b6000806000606084860312156127f1576127f061248b565b5b60006127ff868287016124b1565b9350506020612810868287016124b1565b9250506040612821868287016124b1565b9150509250925092565b612834816126c1565b811461283f57600080fd5b50565b6000813590506128518161282b565b92915050565b6000806040838503121561286e5761286d61248b565b5b600061287c8582860161266c565b925050602061288d85828601612842565b9150509250929050565b6128a081612643565b82525050565b60006020820190506128bb6000830184612897565b92915050565b600080604083850312156128d8576128d761248b565b5b60006128e68582860161266c565b92505060206128f78582860161266c565b9150509250929050565b600061290c82612623565b9050919050565b61291c81612901565b811461292757600080fd5b50565b60008135905061293981612913565b92915050565b6000602082840312156129555761295461248b565b5b60006129638482850161292a565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129a2600683612573565b91506129ad8261296c565b602082019050919050565b600060208201905081810360008301526129d181612995565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203130250000000000000000000000000000000000000000602082015250565b6000612a34602c83612573565b9150612a3f826129d8565b604082019050919050565b60006020820190508181036000830152612a6381612a27565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aa482612490565b9150612aaf83612490565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ae857612ae7612a6a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b2d82612490565b9150612b3883612490565b925082612b4857612b47612af3565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612baf602e83612573565b9150612bba82612b53565b604082019050919050565b60006020820190508181036000830152612bde81612ba2565b9050919050565b6000819050919050565b6000612c0a612c05612c0084612623565b612be5565b612623565b9050919050565b6000612c1c82612bef565b9050919050565b6000612c2e82612c11565b9050919050565b612c3e81612c23565b82525050565b6000602082019050612c596000830184612c35565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cbb602483612573565b9150612cc682612c5f565b604082019050919050565b60006020820190508181036000830152612cea81612cae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d4d602283612573565b9150612d5882612cf1565b604082019050919050565b60006020820190508181036000830152612d7c81612d40565b9050919050565b6000612d8e82612490565b9150612d9983612490565b925082821015612dac57612dab612a6a565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e13602583612573565b9150612e1e82612db7565b604082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea5602383612573565b9150612eb082612e49565b604082019050919050565b60006020820190508181036000830152612ed481612e98565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f37602983612573565b9150612f4282612edb565b604082019050919050565b60006020820190508181036000830152612f6681612f2a565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612fc9603183612573565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613035600e83612573565b915061304082612fff565b602082019050919050565b6000602082019050818103600083015261306481613028565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130a1601e83612573565b91506130ac8261306b565b602082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b60006130e282612490565b91506130ed83612490565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561312257613121612a6a565b5b828201905092915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613163601183612573565b915061316e8261312d565b602082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061320681612655565b92915050565b6000602082840312156132225761322161248b565b5b6000613230848285016131f7565b91505092915050565b6000819050919050565b600061325e61325961325484613239565b612be5565b612490565b9050919050565b61326e81613243565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132a981612643565b82525050565b60006132bb83836132a0565b60208301905092915050565b6000602082019050919050565b60006132df82613274565b6132e9818561327f565b93506132f483613290565b8060005b8381101561332557815161330c88826132af565b9750613317836132c7565b9250506001810190506132f8565b5085935050505092915050565b600060a08201905061334760008301886126f7565b6133546020830187613265565b818103604083015261336681866132d4565b90506133756060830185612897565b61338260808301846126f7565b9695505050505050565b600060c0820190506133a16000830189612897565b6133ae60208301886126f7565b6133bb6040830187613265565b6133c86060830186613265565b6133d56080830185612897565b6133e260a08301846126f7565b979650505050505050565b6000815190506133fc8161249a565b92915050565b60008060006060848603121561341b5761341a61248b565b5b6000613429868287016133ed565b935050602061343a868287016133ed565b925050604061344b868287016133ed565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a6dc1beb53081b6403083a959f5d62018bb0ef5a81fb5064c65a4e0811ce4dfb64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806348ff2b8b116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806348ff2b8b1461034e57806370a082311461037757806378109e54146103b45780637d1db4a5146103df578063893d20e81461040a57610140565b806323b872dd116100fd57806323b872dd1461022c578063293230b8146102695780632f54bf6e14610280578063313ce567146102bd57806334c5d2ce146102e85780633f4218e01461031157610140565b8063044019301461014557806306fdde031461016e578063095ea7b31461019957806318160ddd146101d65780631f976b7e1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c600480360381019061016791906124c6565b610557565b005b34801561017a57600080fd5b50610183610656565b6040516101909190612601565b60405180910390f35b3480156101a557600080fd5b506101c060048036038101906101bb9190612681565b610693565b6040516101cd91906126dc565b60405180910390f35b3480156101e257600080fd5b506101eb6106aa565b6040516101f89190612706565b60405180910390f35b34801561020d57600080fd5b506102166106eb565b6040516102239190612706565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190612721565b610714565b60405161026091906126dc565b60405180910390f35b34801561027557600080fd5b5061027e6107df565b005b34801561028c57600080fd5b506102a760048036038101906102a29190612774565b610844565b6040516102b491906126dc565b60405180910390f35b3480156102c957600080fd5b506102d261089d565b6040516102df91906127bd565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a91906127d8565b6108a6565b005b34801561031d57600080fd5b5061033860048036038101906103339190612774565b610a06565b60405161034591906126dc565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190612857565b610a26565b005b34801561038357600080fd5b5061039e60048036038101906103999190612774565b610ac9565b6040516103ab9190612706565b60405180910390f35b3480156103c057600080fd5b506103c9610b12565b6040516103d69190612706565b60405180910390f35b3480156103eb57600080fd5b506103f4610b3b565b6040516104019190612706565b60405180910390f35b34801561041657600080fd5b5061041f610b64565b60405161042c91906128a6565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190612857565b610b8d565b005b34801561046a57600080fd5b50610473610c30565b6040516104809190612601565b60405180910390f35b34801561049557600080fd5b5061049e610c6d565b6040516104ab91906128a6565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612681565b610c93565b6040516104e891906126dc565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906128c1565b610caa565b6040516105259190612706565b60405180910390f35b34801561053a57600080fd5b506105556004803603810190610550919061293f565b610d31565b005b61056033610844565b61059f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610596906129b8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506105e66001601254610df390919063ffffffff16565b600f541115801561060e57506106086001601254610df390919063ffffffff16565b60105411155b61064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490612a4a565b60405180910390fd5b50505050505050565b60606040518060400160405280600781526020017f50696720496e7500000000000000000000000000000000000000000000000000815250905090565b60006106a0338484610e09565b6001905092915050565b60006106e66106b96000610ac9565b6106d86106c761dead610ac9565b600154610fd490919063ffffffff16565b610fd490919063ffffffff16565b905090565b60006012546003546106fb6106aa565b6107059190612a99565b61070f9190612b22565b905090565b6000610721848484610fea565b6107d484336107cf8560405180606001604052806028815260200161345660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e39092919063ffffffff16565b610e09565b600190509392505050565b6107e833610844565b610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081e906129b8565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6108af33610844565b6108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e5906129b8565b60405180910390fd5b6000612710846108fc6106aa565b6109069190612a99565b6109109190612b22565b90506000612710846109206106aa565b61092a9190612a99565b6109349190612b22565b90506000612710846109446106aa565b61094e9190612a99565b6109589190612b22565b905085600281905550846003819055508360048190555060006109a06103e861099260056109846106aa565b61123890919063ffffffff16565b610df390919063ffffffff16565b90508084101580156109b25750808310155b80156109be5750808210155b6109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f490612bc5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610a2f33610844565b610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a65906129b8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610b226106aa565b610b2c9190612a99565b610b369190612b22565b905090565b6000601254600254610b4b6106aa565b610b559190612a99565b610b5f9190612b22565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b9633610844565b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906129b8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600381526020017f5049470000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ca0338484610fea565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d3a33610844565b610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d70906129b8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610de89190612c44565b60405180910390a150565b60008183610e019190612b22565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee090612d63565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fc79190612706565b60405180910390a3505050565b60008183610fe29190612d83565b905092915050565b610ff583838361124e565b610fff83836113c1565b61100a8383836114be565b611014838361169c565b61101f838383611767565b61102a8383836119a6565b61107c81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd490919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110cb84846119cf565b6110d557816110e1565b6110e0848484611a7d565b5b905061113581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111d59190612706565b60405180910390a350505050565b600083831115829061122b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112229190612601565b60405180910390fd5b5082840390509392505050565b600081836112469190612a99565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590612e29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590612ebb565b60405180910390fd5b60008111611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890612f4d565b60405180910390fd5b61137a83610ac9565b8111156113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b390612fdf565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114655750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114ba57600a60149054906101000a900460ff166114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b09061304b565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115625750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115bc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156115f6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561169757611603610b12565b61165582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2590919063ffffffff16565b1115611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906130b7565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117435750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117635760016014600082825461175b91906130d7565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118af576117c46106eb565b8111158061181b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061186f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613179565b60405180910390fd5b5b6118b7610b3b565b8111158061190e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119625750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890613179565b60405180910390fd5b505050565b6119b1838383611c3b565b156119ca576119c1601654611d74565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a755750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a8a8585611fc5565b1115611c1a576000611ac2611a9f8686611fc5565b611ab460125486610df390919063ffffffff16565b61123890919063ffffffff16565b9050611b1681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb69190612706565b60405180910390a36000600e541115611bff57611bfe3061dead611bf9600e54611beb60125489610df390919063ffffffff16565b61123890919063ffffffff16565b610fea565b5b611c128184610fd490919063ffffffff16565b915050611c1e565b8190505b9392505050565b60008183611c3391906130d7565b905092915050565b60008060175483101590506000601654611c5430610ac9565b10159050601560009054906101000a900460ff16158015611c815750601360009054906101000a900460ff165b8015611c995750600a60149054906101000a900460ff165b8015611ca25750815b8015611cf85750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d515750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d605750600260145410155b8015611d695750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611de26002611dd4600d54611dc6600c54611db86001600b54611c2590919063ffffffff16565b611c2590919063ffffffff16565b611c2590919063ffffffff16565b61123890919063ffffffff16565b90506000611e0d82611dff600b548661123890919063ffffffff16565b610df390919063ffffffff16565b90506000611e248285610fd490919063ffffffff16565b90506000479050611e3482612156565b6000611e498247610fd490919063ffffffff16565b90506000611e74611e65600b5488610fd490919063ffffffff16565b83610df390919063ffffffff16565b90506000611e8d600b548361123890919063ffffffff16565b90506000811115611ea357611ea28682612399565b5b6000611ecd600c54611ebf60028661123890919063ffffffff16565b61123890919063ffffffff16565b90506000811115611f345773385b86d5b8243e308a0e7626155ea4bda332511f73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f32573d6000803e3d6000fd5b505b60004790506000811115611f9e5773385b86d5b8243e308a0e7626155ea4bda332511f73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f9c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120685750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561208a576120836064601254610fd490919063ffffffff16565b9050612150565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ea576010549050612150565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561214a57600f549050612150565b60115490505b92915050565b6000600267ffffffffffffffff81111561217357612172613199565b5b6040519080825280602002602001820160405280156121a15781602001602082028036833780820191505090505b50905030816000815181106121b9576121b86131c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612260573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612284919061320c565b81600181518110612298576122976131c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122ff30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e09565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612363959493929190613332565b600060405180830381600087803b15801561237d57600080fd5b505af1158015612391573d6000803e3d6000fd5b505050505050565b6123c630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e09565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073385b86d5b8243e308a0e7626155ea4bda332511f426040518863ffffffff1660e01b81526004016124419695949392919061338c565b60606040518083038185885af115801561245f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124849190613402565b5050505050565b600080fd5b6000819050919050565b6124a381612490565b81146124ae57600080fd5b50565b6000813590506124c08161249a565b92915050565b600080600080600080600060e0888a0312156124e5576124e461248b565b5b60006124f38a828b016124b1565b97505060206125048a828b016124b1565b96505060406125158a828b016124b1565b95505060606125268a828b016124b1565b94505060806125378a828b016124b1565b93505060a06125488a828b016124b1565b92505060c06125598a828b016124b1565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156125a2578082015181840152602081019050612587565b838111156125b1576000848401525b50505050565b6000601f19601f8301169050919050565b60006125d382612568565b6125dd8185612573565b93506125ed818560208601612584565b6125f6816125b7565b840191505092915050565b6000602082019050818103600083015261261b81846125c8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061264e82612623565b9050919050565b61265e81612643565b811461266957600080fd5b50565b60008135905061267b81612655565b92915050565b600080604083850312156126985761269761248b565b5b60006126a68582860161266c565b92505060206126b7858286016124b1565b9150509250929050565b60008115159050919050565b6126d6816126c1565b82525050565b60006020820190506126f160008301846126cd565b92915050565b61270081612490565b82525050565b600060208201905061271b60008301846126f7565b92915050565b60008060006060848603121561273a5761273961248b565b5b60006127488682870161266c565b93505060206127598682870161266c565b925050604061276a868287016124b1565b9150509250925092565b60006020828403121561278a5761278961248b565b5b60006127988482850161266c565b91505092915050565b600060ff82169050919050565b6127b7816127a1565b82525050565b60006020820190506127d260008301846127ae565b92915050565b6000806000606084860312156127f1576127f061248b565b5b60006127ff868287016124b1565b9350506020612810868287016124b1565b9250506040612821868287016124b1565b9150509250925092565b612834816126c1565b811461283f57600080fd5b50565b6000813590506128518161282b565b92915050565b6000806040838503121561286e5761286d61248b565b5b600061287c8582860161266c565b925050602061288d85828601612842565b9150509250929050565b6128a081612643565b82525050565b60006020820190506128bb6000830184612897565b92915050565b600080604083850312156128d8576128d761248b565b5b60006128e68582860161266c565b92505060206128f78582860161266c565b9150509250929050565b600061290c82612623565b9050919050565b61291c81612901565b811461292757600080fd5b50565b60008135905061293981612913565b92915050565b6000602082840312156129555761295461248b565b5b60006129638482850161292a565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129a2600683612573565b91506129ad8261296c565b602082019050919050565b600060208201905081810360008301526129d181612995565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203130250000000000000000000000000000000000000000602082015250565b6000612a34602c83612573565b9150612a3f826129d8565b604082019050919050565b60006020820190508181036000830152612a6381612a27565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aa482612490565b9150612aaf83612490565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ae857612ae7612a6a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b2d82612490565b9150612b3883612490565b925082612b4857612b47612af3565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612baf602e83612573565b9150612bba82612b53565b604082019050919050565b60006020820190508181036000830152612bde81612ba2565b9050919050565b6000819050919050565b6000612c0a612c05612c0084612623565b612be5565b612623565b9050919050565b6000612c1c82612bef565b9050919050565b6000612c2e82612c11565b9050919050565b612c3e81612c23565b82525050565b6000602082019050612c596000830184612c35565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cbb602483612573565b9150612cc682612c5f565b604082019050919050565b60006020820190508181036000830152612cea81612cae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d4d602283612573565b9150612d5882612cf1565b604082019050919050565b60006020820190508181036000830152612d7c81612d40565b9050919050565b6000612d8e82612490565b9150612d9983612490565b925082821015612dac57612dab612a6a565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e13602583612573565b9150612e1e82612db7565b604082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea5602383612573565b9150612eb082612e49565b604082019050919050565b60006020820190508181036000830152612ed481612e98565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f37602983612573565b9150612f4282612edb565b604082019050919050565b60006020820190508181036000830152612f6681612f2a565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612fc9603183612573565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613035600e83612573565b915061304082612fff565b602082019050919050565b6000602082019050818103600083015261306481613028565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130a1601e83612573565b91506130ac8261306b565b602082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b60006130e282612490565b91506130ed83612490565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561312257613121612a6a565b5b828201905092915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613163601183612573565b915061316e8261312d565b602082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061320681612655565b92915050565b6000602082840312156132225761322161248b565b5b6000613230848285016131f7565b91505092915050565b6000819050919050565b600061325e61325961325484613239565b612be5565b612490565b9050919050565b61326e81613243565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132a981612643565b82525050565b60006132bb83836132a0565b60208301905092915050565b6000602082019050919050565b60006132df82613274565b6132e9818561327f565b93506132f483613290565b8060005b8381101561332557815161330c88826132af565b9750613317836132c7565b9250506001810190506132f8565b5085935050505092915050565b600060a08201905061334760008301886126f7565b6133546020830187613265565b818103604083015261336681866132d4565b90506133756060830185612897565b61338260808301846126f7565b9695505050505050565b600060c0820190506133a16000830189612897565b6133ae60208301886126f7565b6133bb6040830187613265565b6133c86060830186613265565b6133d56080830185612897565b6133e260a08301846126f7565b979650505050505050565b6000815190506133fc8161249a565b92915050565b60008060006060848603121561341b5761341a61248b565b5b6000613429868287016133ed565b935050602061343a868287016133ed565b925050604061344b868287016133ed565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a6dc1beb53081b6403083a959f5d62018bb0ef5a81fb5064c65a4e0811ce4dfb64736f6c634300080b0033

Deployed Bytecode Sourcemap

4775:11727:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10049:527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7114:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8254:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8396:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8779:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15847:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7343:69;;;;;;;;;;;;;:::i;:::-;;3145:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7268:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10584:584;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5325:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8138:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7502:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8536:116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8658:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7418:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8031:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7189:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5443:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7613:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7761:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3240:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10049:527;3103:19;3111:10;3103:7;:19::i;:::-;3095:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10240:10:::1;10225:12;:25;;;;10276:10;10261:12;:25;;;;10307:5;10297:7;:15;;;;10340:12;10323:14;:29;;;;10374:6;10363:8;:17;;;;10401:5;10391:7;:15;;;;10431:6;10417:11;:20;;;;10468:18;10484:1;10468:11;;:15;;:18;;;;:::i;:::-;10456:8;;:30;;:63;;;;;10501:18;10517:1;10501:11;;:15;;:18;;;;:::i;:::-;10490:7;;:29;;10456:63;10448:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;10049:527:::0;;;;;;;:::o;7114:69::-;7151:13;7175:5;;;;;;;;;;;;;;;;;7168:12;;7114:69;:::o;8254:136::-;8329:4;8337:37;8346:10;8358:7;8367:6;8337:8;:37::i;:::-;8383:4;8376:11;;8254:136;;;;:::o;8396:134::-;8449:7;8467:60;8505:21;8523:1;8505:9;:21::i;:::-;8467:33;8484:15;6169:42;8484:9;:15::i;:::-;8467:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8460:67;;8396:134;:::o;8779:121::-;8830:7;8886:11;;8864:19;;8848:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8841:56;;8779:121;:::o;15847:309::-;15945:4;15962:36;15972:6;15980:9;15991:6;15962:9;:36::i;:::-;16009:117;16018:6;16026:10;16038:87;16074:6;16038:87;;;;;;;;;;;;;;;;;:11;:19;16050:6;16038:19;;;;;;;;;;;;;;;:31;16058:10;16038:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16009:8;:117::i;:::-;16144:4;16137:11;;15847:309;;;;;:::o;7343:69::-;3103:19;3111:10;3103:7;:19::i;:::-;3095:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7405:4:::1;7388:14;;:21;;;;;;;;;;;;;;;;;;7343:69::o:0;3145:89::-;3200:4;3226:5;;;;;;;;;;;3215:16;;:7;:16;;;3208:23;;3145:89;;;:::o;7268:69::-;7309:5;4979:1;7318:16;;7268:69;:::o;10584:584::-;3103:19;3111:10;3103:7;:19::i;:::-;3095:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10684:13:::1;10725:5;10717:4;10701:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10700:30;;;;:::i;:::-;10684:46;;10741:19;10790:5;10780:6;10764:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10763:32;;;;:::i;:::-;10741:54;;10806:17;10854:5;10843:7;10827:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10826:33;;;;:::i;:::-;10806:53;;10892:4;10870:19;:26;;;;10929:6;10907:19;:28;;;;10966:7;10946:17;:27;;;;10984:13;11000:30;11025:4;11000:20;11018:1;11000:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10984:46;;11058:5;11049;:14;;:38;;;;;11082:5;11067:11;:20;;11049:38;:60;;;;;11104:5;11091:9;:18;;11049:60;11041:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10673:495;;;;10584:584:::0;;;:::o;5325:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8138:110::-;3103:19;3111:10;3103:7;:19::i;:::-;3095:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8237:8:::1;8213:11;:21;8225:8;8213:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8138:110:::0;;:::o;7502:105::-;7568:7;7586:9;:18;7596:7;7586:18;;;;;;;;;;;;;;;;7579:25;;7502:105;;;:::o;8536:116::-;8584:7;8638:11;;8618:17;;8602:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8595:54;;8536:116;:::o;8658:115::-;8703:7;8759:11;;8737:19;;8721:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8714:56;;8658:115;:::o;7418:78::-;7470:7;7488:5;;;;;;;;;;;7481:12;;7418:78;:::o;8031:101::-;3103:19;3111:10;3103:7;:19::i;:::-;3095:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8121:8:::1;8103:5;:15;8109:8;8103:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8031:101:::0;;:::o;7189:73::-;7228:13;7252:7;;;;;;;;;;;;;;;;;7245:14;;7189:73;:::o;5443:19::-;;;;;;;;;;;;;:::o;7613:142::-;7691:4;7699:40;7709:10;7721:9;7732:6;7699:9;:40::i;:::-;7748:4;7741:11;;7613:142;;;;:::o;7761:129::-;7842:7;7860:11;:18;7872:5;7860:18;;;;;;;;;;;;;;;:27;7879:7;7860:27;;;;;;;;;;;;;;;;7853:34;;7761:129;;;;:::o;3240:113::-;3103:19;3111:10;3103:7;:19::i;:::-;3095:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3315:3:::1;3307:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3325:25;3346:3;3325:25;;;;;;:::i;:::-;;;;;;;;3240:113:::0;:::o;428:84::-;486:7;508:1;504;:5;;;;:::i;:::-;497:12;;428:84;;;;:::o;16164:335::-;16274:1;16257:19;;:5;:19;;;;16249:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16355:1;16336:21;;:7;:21;;;;16328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16437:6;16407:11;:18;16419:5;16407:18;;;;;;;;;;;;;;;:27;16426:7;16407:27;;;;;;;;;;;;;;;:36;;;;16475:7;16459:32;;16468:5;16459:32;;;16484:6;16459:32;;;;;;:::i;:::-;;;;;;;;16164:335;;;:::o;248:84::-;306:7;328:1;324;:5;;;;:::i;:::-;317:12;;248:84;;;;:::o;9355:686::-;9444:37;9455:6;9463:9;9474:6;9444:10;:37::i;:::-;9492:38;9512:6;9520:9;9492:19;:38::i;:::-;9541:41;9556:6;9564:9;9575:6;9541:14;:41::i;:::-;9594:35;9611:6;9619:9;9594:16;:35::i;:::-;9640:39;9653:6;9661:9;9672:6;9640:12;:39::i;:::-;9691:35;9700:6;9708:9;9719:6;9691:8;:35::i;:::-;9757:29;9779:6;9757:9;:17;9767:6;9757:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9737:9;:17;9747:6;9737:17;;;;;;;;;;;;;;;:49;;;;9797:22;9822:32;9836:6;9844:9;9822:13;:32::i;:::-;:78;;9894:6;9822:78;;;9857:34;9865:6;9873:9;9884:6;9857:7;:34::i;:::-;9822:78;9797:103;;9934:40;9959:14;9934:9;:20;9944:9;9934:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9911:9;:20;9921:9;9911:20;;;;;;;;;;;;;;;:63;;;;10007:9;9990:43;;9999:6;9990:43;;;10018:14;9990:43;;;;;;:::i;:::-;;;;;;;;9433:608;9355:686;;;:::o;1509:171::-;1595:7;1640:1;1635;:6;;1643:12;1627:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1669:1;1665;:5;1658:12;;1509:171;;;;;:::o;338:84::-;396:7;418:1;414;:5;;;;:::i;:::-;407:12;;338:84;;;;:::o;8908:439::-;9030:1;9012:20;;:6;:20;;;;9004:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9114:1;9093:23;;:9;:23;;;;9085:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9192:1;9175:6;:19;9167:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9269:17;9279:6;9269:9;:17::i;:::-;9259:6;:27;;9251:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8908:439;;;:::o;11176:194::-;11269:11;:19;11281:6;11269:19;;;;;;;;;;;;;;;;;;;;;;;;;11268:20;:47;;;;;11293:11;:22;11305:9;11293:22;;;;;;;;;;;;;;;;;;;;;;;;;11292:23;11268:47;11265:98;;;11327:14;;;;;;;;;;;11319:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11265:98;11176:194;;:::o;11382:344::-;11486:11;:19;11498:6;11486:19;;;;;;;;;;;;;;;;;;;;;;;;;11485:20;:47;;;;;11510:11;:22;11522:9;11510:22;;;;;;;;;;;;;;;;;;;;;;;;;11509:23;11485:47;:77;;;;;11557:4;;;;;;;;;;;11536:26;;:9;:26;;;;11485:77;:107;;;;;6169:42;11566:26;;:9;:26;;;;11485:107;11482:237;;;11655:17;:15;:17::i;:::-;11618:32;11643:6;11618:9;:20;11628:9;11618:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11617:55;;11609:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11482:237;11382:344;;;:::o;11734:162::-;11831:4;;;;;;;;;;;11818:17;;:9;:17;;;:41;;;;;11840:11;:19;11852:6;11840:19;;;;;;;;;;;;;;;;;;;;;;;;;11839:20;11818:41;11815:74;;;11884:1;11863:9;;:23;;;;;;;:::i;:::-;;;;;;;;11815:74;11734:162;;:::o;11904:352::-;12015:4;;;;;;;;;;;12005:14;;:6;:14;;;12002:133;;12041:20;:18;:20::i;:::-;12031:6;:30;;:53;;;;12065:11;:19;12077:6;12065:19;;;;;;;;;;;;;;;;;;;;;;;;;12031:53;:79;;;;12088:11;:22;12100:9;12088:22;;;;;;;;;;;;;;;;;;;;;;;;;12031:79;12023:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12002:133;12163:14;:12;:14::i;:::-;12153:6;:24;;:47;;;;12181:11;:19;12193:6;12181:19;;;;;;;;;;;;;;;;;;;;;;;;;12153:47;:73;;;;12204:11;:22;12216:9;12204:22;;;;;;;;;;;;;;;;;;;;;;;;;12153:73;12145:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11904:352;;;:::o;14548:200::-;14640:41;14655:6;14663:9;14674:6;14640:14;:41::i;:::-;14637:104;;;14685:29;14700:13;;14685:14;:29::i;:::-;14736:1;14716:9;:22;;;;14637:104;14548:200;;;:::o;14756:160::-;14837:4;14862:11;:19;14874:6;14862:19;;;;;;;;;;;;;;;;;;;;;;;;;14861:20;:47;;;;;14886:11;:22;14898:9;14886:22;;;;;;;;;;;;;;;;;;;;;;;;;14885:23;14861:47;14854:54;;14756:160;;;;:::o;15246:593::-;15332:7;15388:1;15355:30;15367:6;15375:9;15355:11;:30::i;:::-;:34;15352:453;;;15406:17;15426:59;15454:30;15466:6;15474:9;15454:11;:30::i;:::-;15426:23;15437:11;;15426:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15406:79;;15527:39;15556:9;15527;:24;15545:4;15527:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15500:9;:24;15518:4;15500:24;;;;;;;;;;;;;;;:66;;;;15611:4;15586:42;;15595:6;15586:42;;;15618:9;15586:42;;;;;;:::i;:::-;;;;;;;;15664:1;15646:7;;:20;15643:107;;;15670:77;15688:4;6169:42;15710:36;15738:7;;15710:23;15721:11;;15710:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15670:9;:77::i;:::-;15643:107;15771:21;15782:9;15771:6;:10;;:21;;;;:::i;:::-;15764:28;;;;;15352:453;15825:6;15818:13;;15246:593;;;;;;:::o;158:84::-;216:7;238:1;234;:5;;;;:::i;:::-;227:12;;158:84;;;;:::o;14140:400::-;14238:4;14255:13;14281:15;;14271:6;:25;;14255:41;;14307:19;14357:13;;14329:24;14347:4;14329:9;:24::i;:::-;:41;;14307:63;;14389:8;;;;;;;;;;;14388:9;:24;;;;;14401:11;;;;;;;;;;;14388:24;:42;;;;;14416:14;;;;;;;;;;;14388:42;:54;;;;;14434:8;14388:54;:78;;;;;14447:11;:19;14459:6;14447:19;;;;;;;;;;;;;;;;;;;;;;;;;14446:20;14388:78;:99;;;;;14483:4;;;;;;;;;;;14470:17;;:9;:17;;;14388:99;:126;;;;;14512:1;14491:9;;:23;;14388:126;:144;;;;;14518:14;14388:144;14381:151;;;;14140:400;;;;;:::o;12264:1075::-;6100:4;6089:8;;:15;;;;;;;;;;;;;;;;;;12335:20:::1;12358:66;12422:1;12359:57;12401:14;;12359:37;12383:12;;12359:19;12376:1;12359:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12358:63;;:66;;;;:::i;:::-;12335:89;;12435:32;12470:42;12499:12;12470:24;12481:12;;12470:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12435:77;;12523:14;12540:36;12551:24;12540:6;:10;;:36;;;;:::i;:::-;12523:53;;12587:22;12612:21;12587:46;;12644:24;12661:6;12644:16;:24::i;:::-;12679:20;12702:41;12728:14;12702:21;:25;;:41;;;;:::i;:::-;12679:64;;12754:19;12776:48;12793:30;12810:12;;12793;:16;;:30;;;;:::i;:::-;12776:12;:16;;:48;;;;:::i;:::-;12754:70;;12835:29;12867;12883:12;;12867:11;:15;;:29;;;;:::i;:::-;12835:61;;12942:1;12910:21;:34;12907:105;;;12948:61;12961:24;12987:21;12948:12;:61::i;:::-;12907:105;13022:20;13045:36;13068:12;;13045:18;13061:1;13045:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;13022:59;;13110:1;13095:12;:16;13092:76;;;6364:42;13115:36;;:50;13152:12;13115:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13092:76;13178:24;13205:21;13178:48;;13267:1;13240:16;:29;13237:95;;;6267:42;13273:38;;:56;13312:16;13273:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13237:95;12324:1015;;;;;;;;;6120:5:::0;6109:8;;:16;;;;;;;;;;;;;;;;;;12264:1075;:::o;14924:314::-;15003:7;15026:5;:13;15032:6;15026:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15043:5;:16;15049:9;15043:16;;;;;;;;;;;;;;;;;;;;;;;;;15026:33;15023:79;;;15070:29;15094:3;15070:11;;:15;;:29;;;;:::i;:::-;15063:36;;;;15023:79;15128:4;;;;;;;;;;;15115:17;;:9;:17;;;15112:41;;;15143:7;;15136:14;;;;15112:41;15176:4;;;;;;;;;;;15166:14;;:6;:14;;;15163:39;;;15191:8;;15184:15;;;;15163:39;15219:11;;15212:18;;14924:314;;;;;:::o;13698:434::-;13764:21;13802:1;13788:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13764:40;;13833:4;13815;13820:1;13815:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13859:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13849:4;13854:1;13849:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13883:53;13900:4;13915:6;;;;;;;;;;;13924:11;13883:8;:53::i;:::-;13947:6;;;;;;;;;;;:57;;;14019:11;14045:1;14061:4;14088;14108:15;13947:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13753:379;13698:434;:::o;13347:343::-;13428:53;13445:4;13460:6;;;;;;;;;;;13469:11;13428:8;:53::i;:::-;13492:6;;;;;;;;;;;:22;;;13522:9;13555:4;13575:11;13601:1;13617;6460:42;13666:15;13492:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13347:343;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:1203::-;803:6;811;819;827;835;843;851;900:3;888:9;879:7;875:23;871:33;868:120;;;907:79;;:::i;:::-;868:120;1027:1;1052:53;1097:7;1088:6;1077:9;1073:22;1052:53;:::i;:::-;1042:63;;998:117;1154:2;1180:53;1225:7;1216:6;1205:9;1201:22;1180:53;:::i;:::-;1170:63;;1125:118;1282:2;1308:53;1353:7;1344:6;1333:9;1329:22;1308:53;:::i;:::-;1298:63;;1253:118;1410:2;1436:53;1481:7;1472:6;1461:9;1457:22;1436:53;:::i;:::-;1426:63;;1381:118;1538:3;1565:53;1610:7;1601:6;1590:9;1586:22;1565:53;:::i;:::-;1555:63;;1509:119;1667:3;1694:53;1739:7;1730:6;1719:9;1715:22;1694:53;:::i;:::-;1684:63;;1638:119;1796:3;1823:53;1868:7;1859:6;1848:9;1844:22;1823:53;:::i;:::-;1813:63;;1767:119;690:1203;;;;;;;;;;:::o;1899:99::-;1951:6;1985:5;1979:12;1969:22;;1899:99;;;:::o;2004:169::-;2088:11;2122:6;2117:3;2110:19;2162:4;2157:3;2153:14;2138:29;;2004:169;;;;:::o;2179:307::-;2247:1;2257:113;2271:6;2268:1;2265:13;2257:113;;;2356:1;2351:3;2347:11;2341:18;2337:1;2332:3;2328:11;2321:39;2293:2;2290:1;2286:10;2281:15;;2257:113;;;2388:6;2385:1;2382:13;2379:101;;;2468:1;2459:6;2454:3;2450:16;2443:27;2379:101;2228:258;2179:307;;;:::o;2492:102::-;2533:6;2584:2;2580:7;2575:2;2568:5;2564:14;2560:28;2550:38;;2492:102;;;:::o;2600:364::-;2688:3;2716:39;2749:5;2716:39;:::i;:::-;2771:71;2835:6;2830:3;2771:71;:::i;:::-;2764:78;;2851:52;2896:6;2891:3;2884:4;2877:5;2873:16;2851:52;:::i;:::-;2928:29;2950:6;2928:29;:::i;:::-;2923:3;2919:39;2912:46;;2692:272;2600:364;;;;:::o;2970:313::-;3083:4;3121:2;3110:9;3106:18;3098:26;;3170:9;3164:4;3160:20;3156:1;3145:9;3141:17;3134:47;3198:78;3271:4;3262:6;3198:78;:::i;:::-;3190:86;;2970:313;;;;:::o;3289:126::-;3326:7;3366:42;3359:5;3355:54;3344:65;;3289:126;;;:::o;3421:96::-;3458:7;3487:24;3505:5;3487:24;:::i;:::-;3476:35;;3421:96;;;:::o;3523:122::-;3596:24;3614:5;3596:24;:::i;:::-;3589:5;3586:35;3576:63;;3635:1;3632;3625:12;3576:63;3523:122;:::o;3651:139::-;3697:5;3735:6;3722:20;3713:29;;3751:33;3778:5;3751:33;:::i;:::-;3651:139;;;;:::o;3796:474::-;3864:6;3872;3921:2;3909:9;3900:7;3896:23;3892:32;3889:119;;;3927:79;;:::i;:::-;3889:119;4047:1;4072:53;4117:7;4108:6;4097:9;4093:22;4072:53;:::i;:::-;4062:63;;4018:117;4174:2;4200:53;4245:7;4236:6;4225:9;4221:22;4200:53;:::i;:::-;4190:63;;4145:118;3796:474;;;;;:::o;4276:90::-;4310:7;4353:5;4346:13;4339:21;4328:32;;4276:90;;;:::o;4372:109::-;4453:21;4468:5;4453:21;:::i;:::-;4448:3;4441:34;4372:109;;:::o;4487:210::-;4574:4;4612:2;4601:9;4597:18;4589:26;;4625:65;4687:1;4676:9;4672:17;4663:6;4625:65;:::i;:::-;4487:210;;;;:::o;4703:118::-;4790:24;4808:5;4790:24;:::i;:::-;4785:3;4778:37;4703:118;;:::o;4827:222::-;4920:4;4958:2;4947:9;4943:18;4935:26;;4971:71;5039:1;5028:9;5024:17;5015:6;4971:71;:::i;:::-;4827:222;;;;:::o;5055:619::-;5132:6;5140;5148;5197:2;5185:9;5176:7;5172:23;5168:32;5165:119;;;5203:79;;:::i;:::-;5165:119;5323:1;5348:53;5393:7;5384:6;5373:9;5369:22;5348:53;:::i;:::-;5338:63;;5294:117;5450:2;5476:53;5521:7;5512:6;5501:9;5497:22;5476:53;:::i;:::-;5466:63;;5421:118;5578:2;5604:53;5649:7;5640:6;5629:9;5625:22;5604:53;:::i;:::-;5594:63;;5549:118;5055:619;;;;;:::o;5680:329::-;5739:6;5788:2;5776:9;5767:7;5763:23;5759:32;5756:119;;;5794:79;;:::i;:::-;5756:119;5914:1;5939:53;5984:7;5975:6;5964:9;5960:22;5939:53;:::i;:::-;5929:63;;5885:117;5680:329;;;;:::o;6015:86::-;6050:7;6090:4;6083:5;6079:16;6068:27;;6015:86;;;:::o;6107:112::-;6190:22;6206:5;6190:22;:::i;:::-;6185:3;6178:35;6107:112;;:::o;6225:214::-;6314:4;6352:2;6341:9;6337:18;6329:26;;6365:67;6429:1;6418:9;6414:17;6405:6;6365:67;:::i;:::-;6225:214;;;;:::o;6445:619::-;6522:6;6530;6538;6587:2;6575:9;6566:7;6562:23;6558:32;6555:119;;;6593:79;;:::i;:::-;6555:119;6713:1;6738:53;6783:7;6774:6;6763:9;6759:22;6738:53;:::i;:::-;6728:63;;6684:117;6840:2;6866:53;6911:7;6902:6;6891:9;6887:22;6866:53;:::i;:::-;6856:63;;6811:118;6968:2;6994:53;7039:7;7030:6;7019:9;7015:22;6994:53;:::i;:::-;6984:63;;6939:118;6445:619;;;;;:::o;7070:116::-;7140:21;7155:5;7140:21;:::i;:::-;7133:5;7130:32;7120:60;;7176:1;7173;7166:12;7120:60;7070:116;:::o;7192:133::-;7235:5;7273:6;7260:20;7251:29;;7289:30;7313:5;7289:30;:::i;:::-;7192:133;;;;:::o;7331:468::-;7396:6;7404;7453:2;7441:9;7432:7;7428:23;7424:32;7421:119;;;7459:79;;:::i;:::-;7421:119;7579:1;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7550:117;7706:2;7732:50;7774:7;7765:6;7754:9;7750:22;7732:50;:::i;:::-;7722:60;;7677:115;7331:468;;;;;:::o;7805:118::-;7892:24;7910:5;7892:24;:::i;:::-;7887:3;7880:37;7805:118;;:::o;7929:222::-;8022:4;8060:2;8049:9;8045:18;8037:26;;8073:71;8141:1;8130:9;8126:17;8117:6;8073:71;:::i;:::-;7929:222;;;;:::o;8157:474::-;8225:6;8233;8282:2;8270:9;8261:7;8257:23;8253:32;8250:119;;;8288:79;;:::i;:::-;8250:119;8408:1;8433:53;8478:7;8469:6;8458:9;8454:22;8433:53;:::i;:::-;8423:63;;8379:117;8535:2;8561:53;8606:7;8597:6;8586:9;8582:22;8561:53;:::i;:::-;8551:63;;8506:118;8157:474;;;;;:::o;8637:104::-;8682:7;8711:24;8729:5;8711:24;:::i;:::-;8700:35;;8637:104;;;:::o;8747:138::-;8828:32;8854:5;8828:32;:::i;:::-;8821:5;8818:43;8808:71;;8875:1;8872;8865:12;8808:71;8747:138;:::o;8891:155::-;8945:5;8983:6;8970:20;8961:29;;8999:41;9034:5;8999:41;:::i;:::-;8891:155;;;;:::o;9052:345::-;9119:6;9168:2;9156:9;9147:7;9143:23;9139:32;9136:119;;;9174:79;;:::i;:::-;9136:119;9294:1;9319:61;9372:7;9363:6;9352:9;9348:22;9319:61;:::i;:::-;9309:71;;9265:125;9052:345;;;;:::o;9403:156::-;9543:8;9539:1;9531:6;9527:14;9520:32;9403:156;:::o;9565:365::-;9707:3;9728:66;9792:1;9787:3;9728:66;:::i;:::-;9721:73;;9803:93;9892:3;9803:93;:::i;:::-;9921:2;9916:3;9912:12;9905:19;;9565:365;;;:::o;9936:419::-;10102:4;10140:2;10129:9;10125:18;10117:26;;10189:9;10183:4;10179:20;10175:1;10164:9;10160:17;10153:47;10217:131;10343:4;10217:131;:::i;:::-;10209:139;;9936:419;;;:::o;10361:231::-;10501:34;10497:1;10489:6;10485:14;10478:58;10570:14;10565:2;10557:6;10553:15;10546:39;10361:231;:::o;10598:366::-;10740:3;10761:67;10825:2;10820:3;10761:67;:::i;:::-;10754:74;;10837:93;10926:3;10837:93;:::i;:::-;10955:2;10950:3;10946:12;10939:19;;10598:366;;;:::o;10970:419::-;11136:4;11174:2;11163:9;11159:18;11151:26;;11223:9;11217:4;11213:20;11209:1;11198:9;11194:17;11187:47;11251:131;11377:4;11251:131;:::i;:::-;11243:139;;10970:419;;;:::o;11395:180::-;11443:77;11440:1;11433:88;11540:4;11537:1;11530:15;11564:4;11561:1;11554:15;11581:348;11621:7;11644:20;11662:1;11644:20;:::i;:::-;11639:25;;11678:20;11696:1;11678:20;:::i;:::-;11673:25;;11866:1;11798:66;11794:74;11791:1;11788:81;11783:1;11776:9;11769:17;11765:105;11762:131;;;11873:18;;:::i;:::-;11762:131;11921:1;11918;11914:9;11903:20;;11581:348;;;;:::o;11935:180::-;11983:77;11980:1;11973:88;12080:4;12077:1;12070:15;12104:4;12101:1;12094:15;12121:185;12161:1;12178:20;12196:1;12178:20;:::i;:::-;12173:25;;12212:20;12230:1;12212:20;:::i;:::-;12207:25;;12251:1;12241:35;;12256:18;;:::i;:::-;12241:35;12298:1;12295;12291:9;12286:14;;12121:185;;;;:::o;12312:233::-;12452:34;12448:1;12440:6;12436:14;12429:58;12521:16;12516:2;12508:6;12504:15;12497:41;12312:233;:::o;12551:366::-;12693:3;12714:67;12778:2;12773:3;12714:67;:::i;:::-;12707:74;;12790:93;12879:3;12790:93;:::i;:::-;12908:2;12903:3;12899:12;12892:19;;12551:366;;;:::o;12923:419::-;13089:4;13127:2;13116:9;13112:18;13104:26;;13176:9;13170:4;13166:20;13162:1;13151:9;13147:17;13140:47;13204:131;13330:4;13204:131;:::i;:::-;13196:139;;12923:419;;;:::o;13348:60::-;13376:3;13397:5;13390:12;;13348:60;;;:::o;13414:142::-;13464:9;13497:53;13515:34;13524:24;13542:5;13524:24;:::i;:::-;13515:34;:::i;:::-;13497:53;:::i;:::-;13484:66;;13414:142;;;:::o;13562:126::-;13612:9;13645:37;13676:5;13645:37;:::i;:::-;13632:50;;13562:126;;;:::o;13694:134::-;13752:9;13785:37;13816:5;13785:37;:::i;:::-;13772:50;;13694:134;;;:::o;13834:147::-;13929:45;13968:5;13929:45;:::i;:::-;13924:3;13917:58;13834:147;;:::o;13987:238::-;14088:4;14126:2;14115:9;14111:18;14103:26;;14139:79;14215:1;14204:9;14200:17;14191:6;14139:79;:::i;:::-;13987:238;;;;:::o;14231:223::-;14371:34;14367:1;14359:6;14355:14;14348:58;14440:6;14435:2;14427:6;14423:15;14416:31;14231:223;:::o;14460:366::-;14602:3;14623:67;14687:2;14682:3;14623:67;:::i;:::-;14616:74;;14699:93;14788:3;14699:93;:::i;:::-;14817:2;14812:3;14808:12;14801:19;;14460:366;;;:::o;14832:419::-;14998:4;15036:2;15025:9;15021:18;15013:26;;15085:9;15079:4;15075:20;15071:1;15060:9;15056:17;15049:47;15113:131;15239:4;15113:131;:::i;:::-;15105:139;;14832:419;;;:::o;15257:221::-;15397:34;15393:1;15385:6;15381:14;15374:58;15466:4;15461:2;15453:6;15449:15;15442:29;15257:221;:::o;15484:366::-;15626:3;15647:67;15711:2;15706:3;15647:67;:::i;:::-;15640:74;;15723:93;15812:3;15723:93;:::i;:::-;15841:2;15836:3;15832:12;15825:19;;15484:366;;;:::o;15856:419::-;16022:4;16060:2;16049:9;16045:18;16037:26;;16109:9;16103:4;16099:20;16095:1;16084:9;16080:17;16073:47;16137:131;16263:4;16137:131;:::i;:::-;16129:139;;15856:419;;;:::o;16281:191::-;16321:4;16341:20;16359:1;16341:20;:::i;:::-;16336:25;;16375:20;16393:1;16375:20;:::i;:::-;16370:25;;16414:1;16411;16408:8;16405:34;;;16419:18;;:::i;:::-;16405:34;16464:1;16461;16457:9;16449:17;;16281:191;;;;:::o;16478:224::-;16618:34;16614:1;16606:6;16602:14;16595:58;16687:7;16682:2;16674:6;16670:15;16663:32;16478:224;:::o;16708:366::-;16850:3;16871:67;16935:2;16930:3;16871:67;:::i;:::-;16864:74;;16947:93;17036:3;16947:93;:::i;:::-;17065:2;17060:3;17056:12;17049:19;;16708:366;;;:::o;17080:419::-;17246:4;17284:2;17273:9;17269:18;17261:26;;17333:9;17327:4;17323:20;17319:1;17308:9;17304:17;17297:47;17361:131;17487:4;17361:131;:::i;:::-;17353:139;;17080:419;;;:::o;17505:222::-;17645:34;17641:1;17633:6;17629:14;17622:58;17714:5;17709:2;17701:6;17697:15;17690:30;17505:222;:::o;17733:366::-;17875:3;17896:67;17960:2;17955:3;17896:67;:::i;:::-;17889:74;;17972:93;18061:3;17972:93;:::i;:::-;18090:2;18085:3;18081:12;18074:19;;17733:366;;;:::o;18105:419::-;18271:4;18309:2;18298:9;18294:18;18286:26;;18358:9;18352:4;18348:20;18344:1;18333:9;18329:17;18322:47;18386:131;18512:4;18386:131;:::i;:::-;18378:139;;18105:419;;;:::o;18530:228::-;18670:34;18666:1;18658:6;18654:14;18647:58;18739:11;18734:2;18726:6;18722:15;18715:36;18530:228;:::o;18764:366::-;18906:3;18927:67;18991:2;18986:3;18927:67;:::i;:::-;18920:74;;19003:93;19092:3;19003:93;:::i;:::-;19121:2;19116:3;19112:12;19105:19;;18764:366;;;:::o;19136:419::-;19302:4;19340:2;19329:9;19325:18;19317:26;;19389:9;19383:4;19379:20;19375:1;19364:9;19360:17;19353:47;19417:131;19543:4;19417:131;:::i;:::-;19409:139;;19136:419;;;:::o;19561:236::-;19701:34;19697:1;19689:6;19685:14;19678:58;19770:19;19765:2;19757:6;19753:15;19746:44;19561:236;:::o;19803:366::-;19945:3;19966:67;20030:2;20025:3;19966:67;:::i;:::-;19959:74;;20042:93;20131:3;20042:93;:::i;:::-;20160:2;20155:3;20151:12;20144:19;;19803:366;;;:::o;20175:419::-;20341:4;20379:2;20368:9;20364:18;20356:26;;20428:9;20422:4;20418:20;20414:1;20403:9;20399:17;20392:47;20456:131;20582:4;20456:131;:::i;:::-;20448:139;;20175:419;;;:::o;20600:164::-;20740:16;20736:1;20728:6;20724:14;20717:40;20600:164;:::o;20770:366::-;20912:3;20933:67;20997:2;20992:3;20933:67;:::i;:::-;20926:74;;21009:93;21098:3;21009:93;:::i;:::-;21127:2;21122:3;21118:12;21111:19;;20770:366;;;:::o;21142:419::-;21308:4;21346:2;21335:9;21331:18;21323:26;;21395:9;21389:4;21385:20;21381:1;21370:9;21366:17;21359:47;21423:131;21549:4;21423:131;:::i;:::-;21415:139;;21142:419;;;:::o;21567:180::-;21707:32;21703:1;21695:6;21691:14;21684:56;21567:180;:::o;21753:366::-;21895:3;21916:67;21980:2;21975:3;21916:67;:::i;:::-;21909:74;;21992:93;22081:3;21992:93;:::i;:::-;22110:2;22105:3;22101:12;22094:19;;21753:366;;;:::o;22125:419::-;22291:4;22329:2;22318:9;22314:18;22306:26;;22378:9;22372:4;22368:20;22364:1;22353:9;22349:17;22342:47;22406:131;22532:4;22406:131;:::i;:::-;22398:139;;22125:419;;;:::o;22550:305::-;22590:3;22609:20;22627:1;22609:20;:::i;:::-;22604:25;;22643:20;22661:1;22643:20;:::i;:::-;22638:25;;22797:1;22729:66;22725:74;22722:1;22719:81;22716:107;;;22803:18;;:::i;:::-;22716:107;22847:1;22844;22840:9;22833:16;;22550:305;;;;:::o;22861:167::-;23001:19;22997:1;22989:6;22985:14;22978:43;22861:167;:::o;23034:366::-;23176:3;23197:67;23261:2;23256:3;23197:67;:::i;:::-;23190:74;;23273:93;23362:3;23273:93;:::i;:::-;23391:2;23386:3;23382:12;23375:19;;23034:366;;;:::o;23406:419::-;23572:4;23610:2;23599:9;23595:18;23587:26;;23659:9;23653:4;23649:20;23645:1;23634:9;23630:17;23623:47;23687:131;23813:4;23687:131;:::i;:::-;23679:139;;23406:419;;;:::o;23831:180::-;23879:77;23876:1;23869:88;23976:4;23973:1;23966:15;24000:4;23997:1;23990:15;24017:180;24065:77;24062:1;24055:88;24162:4;24159:1;24152:15;24186:4;24183:1;24176:15;24203:143;24260:5;24291:6;24285:13;24276:22;;24307:33;24334:5;24307:33;:::i;:::-;24203:143;;;;:::o;24352:351::-;24422:6;24471:2;24459:9;24450:7;24446:23;24442:32;24439:119;;;24477:79;;:::i;:::-;24439:119;24597:1;24622:64;24678:7;24669:6;24658:9;24654:22;24622:64;:::i;:::-;24612:74;;24568:128;24352:351;;;;:::o;24709:85::-;24754:7;24783:5;24772:16;;24709:85;;;:::o;24800:158::-;24858:9;24891:61;24909:42;24918:32;24944:5;24918:32;:::i;:::-;24909:42;:::i;:::-;24891:61;:::i;:::-;24878:74;;24800:158;;;:::o;24964:147::-;25059:45;25098:5;25059:45;:::i;:::-;25054:3;25047:58;24964:147;;:::o;25117:114::-;25184:6;25218:5;25212:12;25202:22;;25117:114;;;:::o;25237:184::-;25336:11;25370:6;25365:3;25358:19;25410:4;25405:3;25401:14;25386:29;;25237:184;;;;:::o;25427:132::-;25494:4;25517:3;25509:11;;25547:4;25542:3;25538:14;25530:22;;25427:132;;;:::o;25565:108::-;25642:24;25660:5;25642:24;:::i;:::-;25637:3;25630:37;25565:108;;:::o;25679:179::-;25748:10;25769:46;25811:3;25803:6;25769:46;:::i;:::-;25847:4;25842:3;25838:14;25824:28;;25679:179;;;;:::o;25864:113::-;25934:4;25966;25961:3;25957:14;25949:22;;25864:113;;;:::o;26013:732::-;26132:3;26161:54;26209:5;26161:54;:::i;:::-;26231:86;26310:6;26305:3;26231:86;:::i;:::-;26224:93;;26341:56;26391:5;26341:56;:::i;:::-;26420:7;26451:1;26436:284;26461:6;26458:1;26455:13;26436:284;;;26537:6;26531:13;26564:63;26623:3;26608:13;26564:63;:::i;:::-;26557:70;;26650:60;26703:6;26650:60;:::i;:::-;26640:70;;26496:224;26483:1;26480;26476:9;26471:14;;26436:284;;;26440:14;26736:3;26729:10;;26137:608;;;26013:732;;;;:::o;26751:831::-;27014:4;27052:3;27041:9;27037:19;27029:27;;27066:71;27134:1;27123:9;27119:17;27110:6;27066:71;:::i;:::-;27147:80;27223:2;27212:9;27208:18;27199:6;27147:80;:::i;:::-;27274:9;27268:4;27264:20;27259:2;27248:9;27244:18;27237:48;27302:108;27405:4;27396:6;27302:108;:::i;:::-;27294:116;;27420:72;27488:2;27477:9;27473:18;27464:6;27420:72;:::i;:::-;27502:73;27570:3;27559:9;27555:19;27546:6;27502:73;:::i;:::-;26751:831;;;;;;;;:::o;27588:807::-;27837:4;27875:3;27864:9;27860:19;27852:27;;27889:71;27957:1;27946:9;27942:17;27933:6;27889:71;:::i;:::-;27970:72;28038:2;28027:9;28023:18;28014:6;27970:72;:::i;:::-;28052:80;28128:2;28117:9;28113:18;28104:6;28052:80;:::i;:::-;28142;28218:2;28207:9;28203:18;28194:6;28142:80;:::i;:::-;28232:73;28300:3;28289:9;28285:19;28276:6;28232:73;:::i;:::-;28315;28383:3;28372:9;28368:19;28359:6;28315:73;:::i;:::-;27588:807;;;;;;;;;:::o;28401:143::-;28458:5;28489:6;28483:13;28474:22;;28505:33;28532:5;28505:33;:::i;:::-;28401:143;;;;:::o;28550:663::-;28638:6;28646;28654;28703:2;28691:9;28682:7;28678:23;28674:32;28671:119;;;28709:79;;:::i;:::-;28671:119;28829:1;28854:64;28910:7;28901:6;28890:9;28886:22;28854:64;:::i;:::-;28844:74;;28800:128;28967:2;28993:64;29049:7;29040:6;29029:9;29025:22;28993:64;:::i;:::-;28983:74;;28938:129;29106:2;29132:64;29188:7;29179:6;29168:9;29164:22;29132:64;:::i;:::-;29122:74;;29077:129;28550:663;;;;;:::o

Swarm Source

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