ETH Price: $3,404.43 (+2.00%)
 

Overview

Max Total Supply

100,000,000 ARCA

Holders

256

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
31,577.156092858419010012 ARCA

Value
$0.00
0x67eca156d541829381909a9e59dc02e6e5d8bd78
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:
ArcheriumAi

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-23
*/

// SPDX-License-Identifier: MIT

/*
Description: ...

Website: https://archeriumai.com/
Twitter: https://x.com/archeriumai
Telegram: https://t.me/archeriumai
*/

/*
ascii ...
*/

/*** Solidity version declaration ***/
pragma solidity 0.8.20;

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

/*** Uniswap pair creation ***/
interface IUniswapV2Factory {
    /* Creates a new liquidity pool (pair) for the two specified ERC-20 tokens `tokenA` and `tokenB` */
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

/*** Uniswap pair swap ***/
interface IUniswapV2Router02 {
    /* Swaps an exact amount of input tokens for as much ETH as possible */
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    /* Returns the address of the Uniswap factory contract */
    function factory() external pure returns (address);
    /* Returns the address of the Wrapped Ether (WETH) contract */
    function WETH() external pure returns (address);
}

/*** Math operations with checks ***/
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 result = a + b;
        require(result >= a, "SafeMath: addition overflow");
        return result;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 result = a - b;
        require(b <= a, "SafeMath: subtraction underflow");
        return result;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 result = a * b;
        require(result / a == b, "SafeMath: multiplication overflow");
        return result;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint result = a / b;
        require(b > 0, "SafeMath: modulus by zero");
        return result;
    }
}

/*** Processes blockchain data ***/
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

/*** Processes contract ownership ***/
contract Ownable is Context {
        /** Variables **/

    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

        /** Constructor **/

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

        /** Modifiers **/

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

        /** Getters **/

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

        /** Main **/

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

/*** Processes main contract logic ***/
contract ArcheriumAi is Context, IERC20, Ownable {
        /** Variables **/

    using SafeMath for uint256;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    address payable private _taxWallet; 
    uint256 private _transferTax = 0;
    uint256 private _initialBuyTax = 30;
    uint256 private _initialSellTax = 30;
    uint256 private _finalBuyTax = 3;
    uint256 private _finalSellTax = 3;
    uint256 private _reduceBuyTaxAt = 15000; // refers to '_buyCount'
    uint256 private _reduceSellTaxAt = 15000; // refers to '_buyCount'
    uint256 private _preventSwapBefore = 20; // refers to '_buyCount'
    uint256 private _buyCount = 0; // increases with every purchase from not whitelisted addresses

    bool private inSwap = false;
    bool private swapEnabled = false;

    string private constant _name = unicode"ArcheriumAi";
    string private constant _symbol = unicode"ARCA";
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 100_000_000 * 10**_decimals; // 100m (all)
    uint256 public _maxTxAmount = 1_000_000 * 10**_decimals; // 1M (1%)
    uint256 public _maxWalletSize = 1_500_000 * 10**_decimals; // 1.5M (1.5%)
    uint256 public _taxSwapThreshold = 100_000 * 10**_decimals; // 100k (0.1%)
    uint256 public _maxTaxSwap = 1_000_000 * 10**_decimals; // 1M (1%)

    event MaxTxAmountUpdated(uint _maxTxAmount);

        /** Constructor **/

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _totalSupply;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[address(this)] = true;

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

        /** Modifiers **/

    /* When added to function, handles tax swap flag 'inSwap' */
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

        /** Getters **/

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

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

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

    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 transferTax() public view  returns (uint256) {
        return _transferTax;
    }

    function initialBuyTax() public view returns (uint256) {
        return _initialBuyTax;
    }

    function initialSellTax() public view  returns (uint256) {
        return _initialSellTax;
    }

    function getBalances(address[] memory wallets) public view returns (uint256[] memory) {
        uint256[] memory balancesLocal = new uint256[](wallets.length);

        for (uint index = 0; index < wallets.length; index++) {
            balancesLocal[index] = _balances[wallets[index]];
        }

        return balancesLocal;
    }

    function checkIsAddressWhitelistedSingle(address checkAddress) public view returns (bool) {
        return _isExcludedFromFee[checkAddress];
    }

    function checkIsAddressWhitelistedGroup(address[] memory checkAddresses) public view returns (bool[] memory) {
        bool[] memory result = new bool[](checkAddresses.length);
        for (uint index = 0; index < checkAddresses.length; index++) {
            result[index] = _isExcludedFromFee[checkAddresses[index]];
        }
        return result;
    }

        /** Setters **/

    function setTransferTax(uint256 newTransferTax) public onlyOwner returns (bool) {
        _transferTax = newTransferTax;
        return true;
    }

    function setInitialBuyTax(uint256 newInitialBuyTax) public onlyOwner returns (bool) {
        _initialBuyTax = newInitialBuyTax;
        return true;
    }

    function setInitialSellTax(uint256 newInitialSellTax) public onlyOwner returns (bool) {
        _initialSellTax = newInitialSellTax;
        return true;
    }

    function addToWhitelistSingle(address newAddress) public onlyOwner {
        _isExcludedFromFee[newAddress] = true;
    }

    function addToWhitelistGroup(address[] calldata newAddresses) public onlyOwner {
        for (uint256 i = 0; i < newAddresses.length; i++) {
            _isExcludedFromFee[newAddresses[i]] = true;
        }
    }

        /** Helper (Additional) **/

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

    /* Note: 'lockSwap' handles tax swap flag 'inSwap' */
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    /* Manual swap token-tax to ETH. Note: in this case, tax swap limits do not apply */
    function manualSwap() external {
        require(_msgSender() == _taxWallet); // instead of 'onlyOwner' modifier (will still work after renounce)

        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance); // swap token-tax for ETH
        }

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance); // send ETH to '_taxWallet'
        }
    }

    /* Create a pair
       Main-net v2 router address: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
       Base-net v2 router address: 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24
     */
    function openTrading() external onlyOwner() {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
    }

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

        /** Main (Transfer) **/

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 taxAmount = 0;

        // from == uniswapV2Pair: Buy | to == uniswapV2Pair: Sell
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul(_transferTax).div(100); // transfer tax

            // buy
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100); // buy tax
                _buyCount++;
            }

            // sell
            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100); // sell tax
            }

            // tax swap on sell
            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap))); // swap token-tax for ETH (max: '_maxTaxSwap')
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance); // send tax ETH to '_taxWallet'
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount); // add token-tax to contract balance
            emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(amount); // remove 'amount' from sender balance
        _balances[to] = _balances[to].add(amount.sub(taxAmount)); // add 'amount' minus 'tax' to recipient balance
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    // contract can receive ETH
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"newAddresses","type":"address[]"}],"name":"addToWhitelistGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addToWhitelistSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"checkAddresses","type":"address[]"}],"name":"checkIsAddressWhitelistedGroup","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"checkAddress","type":"address"}],"name":"checkIsAddressWhitelistedSingle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"getBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newInitialBuyTax","type":"uint256"}],"name":"setInitialBuyTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newInitialSellTax","type":"uint256"}],"name":"setInitialSellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransferTax","type":"uint256"}],"name":"setTransferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600755601e600855601e6009556003600a556003600b55613a98600c55613a98600d556014600e555f600f555f60105f6101000a81548160ff0219169083151502179055505f601060016101000a81548160ff0219169083151502179055506012600a620000749190620005f5565b620f424062000084919062000645565b6011556012600a620000979190620005f5565b6216e360620000a7919062000645565b6012556012600a620000ba9190620005f5565b620186a0620000ca919062000645565b6013556012600a620000dd9190620005f5565b620f4240620000ed919062000645565b601455348015620000fc575f80fd5b505f6200010e6200043560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001ba6200043560201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620002099190620005f5565b6305f5e1006200021a919062000645565b60035f6200022d6200043560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f6200027f6200043c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003a96200043560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620004079190620005f5565b6305f5e10062000418919062000645565b604051620004279190620006a0565b60405180910390a3620006bb565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004ed57808604811115620004c557620004c462000463565b5b6001851615620004d55780820291505b8081029050620004e58562000490565b9450620004a5565b94509492505050565b5f82620005075760019050620005d9565b8162000516575f9050620005d9565b81600181146200052f57600281146200053a5762000570565b6001915050620005d9565b60ff8411156200054f576200054e62000463565b5b8360020a91508482111562000569576200056862000463565b5b50620005d9565b5060208310610133831016604e8410600b8410161715620005aa5782820a905083811115620005a457620005a362000463565b5b620005d9565b620005b984848460016200049c565b92509050818404811115620005d357620005d262000463565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060182620005e0565b91506200060e83620005e9565b92506200063d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004f6565b905092915050565b5f6200065182620005e0565b91506200065e83620005e0565b92508282026200066e81620005e0565b9150828204841483151762000688576200068762000463565b5b5092915050565b6200069a81620005e0565b82525050565b5f602082019050620006b55f8301846200068f565b92915050565b6137bf80620006c95f395ff3fe6080604052600436106101c5575f3560e01c80637646ba10116100f6578063a6042a4611610094578063d97e74b111610063578063d97e74b114610626578063db05944c14610662578063dd62ed3e1461068c578063eeb0a857146106c8576101cc565b8063a6042a461461056e578063a9059cbb146105aa578063bf474bed146105e6578063c9567bf914610610576101cc565b80638b525903116100d05780638b525903146104b45780638da5cb5b146104f05780638f9a55c01461051a57806395d89b4114610544576101cc565b80637646ba10146104385780637d1db4a5146104605780638124f7ac1461048a576101cc565b80633912ff97116101635780636f9f3bfc1161013d5780636f9f3bfc146103a857806370a08231146103d0578063715018a61461040c578063751039fc14610422576101cc565b80633912ff971461032c57806351bc3c85146103565780635bd17bb31461036c576101cc565b806318160ddd1161019f57806318160ddd1461026057806323b872dd1461028a5780632d2ae1c1146102c6578063313ce56714610302576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e4610704565b6040516101f19190612604565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b91906126c2565b610741565b60405161022d919061271a565b60405180910390f35b348015610241575f80fd5b5061024a61075e565b6040516102579190612742565b60405180910390f35b34801561026b575f80fd5b50610274610764565b6040516102819190612742565b60405180910390f35b348015610295575f80fd5b506102b060048036038101906102ab919061275b565b610787565b6040516102bd919061271a565b60405180910390f35b3480156102d1575f80fd5b506102ec60048036038101906102e791906128eb565b610841565b6040516102f991906129e9565b60405180910390f35b34801561030d575f80fd5b5061031661092f565b6040516103239190612a24565b60405180910390f35b348015610337575f80fd5b50610340610937565b60405161034d9190612742565b60405180910390f35b348015610361575f80fd5b5061036a610940565b005b348015610377575f80fd5b50610392600480360381019061038d9190612a3d565b6109d7565b60405161039f919061271a565b60405180910390f35b3480156103b3575f80fd5b506103ce60048036038101906103c99190612a68565b610a7c565b005b3480156103db575f80fd5b506103f660048036038101906103f19190612a68565b610b68565b6040516104039190612742565b60405180910390f35b348015610417575f80fd5b50610420610bae565b005b34801561042d575f80fd5b50610436610cfc565b005b348015610443575f80fd5b5061045e60048036038101906104599190612aec565b610e2b565b005b34801561046b575f80fd5b50610474610f60565b6040516104819190612742565b60405180910390f35b348015610495575f80fd5b5061049e610f66565b6040516104ab9190612742565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d59190612a3d565b610f6f565b6040516104e7919061271a565b60405180910390f35b3480156104fb575f80fd5b50610504611014565b6040516105119190612b46565b60405180910390f35b348015610525575f80fd5b5061052e61103b565b60405161053b9190612742565b60405180910390f35b34801561054f575f80fd5b50610558611041565b6040516105659190612604565b60405180910390f35b348015610579575f80fd5b50610594600480360381019061058f9190612a3d565b61107e565b6040516105a1919061271a565b60405180910390f35b3480156105b5575f80fd5b506105d060048036038101906105cb91906126c2565b611123565b6040516105dd919061271a565b60405180910390f35b3480156105f1575f80fd5b506105fa611140565b6040516106079190612742565b60405180910390f35b34801561061b575f80fd5b50610624611146565b005b348015610631575f80fd5b5061064c60048036038101906106479190612a68565b611545565b604051610659919061271a565b60405180910390f35b34801561066d575f80fd5b50610676611597565b6040516106839190612742565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612b5f565b6115a0565b6040516106bf9190612742565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e991906128eb565b611622565b6040516106fb9190612c54565b60405180910390f35b60606040518060400160405280600b81526020017f41726368657269756d4169000000000000000000000000000000000000000000815250905090565b5f61075461074d611722565b8484611729565b6001905092915050565b60145481565b5f6012600a6107739190612dd0565b6305f5e1006107829190612e1a565b905090565b5f6107938484846118ec565b6108368461079f611722565b6108318560045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107e9611722565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210490919063ffffffff16565b611729565b600190509392505050565b60605f825167ffffffffffffffff81111561085f5761085e6127af565b5b60405190808252806020026020018201604052801561088d5781602001602082028036833780820191505090505b5090505f5b83518110156109255760035f8583815181106108b1576108b0612e5b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482828151811061090657610905612e5b565b5b602002602001018181525050808061091d90612e88565b915050610892565b5080915050919050565b5f6012905090565b5f600854905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610980611722565b73ffffffffffffffffffffffffffffffffffffffff161461099f575f80fd5b5f6109a930610b68565b90505f8111156109bd576109bc81612161565b5b5f4790505f8111156109d3576109d2816123ca565b5b5050565b5f6109e0611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6390612f19565b60405180910390fd5b8160098190555060019050919050565b610a84611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612f19565b60405180910390fd5b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bb6611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990612f19565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d04611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8790612f19565b60405180910390fd5b6012600a610d9e9190612dd0565b6305f5e100610dad9190612e1a565b6011819055506012600a610dc19190612dd0565b6305f5e100610dd09190612e1a565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610e059190612dd0565b6305f5e100610e149190612e1a565b604051610e219190612742565b60405180910390a1565b610e33611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612f19565b60405180910390fd5b5f5b82829050811015610f5b57600160055f858585818110610ee457610ee3612e5b565b5b9050602002016020810190610ef99190612a68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f5390612e88565b915050610ec1565b505050565b60115481565b5f600754905090565b5f610f78611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90612f19565b60405180910390fd5b8160078190555060019050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600481526020017f4152434100000000000000000000000000000000000000000000000000000000815250905090565b5f611087611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90612f19565b60405180910390fd5b8160088190555060019050919050565b5f61113661112f611722565b84846118ec565b6001905092915050565b60135481565b61114e611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612f19565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112763060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6112629190612dd0565b6305f5e1006112719190612e1a565b611729565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113049190612f4b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561138a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ae9190612f4b565b6040518363ffffffff1660e01b81526004016113cb929190612f76565b6020604051808303815f875af11580156113e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140b9190612f4b565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114e7929190612f9d565b6020604051808303815f875af1158015611503573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115279190612fee565b506001601060016101000a81548160ff021916908315150217905550565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600954905090565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60605f825167ffffffffffffffff8111156116405761163f6127af565b5b60405190808252806020026020018201604052801561166e5781602001602082028036833780820191505090505b5090505f5b83518110156117185760055f85838151811061169257611691612e5b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168282815181106116f3576116f2612e5b565b5b602002602001019015159081151581525050808061171090612e88565b915050611673565b5080915050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613089565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90613117565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118df9190612742565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611951906131a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90613233565b60405180910390fd5b5f8111611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a01906132c1565b60405180910390fd5b5f611a13611014565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a815750611a51611014565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e5457611aae6064611aa06007548561243290919063ffffffff16565b6124a990919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b59575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bac575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca457601154821115611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed90613329565b60405180910390fd5b60125482611c0385610b68565b611c0d9190613347565b1115611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906133c4565b60405180910390fd5b611c8a6064611c7c600c54600f5411611c6957600854611c6d565b600a545b8561243290919063ffffffff16565b6124a990919063ffffffff16565b9050600f5f815480929190611c9e90612e88565b91905055505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d2c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d7057611d6d6064611d5f600d54600f5411611d4c57600954611d50565b600b545b8561243290919063ffffffff16565b6124a990919063ffffffff16565b90505b5f611d7a30610b68565b905060105f9054906101000a900460ff16158015611de4575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611dfc5750601060019054906101000a900460ff165b8015611e09575060135481115b8015611e185750600e54600f54115b15611e5257611e3a611e3584611e3084601454612505565b612505565b612161565b5f4790505f811115611e5057611e4f476123ca565b5b505b505b5f811115611f5357611eac8160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251d90919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4a9190612742565b60405180910390a35b611fa38260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210490919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612046611ffa828461210490919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251d90919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120e9848661210490919063ffffffff16565b6040516120f69190612742565b60405180910390a350505050565b5f80828461211291906133e2565b905083831115612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e9061345f565b60405180910390fd5b8091505092915050565b600160105f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612197576121966127af565b5b6040519080825280602002602001820160405280156121c55781602001602082028036833780820191505090505b50905030815f815181106121dc576121db612e5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612280573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a49190612f4b565b816001815181106122b8576122b7612e5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061231e3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611729565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612380959493929190613576565b5f604051808303815f87803b158015612397575f80fd5b505af11580156123a9573d5f803e3d5ffd5b50505050505f60105f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561242e573d5f803e3d5ffd5b5050565b5f808303612442575f90506124a3565b5f828461244f9190612e1a565b905082848261245e91906135fb565b1461249e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124959061369b565b60405180910390fd5b809150505b92915050565b5f8082846124b791906135fb565b90505f83116124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f290613703565b60405180910390fd5b8091505092915050565b5f8183116125135782612515565b815b905092915050565b5f80828461252b9190613347565b905083811015612570576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125679061376b565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125b1578082015181840152602081019050612596565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125d68261257a565b6125e08185612584565b93506125f0818560208601612594565b6125f9816125bc565b840191505092915050565b5f6020820190508181035f83015261261c81846125cc565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61265e82612635565b9050919050565b61266e81612654565b8114612678575f80fd5b50565b5f8135905061268981612665565b92915050565b5f819050919050565b6126a18161268f565b81146126ab575f80fd5b50565b5f813590506126bc81612698565b92915050565b5f80604083850312156126d8576126d761262d565b5b5f6126e58582860161267b565b92505060206126f6858286016126ae565b9150509250929050565b5f8115159050919050565b61271481612700565b82525050565b5f60208201905061272d5f83018461270b565b92915050565b61273c8161268f565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f805f606084860312156127725761277161262d565b5b5f61277f8682870161267b565b93505060206127908682870161267b565b92505060406127a1868287016126ae565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6127e5826125bc565b810181811067ffffffffffffffff82111715612804576128036127af565b5b80604052505050565b5f612816612624565b905061282282826127dc565b919050565b5f67ffffffffffffffff821115612841576128406127af565b5b602082029050602081019050919050565b5f80fd5b5f61286861286384612827565b61280d565b9050808382526020820190506020840283018581111561288b5761288a612852565b5b835b818110156128b457806128a0888261267b565b84526020840193505060208101905061288d565b5050509392505050565b5f82601f8301126128d2576128d16127ab565b5b81356128e2848260208601612856565b91505092915050565b5f60208284031215612900576128ff61262d565b5b5f82013567ffffffffffffffff81111561291d5761291c612631565b5b612929848285016128be565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129648161268f565b82525050565b5f612975838361295b565b60208301905092915050565b5f602082019050919050565b5f61299782612932565b6129a1818561293c565b93506129ac8361294c565b805f5b838110156129dc5781516129c3888261296a565b97506129ce83612981565b9250506001810190506129af565b5085935050505092915050565b5f6020820190508181035f830152612a01818461298d565b905092915050565b5f60ff82169050919050565b612a1e81612a09565b82525050565b5f602082019050612a375f830184612a15565b92915050565b5f60208284031215612a5257612a5161262d565b5b5f612a5f848285016126ae565b91505092915050565b5f60208284031215612a7d57612a7c61262d565b5b5f612a8a8482850161267b565b91505092915050565b5f80fd5b5f8083601f840112612aac57612aab6127ab565b5b8235905067ffffffffffffffff811115612ac957612ac8612a93565b5b602083019150836020820283011115612ae557612ae4612852565b5b9250929050565b5f8060208385031215612b0257612b0161262d565b5b5f83013567ffffffffffffffff811115612b1f57612b1e612631565b5b612b2b85828601612a97565b92509250509250929050565b612b4081612654565b82525050565b5f602082019050612b595f830184612b37565b92915050565b5f8060408385031215612b7557612b7461262d565b5b5f612b828582860161267b565b9250506020612b938582860161267b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612bcf81612700565b82525050565b5f612be08383612bc6565b60208301905092915050565b5f602082019050919050565b5f612c0282612b9d565b612c0c8185612ba7565b9350612c1783612bb7565b805f5b83811015612c47578151612c2e8882612bd5565b9750612c3983612bec565b925050600181019050612c1a565b5085935050505092915050565b5f6020820190508181035f830152612c6c8184612bf8565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612cf657808604811115612cd257612cd1612c74565b5b6001851615612ce15780820291505b8081029050612cef85612ca1565b9450612cb6565b94509492505050565b5f82612d0e5760019050612dc9565b81612d1b575f9050612dc9565b8160018114612d315760028114612d3b57612d6a565b6001915050612dc9565b60ff841115612d4d57612d4c612c74565b5b8360020a915084821115612d6457612d63612c74565b5b50612dc9565b5060208310610133831016604e8410600b8410161715612d9f5782820a905083811115612d9a57612d99612c74565b5b612dc9565b612dac8484846001612cad565b92509050818404811115612dc357612dc2612c74565b5b81810290505b9392505050565b5f612dda8261268f565b9150612de583612a09565b9250612e127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cff565b905092915050565b5f612e248261268f565b9150612e2f8361268f565b9250828202612e3d8161268f565b91508282048414831517612e5457612e53612c74565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612e928261268f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ec457612ec3612c74565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f03602083612584565b9150612f0e82612ecf565b602082019050919050565b5f6020820190508181035f830152612f3081612ef7565b9050919050565b5f81519050612f4581612665565b92915050565b5f60208284031215612f6057612f5f61262d565b5b5f612f6d84828501612f37565b91505092915050565b5f604082019050612f895f830185612b37565b612f966020830184612b37565b9392505050565b5f604082019050612fb05f830185612b37565b612fbd6020830184612733565b9392505050565b612fcd81612700565b8114612fd7575f80fd5b50565b5f81519050612fe881612fc4565b92915050565b5f602082840312156130035761300261262d565b5b5f61301084828501612fda565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613073602483612584565b915061307e82613019565b604082019050919050565b5f6020820190508181035f8301526130a081613067565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613101602283612584565b915061310c826130a7565b604082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61318f602583612584565b915061319a82613135565b604082019050919050565b5f6020820190508181035f8301526131bc81613183565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61321d602383612584565b9150613228826131c3565b604082019050919050565b5f6020820190508181035f83015261324a81613211565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132ab602983612584565b91506132b682613251565b604082019050919050565b5f6020820190508181035f8301526132d88161329f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613313601983612584565b915061331e826132df565b602082019050919050565b5f6020820190508181035f83015261334081613307565b9050919050565b5f6133518261268f565b915061335c8361268f565b925082820190508082111561337457613373612c74565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133ae601a83612584565b91506133b98261337a565b602082019050919050565b5f6020820190508181035f8301526133db816133a2565b9050919050565b5f6133ec8261268f565b91506133f78361268f565b925082820390508181111561340f5761340e612c74565b5b92915050565b7f536166654d6174683a207375627472616374696f6e20756e646572666c6f77005f82015250565b5f613449601f83612584565b915061345482613415565b602082019050919050565b5f6020820190508181035f8301526134768161343d565b9050919050565b5f819050919050565b5f819050919050565b5f6134a96134a461349f8461347d565b613486565b61268f565b9050919050565b6134b98161348f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134f181612654565b82525050565b5f61350283836134e8565b60208301905092915050565b5f602082019050919050565b5f613524826134bf565b61352e81856134c9565b9350613539836134d9565b805f5b8381101561356957815161355088826134f7565b975061355b8361350e565b92505060018101905061353c565b5085935050505092915050565b5f60a0820190506135895f830188612733565b61359660208301876134b0565b81810360408301526135a8818661351a565b90506135b76060830185612b37565b6135c46080830184612733565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136058261268f565b91506136108361268f565b9250826136205761361f6135ce565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613685602183612584565b91506136908261362b565b604082019050919050565b5f6020820190508181035f8301526136b281613679565b9050919050565b7f536166654d6174683a206d6f64756c7573206279207a65726f000000000000005f82015250565b5f6136ed601983612584565b91506136f8826136b9565b602082019050919050565b5f6020820190508181035f83015261371a816136e1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613755601b83612584565b915061376082613721565b602082019050919050565b5f6020820190508181035f83015261378281613749565b905091905056fea2646970667358221220f967369db01b11f65fa47cf57af90874004d08f85bc2097eb162ae08cce2fb5464736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c80637646ba10116100f6578063a6042a4611610094578063d97e74b111610063578063d97e74b114610626578063db05944c14610662578063dd62ed3e1461068c578063eeb0a857146106c8576101cc565b8063a6042a461461056e578063a9059cbb146105aa578063bf474bed146105e6578063c9567bf914610610576101cc565b80638b525903116100d05780638b525903146104b45780638da5cb5b146104f05780638f9a55c01461051a57806395d89b4114610544576101cc565b80637646ba10146104385780637d1db4a5146104605780638124f7ac1461048a576101cc565b80633912ff97116101635780636f9f3bfc1161013d5780636f9f3bfc146103a857806370a08231146103d0578063715018a61461040c578063751039fc14610422576101cc565b80633912ff971461032c57806351bc3c85146103565780635bd17bb31461036c576101cc565b806318160ddd1161019f57806318160ddd1461026057806323b872dd1461028a5780632d2ae1c1146102c6578063313ce56714610302576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e4610704565b6040516101f19190612604565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b91906126c2565b610741565b60405161022d919061271a565b60405180910390f35b348015610241575f80fd5b5061024a61075e565b6040516102579190612742565b60405180910390f35b34801561026b575f80fd5b50610274610764565b6040516102819190612742565b60405180910390f35b348015610295575f80fd5b506102b060048036038101906102ab919061275b565b610787565b6040516102bd919061271a565b60405180910390f35b3480156102d1575f80fd5b506102ec60048036038101906102e791906128eb565b610841565b6040516102f991906129e9565b60405180910390f35b34801561030d575f80fd5b5061031661092f565b6040516103239190612a24565b60405180910390f35b348015610337575f80fd5b50610340610937565b60405161034d9190612742565b60405180910390f35b348015610361575f80fd5b5061036a610940565b005b348015610377575f80fd5b50610392600480360381019061038d9190612a3d565b6109d7565b60405161039f919061271a565b60405180910390f35b3480156103b3575f80fd5b506103ce60048036038101906103c99190612a68565b610a7c565b005b3480156103db575f80fd5b506103f660048036038101906103f19190612a68565b610b68565b6040516104039190612742565b60405180910390f35b348015610417575f80fd5b50610420610bae565b005b34801561042d575f80fd5b50610436610cfc565b005b348015610443575f80fd5b5061045e60048036038101906104599190612aec565b610e2b565b005b34801561046b575f80fd5b50610474610f60565b6040516104819190612742565b60405180910390f35b348015610495575f80fd5b5061049e610f66565b6040516104ab9190612742565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d59190612a3d565b610f6f565b6040516104e7919061271a565b60405180910390f35b3480156104fb575f80fd5b50610504611014565b6040516105119190612b46565b60405180910390f35b348015610525575f80fd5b5061052e61103b565b60405161053b9190612742565b60405180910390f35b34801561054f575f80fd5b50610558611041565b6040516105659190612604565b60405180910390f35b348015610579575f80fd5b50610594600480360381019061058f9190612a3d565b61107e565b6040516105a1919061271a565b60405180910390f35b3480156105b5575f80fd5b506105d060048036038101906105cb91906126c2565b611123565b6040516105dd919061271a565b60405180910390f35b3480156105f1575f80fd5b506105fa611140565b6040516106079190612742565b60405180910390f35b34801561061b575f80fd5b50610624611146565b005b348015610631575f80fd5b5061064c60048036038101906106479190612a68565b611545565b604051610659919061271a565b60405180910390f35b34801561066d575f80fd5b50610676611597565b6040516106839190612742565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612b5f565b6115a0565b6040516106bf9190612742565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e991906128eb565b611622565b6040516106fb9190612c54565b60405180910390f35b60606040518060400160405280600b81526020017f41726368657269756d4169000000000000000000000000000000000000000000815250905090565b5f61075461074d611722565b8484611729565b6001905092915050565b60145481565b5f6012600a6107739190612dd0565b6305f5e1006107829190612e1a565b905090565b5f6107938484846118ec565b6108368461079f611722565b6108318560045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107e9611722565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210490919063ffffffff16565b611729565b600190509392505050565b60605f825167ffffffffffffffff81111561085f5761085e6127af565b5b60405190808252806020026020018201604052801561088d5781602001602082028036833780820191505090505b5090505f5b83518110156109255760035f8583815181106108b1576108b0612e5b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482828151811061090657610905612e5b565b5b602002602001018181525050808061091d90612e88565b915050610892565b5080915050919050565b5f6012905090565b5f600854905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610980611722565b73ffffffffffffffffffffffffffffffffffffffff161461099f575f80fd5b5f6109a930610b68565b90505f8111156109bd576109bc81612161565b5b5f4790505f8111156109d3576109d2816123ca565b5b5050565b5f6109e0611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6390612f19565b60405180910390fd5b8160098190555060019050919050565b610a84611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612f19565b60405180910390fd5b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bb6611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990612f19565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d04611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8790612f19565b60405180910390fd5b6012600a610d9e9190612dd0565b6305f5e100610dad9190612e1a565b6011819055506012600a610dc19190612dd0565b6305f5e100610dd09190612e1a565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610e059190612dd0565b6305f5e100610e149190612e1a565b604051610e219190612742565b60405180910390a1565b610e33611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612f19565b60405180910390fd5b5f5b82829050811015610f5b57600160055f858585818110610ee457610ee3612e5b565b5b9050602002016020810190610ef99190612a68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f5390612e88565b915050610ec1565b505050565b60115481565b5f600754905090565b5f610f78611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90612f19565b60405180910390fd5b8160078190555060019050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600481526020017f4152434100000000000000000000000000000000000000000000000000000000815250905090565b5f611087611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90612f19565b60405180910390fd5b8160088190555060019050919050565b5f61113661112f611722565b84846118ec565b6001905092915050565b60135481565b61114e611722565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612f19565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112763060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6112629190612dd0565b6305f5e1006112719190612e1a565b611729565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113049190612f4b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561138a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ae9190612f4b565b6040518363ffffffff1660e01b81526004016113cb929190612f76565b6020604051808303815f875af11580156113e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140b9190612f4b565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114e7929190612f9d565b6020604051808303815f875af1158015611503573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115279190612fee565b506001601060016101000a81548160ff021916908315150217905550565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600954905090565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60605f825167ffffffffffffffff8111156116405761163f6127af565b5b60405190808252806020026020018201604052801561166e5781602001602082028036833780820191505090505b5090505f5b83518110156117185760055f85838151811061169257611691612e5b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168282815181106116f3576116f2612e5b565b5b602002602001019015159081151581525050808061171090612e88565b915050611673565b5080915050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613089565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90613117565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118df9190612742565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611951906131a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90613233565b60405180910390fd5b5f8111611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a01906132c1565b60405180910390fd5b5f611a13611014565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a815750611a51611014565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e5457611aae6064611aa06007548561243290919063ffffffff16565b6124a990919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b59575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bac575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca457601154821115611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed90613329565b60405180910390fd5b60125482611c0385610b68565b611c0d9190613347565b1115611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906133c4565b60405180910390fd5b611c8a6064611c7c600c54600f5411611c6957600854611c6d565b600a545b8561243290919063ffffffff16565b6124a990919063ffffffff16565b9050600f5f815480929190611c9e90612e88565b91905055505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d2c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d7057611d6d6064611d5f600d54600f5411611d4c57600954611d50565b600b545b8561243290919063ffffffff16565b6124a990919063ffffffff16565b90505b5f611d7a30610b68565b905060105f9054906101000a900460ff16158015611de4575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611dfc5750601060019054906101000a900460ff165b8015611e09575060135481115b8015611e185750600e54600f54115b15611e5257611e3a611e3584611e3084601454612505565b612505565b612161565b5f4790505f811115611e5057611e4f476123ca565b5b505b505b5f811115611f5357611eac8160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251d90919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4a9190612742565b60405180910390a35b611fa38260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210490919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612046611ffa828461210490919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251d90919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120e9848661210490919063ffffffff16565b6040516120f69190612742565b60405180910390a350505050565b5f80828461211291906133e2565b905083831115612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e9061345f565b60405180910390fd5b8091505092915050565b600160105f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612197576121966127af565b5b6040519080825280602002602001820160405280156121c55781602001602082028036833780820191505090505b50905030815f815181106121dc576121db612e5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612280573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a49190612f4b565b816001815181106122b8576122b7612e5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061231e3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611729565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612380959493929190613576565b5f604051808303815f87803b158015612397575f80fd5b505af11580156123a9573d5f803e3d5ffd5b50505050505f60105f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561242e573d5f803e3d5ffd5b5050565b5f808303612442575f90506124a3565b5f828461244f9190612e1a565b905082848261245e91906135fb565b1461249e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124959061369b565b60405180910390fd5b809150505b92915050565b5f8082846124b791906135fb565b90505f83116124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f290613703565b60405180910390fd5b8091505092915050565b5f8183116125135782612515565b815b905092915050565b5f80828461252b9190613347565b905083811015612570576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125679061376b565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125b1578082015181840152602081019050612596565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125d68261257a565b6125e08185612584565b93506125f0818560208601612594565b6125f9816125bc565b840191505092915050565b5f6020820190508181035f83015261261c81846125cc565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61265e82612635565b9050919050565b61266e81612654565b8114612678575f80fd5b50565b5f8135905061268981612665565b92915050565b5f819050919050565b6126a18161268f565b81146126ab575f80fd5b50565b5f813590506126bc81612698565b92915050565b5f80604083850312156126d8576126d761262d565b5b5f6126e58582860161267b565b92505060206126f6858286016126ae565b9150509250929050565b5f8115159050919050565b61271481612700565b82525050565b5f60208201905061272d5f83018461270b565b92915050565b61273c8161268f565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f805f606084860312156127725761277161262d565b5b5f61277f8682870161267b565b93505060206127908682870161267b565b92505060406127a1868287016126ae565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6127e5826125bc565b810181811067ffffffffffffffff82111715612804576128036127af565b5b80604052505050565b5f612816612624565b905061282282826127dc565b919050565b5f67ffffffffffffffff821115612841576128406127af565b5b602082029050602081019050919050565b5f80fd5b5f61286861286384612827565b61280d565b9050808382526020820190506020840283018581111561288b5761288a612852565b5b835b818110156128b457806128a0888261267b565b84526020840193505060208101905061288d565b5050509392505050565b5f82601f8301126128d2576128d16127ab565b5b81356128e2848260208601612856565b91505092915050565b5f60208284031215612900576128ff61262d565b5b5f82013567ffffffffffffffff81111561291d5761291c612631565b5b612929848285016128be565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129648161268f565b82525050565b5f612975838361295b565b60208301905092915050565b5f602082019050919050565b5f61299782612932565b6129a1818561293c565b93506129ac8361294c565b805f5b838110156129dc5781516129c3888261296a565b97506129ce83612981565b9250506001810190506129af565b5085935050505092915050565b5f6020820190508181035f830152612a01818461298d565b905092915050565b5f60ff82169050919050565b612a1e81612a09565b82525050565b5f602082019050612a375f830184612a15565b92915050565b5f60208284031215612a5257612a5161262d565b5b5f612a5f848285016126ae565b91505092915050565b5f60208284031215612a7d57612a7c61262d565b5b5f612a8a8482850161267b565b91505092915050565b5f80fd5b5f8083601f840112612aac57612aab6127ab565b5b8235905067ffffffffffffffff811115612ac957612ac8612a93565b5b602083019150836020820283011115612ae557612ae4612852565b5b9250929050565b5f8060208385031215612b0257612b0161262d565b5b5f83013567ffffffffffffffff811115612b1f57612b1e612631565b5b612b2b85828601612a97565b92509250509250929050565b612b4081612654565b82525050565b5f602082019050612b595f830184612b37565b92915050565b5f8060408385031215612b7557612b7461262d565b5b5f612b828582860161267b565b9250506020612b938582860161267b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612bcf81612700565b82525050565b5f612be08383612bc6565b60208301905092915050565b5f602082019050919050565b5f612c0282612b9d565b612c0c8185612ba7565b9350612c1783612bb7565b805f5b83811015612c47578151612c2e8882612bd5565b9750612c3983612bec565b925050600181019050612c1a565b5085935050505092915050565b5f6020820190508181035f830152612c6c8184612bf8565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612cf657808604811115612cd257612cd1612c74565b5b6001851615612ce15780820291505b8081029050612cef85612ca1565b9450612cb6565b94509492505050565b5f82612d0e5760019050612dc9565b81612d1b575f9050612dc9565b8160018114612d315760028114612d3b57612d6a565b6001915050612dc9565b60ff841115612d4d57612d4c612c74565b5b8360020a915084821115612d6457612d63612c74565b5b50612dc9565b5060208310610133831016604e8410600b8410161715612d9f5782820a905083811115612d9a57612d99612c74565b5b612dc9565b612dac8484846001612cad565b92509050818404811115612dc357612dc2612c74565b5b81810290505b9392505050565b5f612dda8261268f565b9150612de583612a09565b9250612e127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cff565b905092915050565b5f612e248261268f565b9150612e2f8361268f565b9250828202612e3d8161268f565b91508282048414831517612e5457612e53612c74565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612e928261268f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ec457612ec3612c74565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f03602083612584565b9150612f0e82612ecf565b602082019050919050565b5f6020820190508181035f830152612f3081612ef7565b9050919050565b5f81519050612f4581612665565b92915050565b5f60208284031215612f6057612f5f61262d565b5b5f612f6d84828501612f37565b91505092915050565b5f604082019050612f895f830185612b37565b612f966020830184612b37565b9392505050565b5f604082019050612fb05f830185612b37565b612fbd6020830184612733565b9392505050565b612fcd81612700565b8114612fd7575f80fd5b50565b5f81519050612fe881612fc4565b92915050565b5f602082840312156130035761300261262d565b5b5f61301084828501612fda565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613073602483612584565b915061307e82613019565b604082019050919050565b5f6020820190508181035f8301526130a081613067565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613101602283612584565b915061310c826130a7565b604082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61318f602583612584565b915061319a82613135565b604082019050919050565b5f6020820190508181035f8301526131bc81613183565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61321d602383612584565b9150613228826131c3565b604082019050919050565b5f6020820190508181035f83015261324a81613211565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132ab602983612584565b91506132b682613251565b604082019050919050565b5f6020820190508181035f8301526132d88161329f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613313601983612584565b915061331e826132df565b602082019050919050565b5f6020820190508181035f83015261334081613307565b9050919050565b5f6133518261268f565b915061335c8361268f565b925082820190508082111561337457613373612c74565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133ae601a83612584565b91506133b98261337a565b602082019050919050565b5f6020820190508181035f8301526133db816133a2565b9050919050565b5f6133ec8261268f565b91506133f78361268f565b925082820390508181111561340f5761340e612c74565b5b92915050565b7f536166654d6174683a207375627472616374696f6e20756e646572666c6f77005f82015250565b5f613449601f83612584565b915061345482613415565b602082019050919050565b5f6020820190508181035f8301526134768161343d565b9050919050565b5f819050919050565b5f819050919050565b5f6134a96134a461349f8461347d565b613486565b61268f565b9050919050565b6134b98161348f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134f181612654565b82525050565b5f61350283836134e8565b60208301905092915050565b5f602082019050919050565b5f613524826134bf565b61352e81856134c9565b9350613539836134d9565b805f5b8381101561356957815161355088826134f7565b975061355b8361350e565b92505060018101905061353c565b5085935050505092915050565b5f60a0820190506135895f830188612733565b61359660208301876134b0565b81810360408301526135a8818661351a565b90506135b76060830185612b37565b6135c46080830184612733565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136058261268f565b91506136108361268f565b9250826136205761361f6135ce565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613685602183612584565b91506136908261362b565b604082019050919050565b5f6020820190508181035f8301526136b281613679565b9050919050565b7f536166654d6174683a206d6f64756c7573206279207a65726f000000000000005f82015250565b5f6136ed601983612584565b91506136f8826136b9565b602082019050919050565b5f6020820190508181035f83015261371a816136e1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613755601b83612584565b915061376082613721565b602082019050919050565b5f6020820190508181035f83015261378281613749565b905091905056fea2646970667358221220f967369db01b11f65fa47cf57af90874004d08f85bc2097eb162ae08cce2fb5464736f6c63430008140033

Deployed Bytecode Sourcemap

3853:10707:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6463:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11061:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5363:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6077:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11405:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7049:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6649:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6840:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9695:492;;;;;;;;;;;;;:::i;:::-;;8276:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8446:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6185:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3657:148;;;;;;;;;;;;;:::i;:::-;;10841:177;;;;;;;;;;;;;:::i;:::-;;8577:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5131:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6740:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7952:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3546:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5204:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6554:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8110:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11230:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5283:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10384:449;;;;;;;;;;;;;:::i;:::-;;7398:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6943:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6312:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7554:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6463:83;6500:13;6533:5;;;;;;;;;;;;;;;;;6526:12;;6463:83;:::o;11061:161::-;11136:4;11153:39;11162:12;:10;:12::i;:::-;11176:7;11185:6;11153:8;:39::i;:::-;11210:4;11203:11;;11061:161;;;;:::o;5363:54::-;;;;:::o;6077:100::-;6130:7;5034:2;5097;:13;;;;:::i;:::-;5083:11;:27;;;;:::i;:::-;6150:19;;6077:100;:::o;11405:269::-;11503:4;11520:36;11530:6;11538:9;11549:6;11520:9;:36::i;:::-;11567:77;11576:6;11584:12;:10;:12::i;:::-;11598:45;11636:6;11598:11;:19;11610:6;11598:19;;;;;;;;;;;;;;;:33;11618:12;:10;:12::i;:::-;11598:33;;;;;;;;;;;;;;;;:37;;:45;;;;:::i;:::-;11567:8;:77::i;:::-;11662:4;11655:11;;11405:269;;;;;:::o;7049:341::-;7117:16;7146:30;7193:7;:14;7179:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7146:62;;7226:10;7221:129;7250:7;:14;7242:5;:22;7221:129;;;7313:9;:25;7323:7;7331:5;7323:14;;;;;;;;:::i;:::-;;;;;;;;7313:25;;;;;;;;;;;;;;;;7290:13;7304:5;7290:20;;;;;;;;:::i;:::-;;;;;;;:48;;;;;7266:7;;;;;:::i;:::-;;;;7221:129;;;;7369:13;7362:20;;;7049:341;;;:::o;6649:83::-;6690:5;5034:2;6708:16;;6649:83;:::o;6840:95::-;6886:7;6913:14;;6906:21;;6840:95;:::o;9695:492::-;9761:10;;;;;;;;;;;9745:26;;:12;:10;:12::i;:::-;:26;;;9737:35;;;;;;9853:20;9876:24;9894:4;9876:9;:24::i;:::-;9853:47;;9930:1;9915:12;:16;9911:105;;;9948:30;9965:12;9948:16;:30::i;:::-;9911:105;10028:18;10049:21;10028:42;;10098:1;10085:10;:14;10081:99;;;10116:24;10129:10;10116:12;:24::i;:::-;10081:99;9726:461;;9695:492::o;8276:162::-;8356:4;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8391:17:::1;8373:15;:35;;;;8426:4;8419:11;;8276:162:::0;;;:::o;8446:123::-;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8557:4:::1;8524:18;:30;8543:10;8524:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8446:123:::0;:::o;6185:119::-;6251:7;6278:9;:18;6288:7;6278:18;;;;;;;;;;;;;;;;6271:25;;6185:119;;;:::o;3657:148::-;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3764:1:::1;3727:40;;3748:6;::::0;::::1;;;;;;;;3727:40;;;;;;;;;;;;3795:1;3778:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3657:148::o:0;10841:177::-;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5034:2:::1;5097;:13;;;;:::i;:::-;5083:11;:27;;;;:::i;:::-;10895:12;:27;;;;5034:2;5097;:13;;;;:::i;:::-;5083:11;:27;;;;:::i;:::-;10933:14;:29;;;;10978:32;5034:2;5097;:13;;;;:::i;:::-;5083:11;:27;;;;:::i;:::-;10978:32;;;;;;:::i;:::-;;;;;;;;10841:177::o:0;8577:216::-;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8672:9:::1;8667:119;8691:12;;:19;;8687:1;:23;8667:119;;;8770:4;8732:18;:35;8751:12;;8764:1;8751:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8732:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;8712:3;;;;;:::i;:::-;;;;8667:119;;;;8577:216:::0;;:::o;5131:55::-;;;;:::o;6740:92::-;6785:7;6812:12;;6805:19;;6740:92;:::o;7952:150::-;8026:4;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8058:14:::1;8043:12;:29;;;;8090:4;8083:11;;7952:150:::0;;;:::o;3546:79::-;3584:7;3611:6;;;;;;;;;;;3604:13;;3546:79;:::o;5204:57::-;;;;:::o;6554:87::-;6593:13;6626:7;;;;;;;;;;;;;;;;;6619:14;;6554:87;:::o;8110:158::-;8188:4;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8222:16:::1;8205:14;:33;;;;8256:4;8249:11;;8110:158:::0;;;:::o;11230:167::-;11308:4;11325:42;11335:12;:10;:12::i;:::-;11349:9;11360:6;11325:9;:42::i;:::-;11385:4;11378:11;;11230:167;;;;:::o;5283:58::-;;;;:::o;10384:449::-;3442:12;:10;:12::i;:::-;3432:22;;:6;;;;;;;;;;:22;;;3424:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10476:42:::1;10439:15;;:80;;;;;;;;;;;;;;;;;;10530:63;10547:4;10562:15;;;;;;;;;;;5034:2;5097;:13;;;;:::i;:::-;5083:11;:27;;;;:::i;:::-;10530:8;:63::i;:::-;10638:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10620:55;;;10684:4;10691:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10620:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10604:13;;:110;;;;;;;;;;;;;;;;;;10732:13;;;;;;;;;;;10725:29;;;10763:15;;;;;;;;;;;10781:14;10725:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10821:4;10807:11;;:18;;;;;;;;;;;;;;;;;;10384:449::o:0;7398:148::-;7482:4;7506:18;:32;7525:12;7506:32;;;;;;;;;;;;;;;;;;;;;;;;;7499:39;;7398:148;;;:::o;6943:98::-;6991:7;7018:15;;7011:22;;6943:98;:::o;6312:143::-;6393:7;6420:11;:18;6432:5;6420:18;;;;;;;;;;;;;;;:27;6439:7;6420:27;;;;;;;;;;;;;;;;6413:34;;6312:143;;;;:::o;7554:363::-;7648:13;7674:20;7708:14;:21;7697:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7674:56;;7746:10;7741:145;7770:14;:21;7762:5;:29;7741:145;;;7833:18;:41;7852:14;7867:5;7852:21;;;;;;;;:::i;:::-;;;;;;;;7833:41;;;;;;;;;;;;;;;;;;;;;;;;;7817:6;7824:5;7817:13;;;;;;;;:::i;:::-;;;;;;;:57;;;;;;;;;;;7793:7;;;;;:::i;:::-;;;;7741:145;;;;7903:6;7896:13;;;7554:363;;;:::o;2840:98::-;2893:7;2920:10;2913:17;;2840:98;:::o;11682:335::-;11792:1;11775:19;;:5;:19;;;11767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11873:1;11854:21;;:7;:21;;;11846:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11955:6;11925:11;:18;11937:5;11925:18;;;;;;;;;;;;;;;:27;11944:7;11925:27;;;;;;;;;;;;;;;:36;;;;11993:7;11977:32;;11986:5;11977:32;;;12002:6;11977:32;;;;;;:::i;:::-;;;;;;;;11682:335;;;:::o;12025:2462::-;12129:1;12113:18;;:4;:18;;;12105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12206:1;12192:16;;:2;:16;;;12184:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12276:1;12267:6;:10;12259:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12336:17;12449:7;:5;:7::i;:::-;12441:15;;:4;:15;;;;:32;;;;;12466:7;:5;:7::i;:::-;12460:13;;:2;:13;;;;12441:32;12437:1552;;;12502:33;12531:3;12502:24;12513:12;;12502:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12490:45;;12600:13;;;;;;;;;;;12592:21;;:4;:21;;;:55;;;;;12631:15;;;;;;;;;;;12617:30;;:2;:30;;;;12592:55;:82;;;;;12652:18;:22;12671:2;12652:22;;;;;;;;;;;;;;;;;;;;;;;;;12651:23;12592:82;12588:435;;;12713:12;;12703:6;:22;;12695:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12808:14;;12798:6;12782:13;12792:2;12782:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12774:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12884:82;12962:3;12884:73;12908:15;;12896:9;;:27;12895:61;;12942:14;;12895:61;;;12927:12;;12895:61;12884:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;12872:94;;12996:9;;:11;;;;;;;;;:::i;:::-;;;;;;12588:435;13070:13;;;;;;;;;;;13064:19;;:2;:19;;;:44;;;;;13103:4;13087:21;;:4;:21;;;;13064:44;13060:194;;;13141:85;13222:3;13141:76;13165:16;;13153:9;;:28;13152:64;;13201:15;;13152:64;;;13185:13;;13152:64;13141:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;13129:97;;13060:194;13303:28;13334:24;13352:4;13334:9;:24::i;:::-;13303:55;;13396:6;;;;;;;;;;;13395:7;:47;;;;;13429:13;;;;;;;;;;;13423:19;;:2;:19;;;13395:47;:79;;;;;13463:11;;;;;;;;;;;13395:79;:140;;;;;13518:17;;13495:20;:40;13395:140;:191;;;;;13568:18;;13556:9;;:30;13395:191;13373:605;;;13621:69;13638:51;13642:6;13650:38;13654:20;13676:11;;13650:3;:38::i;:::-;13638:3;:51::i;:::-;13621:16;:69::i;:::-;13756:26;13785:21;13756:50;;13850:1;13829:18;:22;13825:138;;;13876:35;13889:21;13876:12;:35::i;:::-;13825:138;13602:376;13373:605;12475:1514;12437:1552;14017:1;14005:9;:13;14001:209;;;14062:39;14091:9;14062;:24;14080:4;14062:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;14035:9;:24;14053:4;14035:24;;;;;;;;;;;;;;;:66;;;;14181:4;14158:40;;14167:4;14158:40;;;14188:9;14158:40;;;;;;:::i;:::-;;;;;;;;14001:209;14240:27;14260:6;14240:9;:15;14250:4;14240:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;14222:9;:15;14232:4;14222:15;;;;;;;;;;;;;;;:45;;;;14333:40;14351:21;14362:9;14351:6;:10;;:21;;;;:::i;:::-;14333:9;:13;14343:2;14333:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;14317:9;:13;14327:2;14317:13;;;;;;;;;;;;;;;:56;;;;14453:2;14438:41;;14447:4;14438:41;;;14457:21;14468:9;14457:6;:10;;:21;;;;:::i;:::-;14438:41;;;;;;:::i;:::-;;;;;;;;12094:2393;12025:2462;;;:::o;2110:193::-;2168:7;2188:14;2209:1;2205;:5;;;;:::i;:::-;2188:22;;2234:1;2229;:6;;2221:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2289:6;2282:13;;;2110:193;;;;:::o;9014:483::-;5993:4;5984:6;;:13;;;;;;;;;;;;;;;;;;9092:21:::1;9130:1;9116:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9092:40;;9161:4;9143;9148:1;9143:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9187:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9177:4;9182:1;9177:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9220:62;9237:4;9252:15;;;;;;;;;;;9270:11;9220:8;:62::i;:::-;9293:15;;;;;;;;;;;:66;;;9374:11;9400:1;9416:4;9443;9463:15;9293:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9081:416;6029:5:::0;6020:6;;:14;;;;;;;;;;;;;;;;;;9014:483;:::o;9505:92::-;9562:10;;;;;;;;;;;:19;;:27;9582:6;9562:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9505:92;:::o;2311:261::-;2369:7;2398:1;2393;:6;2389:47;;2423:1;2416:8;;;;2389:47;2446:14;2467:1;2463;:5;;;;:::i;:::-;2446:22;;2501:1;2496;2487:6;:10;;;;:::i;:::-;:15;2479:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;2558:6;2551:13;;;2311:261;;;;;:::o;2580:183::-;2638:7;2658:11;2676:1;2672;:5;;;;:::i;:::-;2658:19;;2700:1;2696;:5;2688:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;2749:6;2742:13;;;2580:183;;;;:::o;8840:107::-;8897:7;8929:1;8925;:5;8924:15;;8938:1;8924:15;;;8934:1;8924:15;8917:22;;8840:107;;;;:::o;1908:194::-;1966:7;1986:14;2007:1;2003;:5;;;;:::i;:::-;1986:22;;2037:1;2027:6;:11;;2019:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;2088:6;2081:13;;;1908:194;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:117::-;4532:1;4529;4522:12;4546:180;4594:77;4591:1;4584:88;4691:4;4688:1;4681:15;4715:4;4712:1;4705:15;4732:281;4815:27;4837:4;4815:27;:::i;:::-;4807:6;4803:40;4945:6;4933:10;4930:22;4909:18;4897:10;4894:34;4891:62;4888:88;;;4956:18;;:::i;:::-;4888:88;4996:10;4992:2;4985:22;4775:238;4732:281;;:::o;5019:129::-;5053:6;5080:20;;:::i;:::-;5070:30;;5109:33;5137:4;5129:6;5109:33;:::i;:::-;5019:129;;;:::o;5154:311::-;5231:4;5321:18;5313:6;5310:30;5307:56;;;5343:18;;:::i;:::-;5307:56;5393:4;5385:6;5381:17;5373:25;;5453:4;5447;5443:15;5435:23;;5154:311;;;:::o;5471:117::-;5580:1;5577;5570:12;5611:710;5707:5;5732:81;5748:64;5805:6;5748:64;:::i;:::-;5732:81;:::i;:::-;5723:90;;5833:5;5862:6;5855:5;5848:21;5896:4;5889:5;5885:16;5878:23;;5949:4;5941:6;5937:17;5929:6;5925:30;5978:3;5970:6;5967:15;5964:122;;;5997:79;;:::i;:::-;5964:122;6112:6;6095:220;6129:6;6124:3;6121:15;6095:220;;;6204:3;6233:37;6266:3;6254:10;6233:37;:::i;:::-;6228:3;6221:50;6300:4;6295:3;6291:14;6284:21;;6171:144;6155:4;6150:3;6146:14;6139:21;;6095:220;;;6099:21;5713:608;;5611:710;;;;;:::o;6344:370::-;6415:5;6464:3;6457:4;6449:6;6445:17;6441:27;6431:122;;6472:79;;:::i;:::-;6431:122;6589:6;6576:20;6614:94;6704:3;6696:6;6689:4;6681:6;6677:17;6614:94;:::i;:::-;6605:103;;6421:293;6344:370;;;;:::o;6720:539::-;6804:6;6853:2;6841:9;6832:7;6828:23;6824:32;6821:119;;;6859:79;;:::i;:::-;6821:119;7007:1;6996:9;6992:17;6979:31;7037:18;7029:6;7026:30;7023:117;;;7059:79;;:::i;:::-;7023:117;7164:78;7234:7;7225:6;7214:9;7210:22;7164:78;:::i;:::-;7154:88;;6950:302;6720:539;;;;:::o;7265:114::-;7332:6;7366:5;7360:12;7350:22;;7265:114;;;:::o;7385:184::-;7484:11;7518:6;7513:3;7506:19;7558:4;7553:3;7549:14;7534:29;;7385:184;;;;:::o;7575:132::-;7642:4;7665:3;7657:11;;7695:4;7690:3;7686:14;7678:22;;7575:132;;;:::o;7713:108::-;7790:24;7808:5;7790:24;:::i;:::-;7785:3;7778:37;7713:108;;:::o;7827:179::-;7896:10;7917:46;7959:3;7951:6;7917:46;:::i;:::-;7995:4;7990:3;7986:14;7972:28;;7827:179;;;;:::o;8012:113::-;8082:4;8114;8109:3;8105:14;8097:22;;8012:113;;;:::o;8161:732::-;8280:3;8309:54;8357:5;8309:54;:::i;:::-;8379:86;8458:6;8453:3;8379:86;:::i;:::-;8372:93;;8489:56;8539:5;8489:56;:::i;:::-;8568:7;8599:1;8584:284;8609:6;8606:1;8603:13;8584:284;;;8685:6;8679:13;8712:63;8771:3;8756:13;8712:63;:::i;:::-;8705:70;;8798:60;8851:6;8798:60;:::i;:::-;8788:70;;8644:224;8631:1;8628;8624:9;8619:14;;8584:284;;;8588:14;8884:3;8877:10;;8285:608;;;8161:732;;;;:::o;8899:373::-;9042:4;9080:2;9069:9;9065:18;9057:26;;9129:9;9123:4;9119:20;9115:1;9104:9;9100:17;9093:47;9157:108;9260:4;9251:6;9157:108;:::i;:::-;9149:116;;8899:373;;;;:::o;9278:86::-;9313:7;9353:4;9346:5;9342:16;9331:27;;9278:86;;;:::o;9370:112::-;9453:22;9469:5;9453:22;:::i;:::-;9448:3;9441:35;9370:112;;:::o;9488:214::-;9577:4;9615:2;9604:9;9600:18;9592:26;;9628:67;9692:1;9681:9;9677:17;9668:6;9628:67;:::i;:::-;9488:214;;;;:::o;9708:329::-;9767:6;9816:2;9804:9;9795:7;9791:23;9787:32;9784:119;;;9822:79;;:::i;:::-;9784:119;9942:1;9967:53;10012:7;10003:6;9992:9;9988:22;9967:53;:::i;:::-;9957:63;;9913:117;9708:329;;;;:::o;10043:::-;10102:6;10151:2;10139:9;10130:7;10126:23;10122:32;10119:119;;;10157:79;;:::i;:::-;10119:119;10277:1;10302:53;10347:7;10338:6;10327:9;10323:22;10302:53;:::i;:::-;10292:63;;10248:117;10043:329;;;;:::o;10378:117::-;10487:1;10484;10477:12;10518:568;10591:8;10601:6;10651:3;10644:4;10636:6;10632:17;10628:27;10618:122;;10659:79;;:::i;:::-;10618:122;10772:6;10759:20;10749:30;;10802:18;10794:6;10791:30;10788:117;;;10824:79;;:::i;:::-;10788:117;10938:4;10930:6;10926:17;10914:29;;10992:3;10984:4;10976:6;10972:17;10962:8;10958:32;10955:41;10952:128;;;10999:79;;:::i;:::-;10952:128;10518:568;;;;;:::o;11092:559::-;11178:6;11186;11235:2;11223:9;11214:7;11210:23;11206:32;11203:119;;;11241:79;;:::i;:::-;11203:119;11389:1;11378:9;11374:17;11361:31;11419:18;11411:6;11408:30;11405:117;;;11441:79;;:::i;:::-;11405:117;11554:80;11626:7;11617:6;11606:9;11602:22;11554:80;:::i;:::-;11536:98;;;;11332:312;11092:559;;;;;:::o;11657:118::-;11744:24;11762:5;11744:24;:::i;:::-;11739:3;11732:37;11657:118;;:::o;11781:222::-;11874:4;11912:2;11901:9;11897:18;11889:26;;11925:71;11993:1;11982:9;11978:17;11969:6;11925:71;:::i;:::-;11781:222;;;;:::o;12009:474::-;12077:6;12085;12134:2;12122:9;12113:7;12109:23;12105:32;12102:119;;;12140:79;;:::i;:::-;12102:119;12260:1;12285:53;12330:7;12321:6;12310:9;12306:22;12285:53;:::i;:::-;12275:63;;12231:117;12387:2;12413:53;12458:7;12449:6;12438:9;12434:22;12413:53;:::i;:::-;12403:63;;12358:118;12009:474;;;;;:::o;12489:111::-;12553:6;12587:5;12581:12;12571:22;;12489:111;;;:::o;12606:181::-;12702:11;12736:6;12731:3;12724:19;12776:4;12771:3;12767:14;12752:29;;12606:181;;;;:::o;12793:129::-;12857:4;12880:3;12872:11;;12910:4;12905:3;12901:14;12893:22;;12793:129;;;:::o;12928:99::-;12999:21;13014:5;12999:21;:::i;:::-;12994:3;12987:34;12928:99;;:::o;13033:167::-;13096:10;13117:40;13153:3;13145:6;13117:40;:::i;:::-;13189:4;13184:3;13180:14;13166:28;;13033:167;;;;:::o;13206:110::-;13273:4;13305;13300:3;13296:14;13288:22;;13206:110;;;:::o;13346:708::-;13459:3;13488:51;13533:5;13488:51;:::i;:::-;13555:83;13631:6;13626:3;13555:83;:::i;:::-;13548:90;;13662:53;13709:5;13662:53;:::i;:::-;13738:7;13769:1;13754:275;13779:6;13776:1;13773:13;13754:275;;;13855:6;13849:13;13882:57;13935:3;13920:13;13882:57;:::i;:::-;13875:64;;13962:57;14012:6;13962:57;:::i;:::-;13952:67;;13814:215;13801:1;13798;13794:9;13789:14;;13754:275;;;13758:14;14045:3;14038:10;;13464:590;;;13346:708;;;;:::o;14060:361::-;14197:4;14235:2;14224:9;14220:18;14212:26;;14284:9;14278:4;14274:20;14270:1;14259:9;14255:17;14248:47;14312:102;14409:4;14400:6;14312:102;:::i;:::-;14304:110;;14060:361;;;;:::o;14427:180::-;14475:77;14472:1;14465:88;14572:4;14569:1;14562:15;14596:4;14593:1;14586:15;14613:102;14655:8;14702:5;14699:1;14695:13;14674:34;;14613:102;;;:::o;14721:848::-;14782:5;14789:4;14813:6;14804:15;;14837:5;14828:14;;14851:712;14872:1;14862:8;14859:15;14851:712;;;14967:4;14962:3;14958:14;14952:4;14949:24;14946:50;;;14976:18;;:::i;:::-;14946:50;15026:1;15016:8;15012:16;15009:451;;;15441:4;15434:5;15430:16;15421:25;;15009:451;15491:4;15485;15481:15;15473:23;;15521:32;15544:8;15521:32;:::i;:::-;15509:44;;14851:712;;;14721:848;;;;;;;:::o;15575:1073::-;15629:5;15820:8;15810:40;;15841:1;15832:10;;15843:5;;15810:40;15869:4;15859:36;;15886:1;15877:10;;15888:5;;15859:36;15955:4;16003:1;15998:27;;;;16039:1;16034:191;;;;15948:277;;15998:27;16016:1;16007:10;;16018:5;;;16034:191;16079:3;16069:8;16066:17;16063:43;;;16086:18;;:::i;:::-;16063:43;16135:8;16132:1;16128:16;16119:25;;16170:3;16163:5;16160:14;16157:40;;;16177:18;;:::i;:::-;16157:40;16210:5;;;15948:277;;16334:2;16324:8;16321:16;16315:3;16309:4;16306:13;16302:36;16284:2;16274:8;16271:16;16266:2;16260:4;16257:12;16253:35;16237:111;16234:246;;;16390:8;16384:4;16380:19;16371:28;;16425:3;16418:5;16415:14;16412:40;;;16432:18;;:::i;:::-;16412:40;16465:5;;16234:246;16505:42;16543:3;16533:8;16527:4;16524:1;16505:42;:::i;:::-;16490:57;;;;16579:4;16574:3;16570:14;16563:5;16560:25;16557:51;;;16588:18;;:::i;:::-;16557:51;16637:4;16630:5;16626:16;16617:25;;15575:1073;;;;;;:::o;16654:281::-;16712:5;16736:23;16754:4;16736:23;:::i;:::-;16728:31;;16780:25;16796:8;16780:25;:::i;:::-;16768:37;;16824:104;16861:66;16851:8;16845:4;16824:104;:::i;:::-;16815:113;;16654:281;;;;:::o;16941:410::-;16981:7;17004:20;17022:1;17004:20;:::i;:::-;16999:25;;17038:20;17056:1;17038:20;:::i;:::-;17033:25;;17093:1;17090;17086:9;17115:30;17133:11;17115:30;:::i;:::-;17104:41;;17294:1;17285:7;17281:15;17278:1;17275:22;17255:1;17248:9;17228:83;17205:139;;17324:18;;:::i;:::-;17205:139;16989:362;16941:410;;;;:::o;17357:180::-;17405:77;17402:1;17395:88;17502:4;17499:1;17492:15;17526:4;17523:1;17516:15;17543:233;17582:3;17605:24;17623:5;17605:24;:::i;:::-;17596:33;;17651:66;17644:5;17641:77;17638:103;;17721:18;;:::i;:::-;17638:103;17768:1;17761:5;17757:13;17750:20;;17543:233;;;:::o;17782:182::-;17922:34;17918:1;17910:6;17906:14;17899:58;17782:182;:::o;17970:366::-;18112:3;18133:67;18197:2;18192:3;18133:67;:::i;:::-;18126:74;;18209:93;18298:3;18209:93;:::i;:::-;18327:2;18322:3;18318:12;18311:19;;17970:366;;;:::o;18342:419::-;18508:4;18546:2;18535:9;18531:18;18523:26;;18595:9;18589:4;18585:20;18581:1;18570:9;18566:17;18559:47;18623:131;18749:4;18623:131;:::i;:::-;18615:139;;18342:419;;;:::o;18767:143::-;18824:5;18855:6;18849:13;18840:22;;18871:33;18898:5;18871:33;:::i;:::-;18767:143;;;;:::o;18916:351::-;18986:6;19035:2;19023:9;19014:7;19010:23;19006:32;19003:119;;;19041:79;;:::i;:::-;19003:119;19161:1;19186:64;19242:7;19233:6;19222:9;19218:22;19186:64;:::i;:::-;19176:74;;19132:128;18916:351;;;;:::o;19273:332::-;19394:4;19432:2;19421:9;19417:18;19409:26;;19445:71;19513:1;19502:9;19498:17;19489:6;19445:71;:::i;:::-;19526:72;19594:2;19583:9;19579:18;19570:6;19526:72;:::i;:::-;19273:332;;;;;:::o;19611:::-;19732:4;19770:2;19759:9;19755:18;19747:26;;19783:71;19851:1;19840:9;19836:17;19827:6;19783:71;:::i;:::-;19864:72;19932:2;19921:9;19917:18;19908:6;19864:72;:::i;:::-;19611:332;;;;;:::o;19949:116::-;20019:21;20034:5;20019:21;:::i;:::-;20012:5;20009:32;19999:60;;20055:1;20052;20045:12;19999:60;19949:116;:::o;20071:137::-;20125:5;20156:6;20150:13;20141:22;;20172:30;20196:5;20172:30;:::i;:::-;20071:137;;;;:::o;20214:345::-;20281:6;20330:2;20318:9;20309:7;20305:23;20301:32;20298:119;;;20336:79;;:::i;:::-;20298:119;20456:1;20481:61;20534:7;20525:6;20514:9;20510:22;20481:61;:::i;:::-;20471:71;;20427:125;20214:345;;;;:::o;20565:223::-;20705:34;20701:1;20693:6;20689:14;20682:58;20774:6;20769:2;20761:6;20757:15;20750:31;20565:223;:::o;20794:366::-;20936:3;20957:67;21021:2;21016:3;20957:67;:::i;:::-;20950:74;;21033:93;21122:3;21033:93;:::i;:::-;21151:2;21146:3;21142:12;21135:19;;20794:366;;;:::o;21166:419::-;21332:4;21370:2;21359:9;21355:18;21347:26;;21419:9;21413:4;21409:20;21405:1;21394:9;21390:17;21383:47;21447:131;21573:4;21447:131;:::i;:::-;21439:139;;21166:419;;;:::o;21591:221::-;21731:34;21727:1;21719:6;21715:14;21708:58;21800:4;21795:2;21787:6;21783:15;21776:29;21591:221;:::o;21818:366::-;21960:3;21981:67;22045:2;22040:3;21981:67;:::i;:::-;21974:74;;22057:93;22146:3;22057:93;:::i;:::-;22175:2;22170:3;22166:12;22159:19;;21818:366;;;:::o;22190:419::-;22356:4;22394:2;22383:9;22379:18;22371:26;;22443:9;22437:4;22433:20;22429:1;22418:9;22414:17;22407:47;22471:131;22597:4;22471:131;:::i;:::-;22463:139;;22190:419;;;:::o;22615:224::-;22755:34;22751:1;22743:6;22739:14;22732:58;22824:7;22819:2;22811:6;22807:15;22800:32;22615:224;:::o;22845:366::-;22987:3;23008:67;23072:2;23067:3;23008:67;:::i;:::-;23001:74;;23084:93;23173:3;23084:93;:::i;:::-;23202:2;23197:3;23193:12;23186:19;;22845:366;;;:::o;23217:419::-;23383:4;23421:2;23410:9;23406:18;23398:26;;23470:9;23464:4;23460:20;23456:1;23445:9;23441:17;23434:47;23498:131;23624:4;23498:131;:::i;:::-;23490:139;;23217:419;;;:::o;23642:222::-;23782:34;23778:1;23770:6;23766:14;23759:58;23851:5;23846:2;23838:6;23834:15;23827:30;23642:222;:::o;23870:366::-;24012:3;24033:67;24097:2;24092:3;24033:67;:::i;:::-;24026:74;;24109:93;24198:3;24109:93;:::i;:::-;24227:2;24222:3;24218:12;24211:19;;23870:366;;;:::o;24242:419::-;24408:4;24446:2;24435:9;24431:18;24423:26;;24495:9;24489:4;24485:20;24481:1;24470:9;24466:17;24459:47;24523:131;24649:4;24523:131;:::i;:::-;24515:139;;24242:419;;;:::o;24667:228::-;24807:34;24803:1;24795:6;24791:14;24784:58;24876:11;24871:2;24863:6;24859:15;24852:36;24667:228;:::o;24901:366::-;25043:3;25064:67;25128:2;25123:3;25064:67;:::i;:::-;25057:74;;25140:93;25229:3;25140:93;:::i;:::-;25258:2;25253:3;25249:12;25242:19;;24901:366;;;:::o;25273:419::-;25439:4;25477:2;25466:9;25462:18;25454:26;;25526:9;25520:4;25516:20;25512:1;25501:9;25497:17;25490:47;25554:131;25680:4;25554:131;:::i;:::-;25546:139;;25273:419;;;:::o;25698:175::-;25838:27;25834:1;25826:6;25822:14;25815:51;25698:175;:::o;25879:366::-;26021:3;26042:67;26106:2;26101:3;26042:67;:::i;:::-;26035:74;;26118:93;26207:3;26118:93;:::i;:::-;26236:2;26231:3;26227:12;26220:19;;25879:366;;;:::o;26251:419::-;26417:4;26455:2;26444:9;26440:18;26432:26;;26504:9;26498:4;26494:20;26490:1;26479:9;26475:17;26468:47;26532:131;26658:4;26532:131;:::i;:::-;26524:139;;26251:419;;;:::o;26676:191::-;26716:3;26735:20;26753:1;26735:20;:::i;:::-;26730:25;;26769:20;26787:1;26769:20;:::i;:::-;26764:25;;26812:1;26809;26805:9;26798:16;;26833:3;26830:1;26827:10;26824:36;;;26840:18;;:::i;:::-;26824:36;26676:191;;;;:::o;26873:176::-;27013:28;27009:1;27001:6;26997:14;26990:52;26873:176;:::o;27055:366::-;27197:3;27218:67;27282:2;27277:3;27218:67;:::i;:::-;27211:74;;27294:93;27383:3;27294:93;:::i;:::-;27412:2;27407:3;27403:12;27396:19;;27055:366;;;:::o;27427:419::-;27593:4;27631:2;27620:9;27616:18;27608:26;;27680:9;27674:4;27670:20;27666:1;27655:9;27651:17;27644:47;27708:131;27834:4;27708:131;:::i;:::-;27700:139;;27427:419;;;:::o;27852:194::-;27892:4;27912:20;27930:1;27912:20;:::i;:::-;27907:25;;27946:20;27964:1;27946:20;:::i;:::-;27941:25;;27990:1;27987;27983:9;27975:17;;28014:1;28008:4;28005:11;28002:37;;;28019:18;;:::i;:::-;28002:37;27852:194;;;;:::o;28052:181::-;28192:33;28188:1;28180:6;28176:14;28169:57;28052:181;:::o;28239:366::-;28381:3;28402:67;28466:2;28461:3;28402:67;:::i;:::-;28395:74;;28478:93;28567:3;28478:93;:::i;:::-;28596:2;28591:3;28587:12;28580:19;;28239:366;;;:::o;28611:419::-;28777:4;28815:2;28804:9;28800:18;28792:26;;28864:9;28858:4;28854:20;28850:1;28839:9;28835:17;28828:47;28892:131;29018:4;28892:131;:::i;:::-;28884:139;;28611:419;;;:::o;29036:85::-;29081:7;29110:5;29099:16;;29036:85;;;:::o;29127:60::-;29155:3;29176:5;29169:12;;29127:60;;;:::o;29193:158::-;29251:9;29284:61;29302:42;29311:32;29337:5;29311:32;:::i;:::-;29302:42;:::i;:::-;29284:61;:::i;:::-;29271:74;;29193:158;;;:::o;29357:147::-;29452:45;29491:5;29452:45;:::i;:::-;29447:3;29440:58;29357:147;;:::o;29510:114::-;29577:6;29611:5;29605:12;29595:22;;29510:114;;;:::o;29630:184::-;29729:11;29763:6;29758:3;29751:19;29803:4;29798:3;29794:14;29779:29;;29630:184;;;;:::o;29820:132::-;29887:4;29910:3;29902:11;;29940:4;29935:3;29931:14;29923:22;;29820:132;;;:::o;29958:108::-;30035:24;30053:5;30035:24;:::i;:::-;30030:3;30023:37;29958:108;;:::o;30072:179::-;30141:10;30162:46;30204:3;30196:6;30162:46;:::i;:::-;30240:4;30235:3;30231:14;30217:28;;30072:179;;;;:::o;30257:113::-;30327:4;30359;30354:3;30350:14;30342:22;;30257:113;;;:::o;30406:732::-;30525:3;30554:54;30602:5;30554:54;:::i;:::-;30624:86;30703:6;30698:3;30624:86;:::i;:::-;30617:93;;30734:56;30784:5;30734:56;:::i;:::-;30813:7;30844:1;30829:284;30854:6;30851:1;30848:13;30829:284;;;30930:6;30924:13;30957:63;31016:3;31001:13;30957:63;:::i;:::-;30950:70;;31043:60;31096:6;31043:60;:::i;:::-;31033:70;;30889:224;30876:1;30873;30869:9;30864:14;;30829:284;;;30833:14;31129:3;31122:10;;30530:608;;;30406:732;;;;:::o;31144:831::-;31407:4;31445:3;31434:9;31430:19;31422:27;;31459:71;31527:1;31516:9;31512:17;31503:6;31459:71;:::i;:::-;31540:80;31616:2;31605:9;31601:18;31592:6;31540:80;:::i;:::-;31667:9;31661:4;31657:20;31652:2;31641:9;31637:18;31630:48;31695:108;31798:4;31789:6;31695:108;:::i;:::-;31687:116;;31813:72;31881:2;31870:9;31866:18;31857:6;31813:72;:::i;:::-;31895:73;31963:3;31952:9;31948:19;31939:6;31895:73;:::i;:::-;31144:831;;;;;;;;:::o;31981:180::-;32029:77;32026:1;32019:88;32126:4;32123:1;32116:15;32150:4;32147:1;32140:15;32167:185;32207:1;32224:20;32242:1;32224:20;:::i;:::-;32219:25;;32258:20;32276:1;32258:20;:::i;:::-;32253:25;;32297:1;32287:35;;32302:18;;:::i;:::-;32287:35;32344:1;32341;32337:9;32332:14;;32167:185;;;;:::o;32358:220::-;32498:34;32494:1;32486:6;32482:14;32475:58;32567:3;32562:2;32554:6;32550:15;32543:28;32358:220;:::o;32584:366::-;32726:3;32747:67;32811:2;32806:3;32747:67;:::i;:::-;32740:74;;32823:93;32912:3;32823:93;:::i;:::-;32941:2;32936:3;32932:12;32925:19;;32584:366;;;:::o;32956:419::-;33122:4;33160:2;33149:9;33145:18;33137:26;;33209:9;33203:4;33199:20;33195:1;33184:9;33180:17;33173:47;33237:131;33363:4;33237:131;:::i;:::-;33229:139;;32956:419;;;:::o;33381:175::-;33521:27;33517:1;33509:6;33505:14;33498:51;33381:175;:::o;33562:366::-;33704:3;33725:67;33789:2;33784:3;33725:67;:::i;:::-;33718:74;;33801:93;33890:3;33801:93;:::i;:::-;33919:2;33914:3;33910:12;33903:19;;33562:366;;;:::o;33934:419::-;34100:4;34138:2;34127:9;34123:18;34115:26;;34187:9;34181:4;34177:20;34173:1;34162:9;34158:17;34151:47;34215:131;34341:4;34215:131;:::i;:::-;34207:139;;33934:419;;;:::o;34359:177::-;34499:29;34495:1;34487:6;34483:14;34476:53;34359:177;:::o;34542:366::-;34684:3;34705:67;34769:2;34764:3;34705:67;:::i;:::-;34698:74;;34781:93;34870:3;34781:93;:::i;:::-;34899:2;34894:3;34890:12;34883:19;;34542:366;;;:::o;34914:419::-;35080:4;35118:2;35107:9;35103:18;35095:26;;35167:9;35161:4;35157:20;35153:1;35142:9;35138:17;35131:47;35195:131;35321:4;35195:131;:::i;:::-;35187:139;;34914:419;;;:::o

Swarm Source

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