ETH Price: $3,417.70 (+1.32%)
Gas: 11 Gwei

Token

yyCrv (yyCrv)
 

Overview

Max Total Supply

37,060.053046610627850338 yyCrv

Holders

92

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000007346 yyCrv

Value
$0.00
0x88b7a44CECD526cd2D424B0A4Cc2bbB26341Dd8f
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:
yyCrv

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-30
*/

/**
 *Submitted for verification at Etherscan.io on 2020-02-01
*/

pragma solidity ^0.5.17;

pragma experimental ABIEncoderV2;

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

interface ICrvDeposit {
    function deposit(uint256) external;
    function withdraw(uint256) external;
    function balanceOf(address) external view returns (uint256);
}

interface ICrvMinter {
    function mint(address) external;
    function mint_for(address, address) external;
}

interface ICrvVoting {
    function increase_unlock_time(uint256) external;    
    function increase_amount(uint256) external;
    function create_lock(uint256, uint256) external;
    function withdraw() external;
}

interface IUniswap {
    function swapExactTokensForTokens(uint, uint, address[] calldata, address, uint) external;
}

contract Context {
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 _totalSupply;
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    function _approve(address owner, address spender, uint256 amount) internal {
        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 _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

contract ERC20Detailed is IERC20 {
    string constant private _name = "yyCrv";
    string constant private _symbol = "yyCrv";
    uint8 constant private _decimals = 18;

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

contract ReentrancyGuard {
    uint256 private _guardCounter;

    constructor () internal {
        _guardCounter = 1;
    }

    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () internal {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract yyCrv is ERC20, ERC20Detailed, ReentrancyGuard, Ownable {

    modifier onlyY3dHolder() {
        require(y3d.balanceOf(address(msg.sender)) >= y3d_threhold, "insufficient y3d supply");
        _;
    }

    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;
    
    IERC20 constant public yCrv = IERC20(0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8);
    IERC20 constant public y3d = IERC20(0xc7fD9aE2cf8542D71186877e21107E1F3A0b55ef);
    IERC20 constant public CRV = IERC20(0xD533a949740bb3306d119CC777fa900bA034cd52);
    address constant public WETH = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    address constant public crv_deposit = address(0xFA712EE4788C042e2B7BB55E6cb8ec569C4530c1);
    address constant public crv_minter = address(0xd061D61a4d941c39E5453435B6345Dc261C2fcE0);
    address constant public uniswap = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address constant public crv_voting = address(0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2);

    uint public pool;
    bool public beta = true;

    uint public y3d_threhold = 1e16; // You want to be a Consul?
    mapping (address => uint8) fees; // use P3D to against front-running
  
    constructor () public {
        pool = 1; _mint(msg.sender, 1); // avoid div by 1
        yCrv.approve(crv_deposit, uint(-1));
        CRV.approve(msg.sender, uint(-1));
        CRV.approve(crv_voting, uint(-1));        
    }    
    function() external payable {
    }

    function mining() public view returns (uint) {
        return ICrvDeposit(crv_deposit).balanceOf(address(this));
    }
    function fee(address account) public view returns (uint8) {
        if (fees[account] == 0) return 30; //3%
        if (fees[account] == uint8(-1)) return 0;
        return fees[account];
    }

    /* Basic Panel */
    // Stake yCrv for yyCrv
    function stake(uint256 _amount) external {
        require(_amount > 0, "stake amount must be greater than 0");
        yCrv.transferFrom(msg.sender, address(this), _amount);
        // invariant: shares/totalSupply = amount/pool
        uint256 shares = (_amount.mul(_totalSupply)).div(pool);
        _mint(msg.sender, shares); pool = pool.add(_amount);
    }
    // Unstake yyCrv for yCrv  
    function unstake(uint256 _shares) external nonReentrant {
        require(_shares > 0, "unstake shares must be greater than 0");
        // invariant: shres/totalSupply = amount/pool
        uint256 _amount = (pool.mul(_shares)).div(_totalSupply);
        _burn(msg.sender, _shares); pool = pool.sub(_amount);
        _amount = _amount.sub(_amount.mul(fee(msg.sender)).div(1000));
        uint256 b = yCrv.balanceOf(address(this));
        if (b < _amount) withdraw(_amount - b);
        yCrv.transfer(msg.sender, _amount);
    }
    // It is a truth universally acknowledged, that a single man in possession of a good fortune must be in want of a wife.
    function profit(uint256 _amount) internal {
        require(_amount > 0, "deposit must be greater than 0");
        pool = pool.add(_amount);
    }
    // Any donation?
    function recycle() public { // remember + 1
        profit((yCrv.balanceOf(address(this))+mining()+1).sub(pool));
    }

    /* Advanced Panel */
    function transferOwnership(address newOwner) public {
        super.transferOwnership(newOwner);
        CRV.approve(newOwner, uint(-1));
    }
    function change_y3d_threhold(uint _y3d_threhold) external onlyOwner {
        y3d_threhold = _y3d_threhold;
    }    
    function setFees(address account, uint8 _fee) external onlyOwner {
        fees[account] = _fee;
    }
    function deposit(uint a) internal {
        ICrvDeposit(crv_deposit).deposit(a);
    }    
    function allIn() external onlyY3dHolder() {
        deposit(yCrv.balanceOf(address(this)));
    }
    function rebalance(uint16 ratio) external onlyY3dHolder() {
        require(ratio <= 1000, "ratio too large");
        uint a = yCrv.balanceOf(address(this));
        uint b = mining();
        uint t = a + b; t = t.mul(ratio).div(1000);
        if (t > b) deposit(t-b);
        else withdraw(b-t);
    }
    function withdraw(uint256 _amount) internal {
        ICrvDeposit(crv_deposit).withdraw(_amount);
    }    
    function harvest_to_consul() external {
        ICrvMinter(crv_minter).mint_for(crv_deposit, owner());
    }
    function harvest_to_uniswap() external onlyY3dHolder() {
        ICrvMinter(crv_minter).mint(crv_deposit);
        uint _crv = CRV.balanceOf(address(this));
        require(_crv > 0, "no enough Crv");
        CRV.safeApprove(uniswap, 0);
        CRV.safeApprove(uniswap, _crv);            
        address[] memory path = new address[](3);
        path[0] = 0xD533a949740bb3306d119CC777fa900bA034cd52; // CRV
        path[1] = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH
        path[2] = 0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8; // yCrv;
        IUniswap(uniswap).swapExactTokensForTokens(_crv, uint(0), path, address(this), now.add(1800));
        recycle();
    }

    /* veCRV Booster */
    function increase_amount(uint amount) external onlyOwner {
        ICrvVoting(crv_voting).increase_amount(amount);
    }
    function increase_unlock_time(uint a) external onlyOwner {
        ICrvVoting(crv_voting).increase_unlock_time(a);
    }    
    function create_lock(uint a, uint b) external onlyOwner {
        ICrvVoting(crv_voting).create_lock(a, b);
    }
    function withdraw_ICrvVoting() external onlyOwner {
        ICrvVoting(crv_voting).withdraw();
        withdraw_crv();
    }
    function withdraw_crv() public onlyOwner {
        CRV.transfer(owner(), CRV.balanceOf(address(this)));
    }
    // Beta Mode
    function endBeta() public onlyOwner {
        beta = false;
    }
    // In case I make any mistake ...
    // 神様、お许しください ...
    function withdraw_ycrv() public onlyOwner {
        if (beta) yCrv.transfer(owner(), yCrv.balanceOf(address(this)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"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":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"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"CRV","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"allIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beta","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_y3d_threhold","type":"uint256"}],"name":"change_y3d_threhold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"create_lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"crv_deposit","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crv_minter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crv_voting","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"endBeta","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"fee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"harvest_to_consul","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"harvest_to_uniswap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increase_amount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"a","type":"uint256"}],"name":"increase_unlock_time","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"ratio","type":"uint16"}],"name":"rebalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"recycle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint8","name":"_fee","type":"uint8"}],"name":"setFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswap","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"unstake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw_ICrvVoting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw_crv","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw_ycrv","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"y3d","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"y3d_threhold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"yCrv","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526001600660006101000a81548160ff021916908315150217905550662386f26fc100006007553480156200003757600080fd5b50600160038190555062000050620003ae60201b60201c565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160058190555062000128336001620003b660201b60201c565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff1663095ea7b373fa712ee4788c042e2b7bb55e6cb8ec569c4530c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620001ad929190620006d0565b602060405180830381600087803b158015620001c857600080fd5b505af1158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002039190810190620005c0565b5073d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040162000275929190620006a3565b602060405180830381600087803b1580156200029057600080fd5b505af1158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002cb9190810190620005c0565b5073d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3735f3b5dfeb7b28cdbd7faba78963ee202a494e2a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040162000351929190620006d0565b602060405180830381600087803b1580156200036c57600080fd5b505af115801562000381573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003a79190810190620005c0565b506200080f565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000420906200071f565b60405180910390fd5b62000445816002546200055160201b620030751790919060201c565b600281905550620004a3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200055160201b620030751790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000545919062000741565b60405180910390a35050565b6000808284019050838110156200059f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200059690620006fd565b60405180910390fd5b8091505092915050565b600081519050620005ba81620007f5565b92915050565b600060208284031215620005d357600080fd5b6000620005e384828501620005a9565b91505092915050565b620005f781620007b9565b82525050565b62000608816200076f565b82525050565b60006200061d601b836200075e565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006200065f601f836200075e565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6200069d81620007af565b82525050565b6000604082019050620006ba6000830185620005ec565b620006c9602083018462000692565b9392505050565b6000604082019050620006e76000830185620005fd565b620006f6602083018462000692565b9392505050565b6000602082019050818103600083015262000718816200060e565b9050919050565b600060208201905081810360008301526200073a8162000650565b9050919050565b600060208201905062000758600083018462000692565b92915050565b600082825260208201905092915050565b60006200077c826200078f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620007c682620007cd565b9050919050565b6000620007da82620007e1565b9050919050565b6000620007ee826200078f565b9050919050565b620008008162000783565b81146200080c57600080fd5b50565b614a08806200081f6000396000f3fe6080604052600436106102675760003560e01c80638f32d59b11610144578063b93b592b116100b6578063da12f0e11161007a578063da12f0e11461089b578063dd62ed3e146108b2578063e6f934b9146108ef578063eeaa207e1461091a578063eff7a61214610945578063f2fde38b1461096e57610267565b8063b93b592b146107ee578063bc48168f14610817578063c229a93f14610842578063c2dfe4b61461086d578063d67a4a6b1461088457610267565b80639faa3c91116101085780639faa3c91146106de578063a457c2d714610709578063a694fc3a14610746578063a9059cbb1461076f578063ad5c4648146107ac578063b4270a95146107d757610267565b80638f32d59b1461061d578063937f39e814610648578063945c91421461067157806395d89b411461069c5780639c22b691146106c757610267565b80634957677c116101dd5780636fcca69b116101a15780636fcca69b1461051f57806370a082311461055c578063715018a61461059957806376fb3619146105b05780638cf760b8146105db5780638da5cb5b146105f257610267565b80634957677c1461046257806365fc38731461048b578063662fac39146104b457806366346a5c146104df5780636b2015491461050857610267565b806318160ddd1161022f57806318160ddd1461033e57806323b872dd146103695780632681f7e4146103a65780632e17de78146103d1578063313ce567146103fa578063395093511461042557610267565b806306fdde0314610269578063095ea7b3146102945780630f23cbaa146102d157806311585c8e146102e857806316f0115b14610313575b005b34801561027557600080fd5b5061027e610997565b60405161028b91906143d6565b60405180910390f35b3480156102a057600080fd5b506102bb60048036036102b6919081019061391e565b6109d4565b6040516102c891906143a0565b60405180910390f35b3480156102dd57600080fd5b506102e66109f2565b005b3480156102f457600080fd5b506102fd610ab9565b60405161030a91906143bb565b60405180910390f35b34801561031f57600080fd5b50610328610ad1565b6040516103359190614698565b60405180910390f35b34801561034a57600080fd5b50610353610ad7565b6040516103609190614698565b60405180910390f35b34801561037557600080fd5b50610390600480360361038b91908101906138cf565b610ae1565b60405161039d91906143a0565b60405180910390f35b3480156103b257600080fd5b506103bb610bba565b6040516103c891906142b8565b60405180910390f35b3480156103dd57600080fd5b506103f860048036036103f391908101906139e8565b610bd2565b005b34801561040657600080fd5b5061040f610e66565b60405161041c9190614736565b60405180910390f35b34801561043157600080fd5b5061044c6004803603610447919081019061391e565b610e6f565b60405161045991906143a0565b60405180910390f35b34801561046e57600080fd5b50610489600480360361048491908101906139e8565b610f22565b005b34801561049757600080fd5b506104b260048036036104ad9190810190613a3a565b610feb565b005b3480156104c057600080fd5b506104c96110b7565b6040516104d69190614698565b60405180910390f35b3480156104eb57600080fd5b50610506600480360361050191908101906139bf565b61115b565b005b34801561051457600080fd5b5061051d611390565b005b34801561052b57600080fd5b506105466004803603610541919081019061386a565b6113f4565b6040516105539190614736565b60405180910390f35b34801561056857600080fd5b50610583600480360361057e919081019061386a565b61152e565b6040516105909190614698565b60405180910390f35b3480156105a557600080fd5b506105ae611576565b005b3480156105bc57600080fd5b506105c561167e565b6040516105d291906143bb565b60405180910390f35b3480156105e757600080fd5b506105f0611696565b005b3480156105fe57600080fd5b5061060761181e565b60405161061491906142b8565b60405180910390f35b34801561062957600080fd5b50610632611848565b60405161063f91906143a0565b60405180910390f35b34801561065457600080fd5b5061066f600480360361066a919081019061395a565b6118a7565b005b34801561067d57600080fd5b5061068661194a565b60405161069391906143bb565b60405180910390f35b3480156106a857600080fd5b506106b1611962565b6040516106be91906143d6565b60405180910390f35b3480156106d357600080fd5b506106dc61199f565b005b3480156106ea57600080fd5b506106f3611a64565b60405161070091906143a0565b60405180910390f35b34801561071557600080fd5b50610730600480360361072b919081019061391e565b611a77565b60405161073d91906143a0565b60405180910390f35b34801561075257600080fd5b5061076d600480360361076891908101906139e8565b611b44565b005b34801561077b57600080fd5b506107966004803603610791919081019061391e565b611c81565b6040516107a391906143a0565b60405180910390f35b3480156107b857600080fd5b506107c1611c9f565b6040516107ce91906142b8565b60405180910390f35b3480156107e357600080fd5b506107ec611cb7565b005b3480156107fa57600080fd5b50610815600480360361081091908101906139e8565b611e5b565b005b34801561082357600080fd5b5061082c611eac565b60405161083991906142b8565b60405180910390f35b34801561084e57600080fd5b50610857611ec4565b60405161086491906142b8565b60405180910390f35b34801561087957600080fd5b50610882611edc565b005b34801561089057600080fd5b5061089961206a565b005b3480156108a757600080fd5b506108b0612108565b005b3480156108be57600080fd5b506108d960048036036108d49190810190613893565b6125f8565b6040516108e69190614698565b60405180910390f35b3480156108fb57600080fd5b5061090461267f565b60405161091191906142b8565b60405180910390f35b34801561092657600080fd5b5061092f612697565b60405161093c9190614698565b60405180910390f35b34801561095157600080fd5b5061096c600480360361096791908101906139e8565b61269d565b005b34801561097a57600080fd5b506109956004803603610990919081019061386a565b612766565b005b60606040518060400160405280600581526020017f7979437276000000000000000000000000000000000000000000000000000000815250905090565b60006109e86109e1612834565b848461283c565b6001905092915050565b610ab7610ab26005546001610a056110b7565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a5291906142d3565b60206040518083038186803b158015610a6a57600080fd5b505afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aa29190810190613a11565b0101612a0790919063ffffffff16565b612a51565b565b73c7fd9ae2cf8542d71186877e21107e1f3a0b55ef81565b60055481565b6000600254905090565b6000610aee848484612ab2565b610baf84610afa612834565b610baa8560405180606001604052806028815260200161497960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b60612834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b61283c565b600190509392505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60016003600082825401925050819055506000600354905060008211610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2490614418565b60405180910390fd5b6000610c58600254610c4a85600554612d9790919063ffffffff16565b612e0790919063ffffffff16565b9050610c643384612e51565b610c7981600554612a0790919063ffffffff16565b600581905550610cc3610cb46103e8610ca6610c94336113f4565b60ff1685612d9790919063ffffffff16565b612e0790919063ffffffff16565b82612a0790919063ffffffff16565b9050600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d1491906142d3565b60206040518083038186803b158015610d2c57600080fd5b505afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d649190810190613a11565b905081811015610d7a57610d79818303612ff3565b5b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610dc9929190614325565b602060405180830381600087803b158015610de357600080fd5b505af1158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e1b9190810190613996565b5050506003548114610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990614618565b60405180910390fd5b5050565b60006012905090565b6000610f18610e7c612834565b84610f138560016000610e8d612834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307590919063ffffffff16565b61283c565b6001905092915050565b610f2a611848565b610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff16634957677c826040518263ffffffff1660e01b8152600401610fb69190614698565b600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b5050505050565b610ff3611848565b611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff166365fc387383836040518363ffffffff1660e01b81526004016110819291906146b3565b600060405180830381600087803b15801561109b57600080fd5b505af11580156110af573d6000803e3d6000fd5b505050505050565b600073fa712ee4788c042e2b7bb55e6cb8ec569c4530c173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110691906142d3565b60206040518083038186803b15801561111e57600080fd5b505afa158015611132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111569190810190613a11565b905090565b60075473c7fd9ae2cf8542d71186877e21107e1f3a0b55ef73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016111ab91906142d3565b60206040518083038186803b1580156111c357600080fd5b505afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111fb9190810190613a11565b101561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390614518565b60405180910390fd5b6103e88161ffff161115611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c906144f8565b60405180910390fd5b600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d491906142d3565b60206040518083038186803b1580156112ec57600080fd5b505afa158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113249190810190613a11565b905060006113306110b7565b9050600081830190506113646103e86113568661ffff1684612d9790919063ffffffff16565b612e0790919063ffffffff16565b90508181111561137e576113798282036130ca565b61138a565b611389818303612ff3565b5b50505050565b611398611848565b6113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614558565b60405180910390fd5b6000600660006101000a81548160ff021916908315150217905550565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16141561145657601e9050611529565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff16600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614156114d95760009050611529565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61157e611848565b6115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490614558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a881565b60075473c7fd9ae2cf8542d71186877e21107e1f3a0b55ef73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016116e691906142d3565b60206040518083038186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117369190810190613a11565b1015611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90614518565b60405180910390fd5b61181c73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117c791906142d3565b60206040518083038186803b1580156117df57600080fd5b505afa1580156117f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118179190810190613a11565b6130ca565b565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661188b612834565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6118af611848565b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614558565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b73d533a949740bb3306d119cc777fa900ba034cd5281565b60606040518060400160405280600581526020017f7979437276000000000000000000000000000000000000000000000000000000815250905090565b6119a7611848565b6119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dd90614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff16633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050611a62611edc565b565b600660009054906101000a900460ff1681565b6000611b3a611a84612834565b84611b35856040518060600160405280602581526020016149a16025913960016000611aae612834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b61283c565b6001905092915050565b60008111611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906144d8565b60405180910390fd5b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611bd8939291906142ee565b602060405180830381600087803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2a9190810190613996565b506000611c56600554611c4860025485612d9790919063ffffffff16565b612e0790919063ffffffff16565b9050611c62338261314c565b611c778260055461307590919063ffffffff16565b6005819055505050565b6000611c95611c8e612834565b8484612ab2565b6001905092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b611cbf611848565b611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590614558565b60405180910390fd5b600660009054906101000a900460ff1615611e595773df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611d4b61181e565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d9891906142d3565b60206040518083038186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611de89190810190613a11565b6040518363ffffffff1660e01b8152600401611e05929190614377565b602060405180830381600087803b158015611e1f57600080fd5b505af1158015611e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e579190810190613996565b505b565b611e63611848565b611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9990614558565b60405180910390fd5b8060078190555050565b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a281565b73d061d61a4d941c39e5453435b6345dc261c2fce081565b611ee4611848565b611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a90614558565b60405180910390fd5b73d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611f5b61181e565b73d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fa891906142d3565b60206040518083038186803b158015611fc057600080fd5b505afa158015611fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff89190810190613a11565b6040518363ffffffff1660e01b8152600401612015929190614377565b602060405180830381600087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120679190810190613996565b50565b73d061d61a4d941c39e5453435b6345dc261c2fce073ffffffffffffffffffffffffffffffffffffffff166327f18ae373fa712ee4788c042e2b7bb55e6cb8ec569c4530c16120b761181e565b6040518363ffffffff1660e01b81526004016120d492919061434e565b600060405180830381600087803b1580156120ee57600080fd5b505af1158015612102573d6000803e3d6000fd5b50505050565b60075473c7fd9ae2cf8542d71186877e21107e1f3a0b55ef73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161215891906142d3565b60206040518083038186803b15801561217057600080fd5b505afa158015612184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121a89190810190613a11565b10156121e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e090614518565b60405180910390fd5b73d061d61a4d941c39e5453435b6345dc261c2fce073ffffffffffffffffffffffffffffffffffffffff16636a62784273fa712ee4788c042e2b7bb55e6cb8ec569c4530c16040518263ffffffff1660e01b815260040161224a91906142b8565b600060405180830381600087803b15801561226457600080fd5b505af1158015612278573d6000803e3d6000fd5b50505050600073d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122cb91906142d3565b60206040518083038186803b1580156122e357600080fd5b505afa1580156122f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061231b9190810190613a11565b905060008111612360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612357906144b8565b60405180910390fd5b6123b4737a250d5630b4cf539739df2c5dacb4c659f2488d600073d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166132d49092919063ffffffff16565b612407737a250d5630b4cf539739df2c5dacb4c659f2488d8273d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166132d49092919063ffffffff16565b606060036040519080825280602002602001820160405280156124395781602001602082028038833980820191505090505b50905073d533a949740bb3306d119cc777fa900ba034cd528160008151811061245e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106124ba57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073df5e0e81dff6faf3a7e52ba697820c5e32d806a88160028151811061251657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed1739836000843061259a6107084261307590919063ffffffff16565b6040518663ffffffff1660e01b81526004016125ba9594939291906146dc565b600060405180830381600087803b1580156125d457600080fd5b505af11580156125e8573d6000803e3d6000fd5b505050506125f46109f2565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c181565b60075481565b6126a5611848565b6126e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126db90614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff1663eff7a612826040518263ffffffff1660e01b81526004016127319190614698565b600060405180830381600087803b15801561274b57600080fd5b505af115801561275f573d6000803e3d6000fd5b5050505050565b61276f8161344b565b73d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016127de929190614377565b602060405180830381600087803b1580156127f857600080fd5b505af115801561280c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128309190810190613996565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a3906145b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561291c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291390614458565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129fa9190614698565b60405180910390a3505050565b6000612a4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d3c565b905092915050565b60008111612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b906145d8565b60405180910390fd5b612aa98160055461307590919063ffffffff16565b60058190555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614598565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b89906143f8565b60405180910390fd5b612bfd81604051806060016040528060268152602001614953602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c90816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d2f9190614698565b60405180910390a3505050565b6000838311158290612d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7b91906143d6565b60405180910390fd5b5060008385039050809150509392505050565b600080831415612daa5760009050612e01565b6000828402905082848281612dbb57fe5b0414612dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df390614538565b60405180910390fd5b809150505b92915050565b6000612e4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061349e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb890614578565b60405180910390fd5b612f2c81604051806060016040528060228152602001614931602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f8381600254612a0790919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fe79190614698565b60405180910390a35050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c173ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016130409190614698565b600060405180830381600087803b15801561305a57600080fd5b505af115801561306e573d6000803e3d6000fd5b5050505050565b6000808284019050838110156130c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b790614478565b60405180910390fd5b8091505092915050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c173ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016131179190614698565b600060405180830381600087803b15801561313157600080fd5b505af1158015613145573d6000803e3d6000fd5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b390614678565b60405180910390fd5b6131d18160025461307590919063ffffffff16565b600281905550613228816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132c89190614698565b60405180910390a35050565b600081148061336d575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161331b92919061434e565b60206040518083038186803b15801561333357600080fd5b505afa158015613347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061336b9190810190613a11565b145b6133ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a390614638565b60405180910390fd5b613446838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b84846040516024016133e4929190614377565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506134ff565b505050565b613453611848565b613492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348990614558565b60405180910390fd5b61349b81613671565b50565b600080831182906134e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134dc91906143d6565b60405180910390fd5b5060008385816134f157fe5b049050809150509392505050565b61351e8273ffffffffffffffffffffffffffffffffffffffff166137a1565b61355d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355490614658565b60405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161358691906142a1565b6000604051808303816000865af19150503d80600081146135c3576040519150601f19603f3d011682016040523d82523d6000602084013e6135c8565b606091505b50915091508161360d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360490614498565b60405180910390fd5b60008151111561366b578080602001905161362b9190810190613996565b61366a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613661906145f8565b60405180910390fd5b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156136e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d890614438565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156137e35750808214155b92505050919050565b6000813590506137fb816148bd565b92915050565b600081519050613810816148d4565b92915050565b600081359050613825816148eb565b92915050565b60008135905061383a81614902565b92915050565b60008151905061384f81614902565b92915050565b60008135905061386481614919565b92915050565b60006020828403121561387c57600080fd5b600061388a848285016137ec565b91505092915050565b600080604083850312156138a657600080fd5b60006138b4858286016137ec565b92505060206138c5858286016137ec565b9150509250929050565b6000806000606084860312156138e457600080fd5b60006138f2868287016137ec565b9350506020613903868287016137ec565b92505060406139148682870161382b565b9150509250925092565b6000806040838503121561393157600080fd5b600061393f858286016137ec565b92505060206139508582860161382b565b9150509250929050565b6000806040838503121561396d57600080fd5b600061397b858286016137ec565b925050602061398c85828601613855565b9150509250929050565b6000602082840312156139a857600080fd5b60006139b684828501613801565b91505092915050565b6000602082840312156139d157600080fd5b60006139df84828501613816565b91505092915050565b6000602082840312156139fa57600080fd5b6000613a088482850161382b565b91505092915050565b600060208284031215613a2357600080fd5b6000613a3184828501613840565b91505092915050565b60008060408385031215613a4d57600080fd5b6000613a5b8582860161382b565b9250506020613a6c8582860161382b565b9150509250929050565b6000613a828383613a9d565b60208301905092915050565b613a978161481f565b82525050565b613aa6816147bc565b82525050565b613ab5816147bc565b82525050565b6000613ac682614761565b613ad0818561478f565b9350613adb83614751565b8060005b83811015613b0c578151613af38882613a76565b9750613afe83614782565b925050600181019050613adf565b5085935050505092915050565b613b22816147ce565b82525050565b6000613b338261476c565b613b3d81856147a0565b9350613b4d818560208601614879565b80840191505092915050565b613b6281614831565b82525050565b6000613b7382614777565b613b7d81856147ab565b9350613b8d818560208601614879565b613b96816148ac565b840191505092915050565b6000613bae6023836147ab565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c146025836147ab565b91507f756e7374616b6520736861726573206d7573742062652067726561746572207460008301527f68616e20300000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c7a6026836147ab565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ce06022836147ab565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d46601b836147ab565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613d866020836147ab565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b6000613dc6600d836147ab565b91507f6e6f20656e6f75676820437276000000000000000000000000000000000000006000830152602082019050919050565b6000613e066023836147ab565b91507f7374616b6520616d6f756e74206d75737420626520677265617465722074686160008301527f6e203000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e6c600f836147ab565b91507f726174696f20746f6f206c6172676500000000000000000000000000000000006000830152602082019050919050565b6000613eac6017836147ab565b91507f696e73756666696369656e742079336420737570706c790000000000000000006000830152602082019050919050565b6000613eec6021836147ab565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f526020836147ab565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613f926021836147ab565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ff86025836147ab565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061405e6024836147ab565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006140c4601e836147ab565b91507f6465706f736974206d7573742062652067726561746572207468616e203000006000830152602082019050919050565b6000614104602a836147ab565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b600061416a601f836147ab565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006141aa6036836147ab565b91507f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008301527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006020830152604082019050919050565b6000614210601f836147ab565b91507f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b6000614250601f836147ab565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61428c81614808565b82525050565b61429b81614812565b82525050565b60006142ad8284613b28565b915081905092915050565b60006020820190506142cd6000830184613aac565b92915050565b60006020820190506142e86000830184613a8e565b92915050565b60006060820190506143036000830186613a8e565b6143106020830185613a8e565b61431d6040830184614283565b949350505050565b600060408201905061433a6000830185613a8e565b6143476020830184614283565b9392505050565b60006040820190506143636000830185613aac565b6143706020830184613aac565b9392505050565b600060408201905061438c6000830185613aac565b6143996020830184614283565b9392505050565b60006020820190506143b56000830184613b19565b92915050565b60006020820190506143d06000830184613b59565b92915050565b600060208201905081810360008301526143f08184613b68565b905092915050565b6000602082019050818103600083015261441181613ba1565b9050919050565b6000602082019050818103600083015261443181613c07565b9050919050565b6000602082019050818103600083015261445181613c6d565b9050919050565b6000602082019050818103600083015261447181613cd3565b9050919050565b6000602082019050818103600083015261449181613d39565b9050919050565b600060208201905081810360008301526144b181613d79565b9050919050565b600060208201905081810360008301526144d181613db9565b9050919050565b600060208201905081810360008301526144f181613df9565b9050919050565b6000602082019050818103600083015261451181613e5f565b9050919050565b6000602082019050818103600083015261453181613e9f565b9050919050565b6000602082019050818103600083015261455181613edf565b9050919050565b6000602082019050818103600083015261457181613f45565b9050919050565b6000602082019050818103600083015261459181613f85565b9050919050565b600060208201905081810360008301526145b181613feb565b9050919050565b600060208201905081810360008301526145d181614051565b9050919050565b600060208201905081810360008301526145f1816140b7565b9050919050565b60006020820190508181036000830152614611816140f7565b9050919050565b600060208201905081810360008301526146318161415d565b9050919050565b600060208201905081810360008301526146518161419d565b9050919050565b6000602082019050818103600083015261467181614203565b9050919050565b6000602082019050818103600083015261469181614243565b9050919050565b60006020820190506146ad6000830184614283565b92915050565b60006040820190506146c86000830185614283565b6146d56020830184614283565b9392505050565b600060a0820190506146f16000830188614283565b6146fe6020830187614283565b81810360408301526147108186613abb565b905061471f6060830185613a8e565b61472c6080830184614283565b9695505050505050565b600060208201905061474b6000830184614292565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006147c7826147e8565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061482a82614855565b9050919050565b600061483c82614843565b9050919050565b600061484e826147e8565b9050919050565b600061486082614867565b9050919050565b6000614872826147e8565b9050919050565b60005b8381101561489757808201518184015260208101905061487c565b838111156148a6576000848401525b50505050565b6000601f19601f8301169050919050565b6148c6816147bc565b81146148d157600080fd5b50565b6148dd816147ce565b81146148e857600080fd5b50565b6148f4816147da565b81146148ff57600080fd5b50565b61490b81614808565b811461491657600080fd5b50565b61492281614812565b811461492d57600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa365627a7a72315820f44709df6d66afc124a04b59be79849408c7296fe95e097c0e836b8fe26b4ca96c6578706572696d656e74616cf564736f6c63430005110040

Deployed Bytecode

0x6080604052600436106102675760003560e01c80638f32d59b11610144578063b93b592b116100b6578063da12f0e11161007a578063da12f0e11461089b578063dd62ed3e146108b2578063e6f934b9146108ef578063eeaa207e1461091a578063eff7a61214610945578063f2fde38b1461096e57610267565b8063b93b592b146107ee578063bc48168f14610817578063c229a93f14610842578063c2dfe4b61461086d578063d67a4a6b1461088457610267565b80639faa3c91116101085780639faa3c91146106de578063a457c2d714610709578063a694fc3a14610746578063a9059cbb1461076f578063ad5c4648146107ac578063b4270a95146107d757610267565b80638f32d59b1461061d578063937f39e814610648578063945c91421461067157806395d89b411461069c5780639c22b691146106c757610267565b80634957677c116101dd5780636fcca69b116101a15780636fcca69b1461051f57806370a082311461055c578063715018a61461059957806376fb3619146105b05780638cf760b8146105db5780638da5cb5b146105f257610267565b80634957677c1461046257806365fc38731461048b578063662fac39146104b457806366346a5c146104df5780636b2015491461050857610267565b806318160ddd1161022f57806318160ddd1461033e57806323b872dd146103695780632681f7e4146103a65780632e17de78146103d1578063313ce567146103fa578063395093511461042557610267565b806306fdde0314610269578063095ea7b3146102945780630f23cbaa146102d157806311585c8e146102e857806316f0115b14610313575b005b34801561027557600080fd5b5061027e610997565b60405161028b91906143d6565b60405180910390f35b3480156102a057600080fd5b506102bb60048036036102b6919081019061391e565b6109d4565b6040516102c891906143a0565b60405180910390f35b3480156102dd57600080fd5b506102e66109f2565b005b3480156102f457600080fd5b506102fd610ab9565b60405161030a91906143bb565b60405180910390f35b34801561031f57600080fd5b50610328610ad1565b6040516103359190614698565b60405180910390f35b34801561034a57600080fd5b50610353610ad7565b6040516103609190614698565b60405180910390f35b34801561037557600080fd5b50610390600480360361038b91908101906138cf565b610ae1565b60405161039d91906143a0565b60405180910390f35b3480156103b257600080fd5b506103bb610bba565b6040516103c891906142b8565b60405180910390f35b3480156103dd57600080fd5b506103f860048036036103f391908101906139e8565b610bd2565b005b34801561040657600080fd5b5061040f610e66565b60405161041c9190614736565b60405180910390f35b34801561043157600080fd5b5061044c6004803603610447919081019061391e565b610e6f565b60405161045991906143a0565b60405180910390f35b34801561046e57600080fd5b50610489600480360361048491908101906139e8565b610f22565b005b34801561049757600080fd5b506104b260048036036104ad9190810190613a3a565b610feb565b005b3480156104c057600080fd5b506104c96110b7565b6040516104d69190614698565b60405180910390f35b3480156104eb57600080fd5b50610506600480360361050191908101906139bf565b61115b565b005b34801561051457600080fd5b5061051d611390565b005b34801561052b57600080fd5b506105466004803603610541919081019061386a565b6113f4565b6040516105539190614736565b60405180910390f35b34801561056857600080fd5b50610583600480360361057e919081019061386a565b61152e565b6040516105909190614698565b60405180910390f35b3480156105a557600080fd5b506105ae611576565b005b3480156105bc57600080fd5b506105c561167e565b6040516105d291906143bb565b60405180910390f35b3480156105e757600080fd5b506105f0611696565b005b3480156105fe57600080fd5b5061060761181e565b60405161061491906142b8565b60405180910390f35b34801561062957600080fd5b50610632611848565b60405161063f91906143a0565b60405180910390f35b34801561065457600080fd5b5061066f600480360361066a919081019061395a565b6118a7565b005b34801561067d57600080fd5b5061068661194a565b60405161069391906143bb565b60405180910390f35b3480156106a857600080fd5b506106b1611962565b6040516106be91906143d6565b60405180910390f35b3480156106d357600080fd5b506106dc61199f565b005b3480156106ea57600080fd5b506106f3611a64565b60405161070091906143a0565b60405180910390f35b34801561071557600080fd5b50610730600480360361072b919081019061391e565b611a77565b60405161073d91906143a0565b60405180910390f35b34801561075257600080fd5b5061076d600480360361076891908101906139e8565b611b44565b005b34801561077b57600080fd5b506107966004803603610791919081019061391e565b611c81565b6040516107a391906143a0565b60405180910390f35b3480156107b857600080fd5b506107c1611c9f565b6040516107ce91906142b8565b60405180910390f35b3480156107e357600080fd5b506107ec611cb7565b005b3480156107fa57600080fd5b50610815600480360361081091908101906139e8565b611e5b565b005b34801561082357600080fd5b5061082c611eac565b60405161083991906142b8565b60405180910390f35b34801561084e57600080fd5b50610857611ec4565b60405161086491906142b8565b60405180910390f35b34801561087957600080fd5b50610882611edc565b005b34801561089057600080fd5b5061089961206a565b005b3480156108a757600080fd5b506108b0612108565b005b3480156108be57600080fd5b506108d960048036036108d49190810190613893565b6125f8565b6040516108e69190614698565b60405180910390f35b3480156108fb57600080fd5b5061090461267f565b60405161091191906142b8565b60405180910390f35b34801561092657600080fd5b5061092f612697565b60405161093c9190614698565b60405180910390f35b34801561095157600080fd5b5061096c600480360361096791908101906139e8565b61269d565b005b34801561097a57600080fd5b506109956004803603610990919081019061386a565b612766565b005b60606040518060400160405280600581526020017f7979437276000000000000000000000000000000000000000000000000000000815250905090565b60006109e86109e1612834565b848461283c565b6001905092915050565b610ab7610ab26005546001610a056110b7565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a5291906142d3565b60206040518083038186803b158015610a6a57600080fd5b505afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aa29190810190613a11565b0101612a0790919063ffffffff16565b612a51565b565b73c7fd9ae2cf8542d71186877e21107e1f3a0b55ef81565b60055481565b6000600254905090565b6000610aee848484612ab2565b610baf84610afa612834565b610baa8560405180606001604052806028815260200161497960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b60612834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b61283c565b600190509392505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60016003600082825401925050819055506000600354905060008211610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2490614418565b60405180910390fd5b6000610c58600254610c4a85600554612d9790919063ffffffff16565b612e0790919063ffffffff16565b9050610c643384612e51565b610c7981600554612a0790919063ffffffff16565b600581905550610cc3610cb46103e8610ca6610c94336113f4565b60ff1685612d9790919063ffffffff16565b612e0790919063ffffffff16565b82612a0790919063ffffffff16565b9050600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d1491906142d3565b60206040518083038186803b158015610d2c57600080fd5b505afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d649190810190613a11565b905081811015610d7a57610d79818303612ff3565b5b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610dc9929190614325565b602060405180830381600087803b158015610de357600080fd5b505af1158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e1b9190810190613996565b5050506003548114610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990614618565b60405180910390fd5b5050565b60006012905090565b6000610f18610e7c612834565b84610f138560016000610e8d612834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307590919063ffffffff16565b61283c565b6001905092915050565b610f2a611848565b610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff16634957677c826040518263ffffffff1660e01b8152600401610fb69190614698565b600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b5050505050565b610ff3611848565b611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff166365fc387383836040518363ffffffff1660e01b81526004016110819291906146b3565b600060405180830381600087803b15801561109b57600080fd5b505af11580156110af573d6000803e3d6000fd5b505050505050565b600073fa712ee4788c042e2b7bb55e6cb8ec569c4530c173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110691906142d3565b60206040518083038186803b15801561111e57600080fd5b505afa158015611132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111569190810190613a11565b905090565b60075473c7fd9ae2cf8542d71186877e21107e1f3a0b55ef73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016111ab91906142d3565b60206040518083038186803b1580156111c357600080fd5b505afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111fb9190810190613a11565b101561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390614518565b60405180910390fd5b6103e88161ffff161115611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c906144f8565b60405180910390fd5b600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d491906142d3565b60206040518083038186803b1580156112ec57600080fd5b505afa158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113249190810190613a11565b905060006113306110b7565b9050600081830190506113646103e86113568661ffff1684612d9790919063ffffffff16565b612e0790919063ffffffff16565b90508181111561137e576113798282036130ca565b61138a565b611389818303612ff3565b5b50505050565b611398611848565b6113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614558565b60405180910390fd5b6000600660006101000a81548160ff021916908315150217905550565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16141561145657601e9050611529565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff16600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614156114d95760009050611529565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61157e611848565b6115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490614558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a881565b60075473c7fd9ae2cf8542d71186877e21107e1f3a0b55ef73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016116e691906142d3565b60206040518083038186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117369190810190613a11565b1015611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90614518565b60405180910390fd5b61181c73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117c791906142d3565b60206040518083038186803b1580156117df57600080fd5b505afa1580156117f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118179190810190613a11565b6130ca565b565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661188b612834565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6118af611848565b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614558565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b73d533a949740bb3306d119cc777fa900ba034cd5281565b60606040518060400160405280600581526020017f7979437276000000000000000000000000000000000000000000000000000000815250905090565b6119a7611848565b6119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dd90614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff16633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050611a62611edc565b565b600660009054906101000a900460ff1681565b6000611b3a611a84612834565b84611b35856040518060600160405280602581526020016149a16025913960016000611aae612834565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b61283c565b6001905092915050565b60008111611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e906144d8565b60405180910390fd5b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611bd8939291906142ee565b602060405180830381600087803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2a9190810190613996565b506000611c56600554611c4860025485612d9790919063ffffffff16565b612e0790919063ffffffff16565b9050611c62338261314c565b611c778260055461307590919063ffffffff16565b6005819055505050565b6000611c95611c8e612834565b8484612ab2565b6001905092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b611cbf611848565b611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590614558565b60405180910390fd5b600660009054906101000a900460ff1615611e595773df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611d4b61181e565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d9891906142d3565b60206040518083038186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611de89190810190613a11565b6040518363ffffffff1660e01b8152600401611e05929190614377565b602060405180830381600087803b158015611e1f57600080fd5b505af1158015611e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e579190810190613996565b505b565b611e63611848565b611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9990614558565b60405180910390fd5b8060078190555050565b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a281565b73d061d61a4d941c39e5453435b6345dc261c2fce081565b611ee4611848565b611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a90614558565b60405180910390fd5b73d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611f5b61181e565b73d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fa891906142d3565b60206040518083038186803b158015611fc057600080fd5b505afa158015611fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff89190810190613a11565b6040518363ffffffff1660e01b8152600401612015929190614377565b602060405180830381600087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120679190810190613996565b50565b73d061d61a4d941c39e5453435b6345dc261c2fce073ffffffffffffffffffffffffffffffffffffffff166327f18ae373fa712ee4788c042e2b7bb55e6cb8ec569c4530c16120b761181e565b6040518363ffffffff1660e01b81526004016120d492919061434e565b600060405180830381600087803b1580156120ee57600080fd5b505af1158015612102573d6000803e3d6000fd5b50505050565b60075473c7fd9ae2cf8542d71186877e21107e1f3a0b55ef73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161215891906142d3565b60206040518083038186803b15801561217057600080fd5b505afa158015612184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121a89190810190613a11565b10156121e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e090614518565b60405180910390fd5b73d061d61a4d941c39e5453435b6345dc261c2fce073ffffffffffffffffffffffffffffffffffffffff16636a62784273fa712ee4788c042e2b7bb55e6cb8ec569c4530c16040518263ffffffff1660e01b815260040161224a91906142b8565b600060405180830381600087803b15801561226457600080fd5b505af1158015612278573d6000803e3d6000fd5b50505050600073d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122cb91906142d3565b60206040518083038186803b1580156122e357600080fd5b505afa1580156122f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061231b9190810190613a11565b905060008111612360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612357906144b8565b60405180910390fd5b6123b4737a250d5630b4cf539739df2c5dacb4c659f2488d600073d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166132d49092919063ffffffff16565b612407737a250d5630b4cf539739df2c5dacb4c659f2488d8273d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff166132d49092919063ffffffff16565b606060036040519080825280602002602001820160405280156124395781602001602082028038833980820191505090505b50905073d533a949740bb3306d119cc777fa900ba034cd528160008151811061245e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106124ba57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073df5e0e81dff6faf3a7e52ba697820c5e32d806a88160028151811061251657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed1739836000843061259a6107084261307590919063ffffffff16565b6040518663ffffffff1660e01b81526004016125ba9594939291906146dc565b600060405180830381600087803b1580156125d457600080fd5b505af11580156125e8573d6000803e3d6000fd5b505050506125f46109f2565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c181565b60075481565b6126a5611848565b6126e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126db90614558565b60405180910390fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a273ffffffffffffffffffffffffffffffffffffffff1663eff7a612826040518263ffffffff1660e01b81526004016127319190614698565b600060405180830381600087803b15801561274b57600080fd5b505af115801561275f573d6000803e3d6000fd5b5050505050565b61276f8161344b565b73d533a949740bb3306d119cc777fa900ba034cd5273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016127de929190614377565b602060405180830381600087803b1580156127f857600080fd5b505af115801561280c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128309190810190613996565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a3906145b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561291c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291390614458565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129fa9190614698565b60405180910390a3505050565b6000612a4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d3c565b905092915050565b60008111612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b906145d8565b60405180910390fd5b612aa98160055461307590919063ffffffff16565b60058190555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614598565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b89906143f8565b60405180910390fd5b612bfd81604051806060016040528060268152602001614953602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c90816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d2f9190614698565b60405180910390a3505050565b6000838311158290612d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7b91906143d6565b60405180910390fd5b5060008385039050809150509392505050565b600080831415612daa5760009050612e01565b6000828402905082848281612dbb57fe5b0414612dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df390614538565b60405180910390fd5b809150505b92915050565b6000612e4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061349e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb890614578565b60405180910390fd5b612f2c81604051806060016040528060228152602001614931602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3c9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f8381600254612a0790919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fe79190614698565b60405180910390a35050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c173ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016130409190614698565b600060405180830381600087803b15801561305a57600080fd5b505af115801561306e573d6000803e3d6000fd5b5050505050565b6000808284019050838110156130c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b790614478565b60405180910390fd5b8091505092915050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c173ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016131179190614698565b600060405180830381600087803b15801561313157600080fd5b505af1158015613145573d6000803e3d6000fd5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b390614678565b60405180910390fd5b6131d18160025461307590919063ffffffff16565b600281905550613228816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132c89190614698565b60405180910390a35050565b600081148061336d575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161331b92919061434e565b60206040518083038186803b15801561333357600080fd5b505afa158015613347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061336b9190810190613a11565b145b6133ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a390614638565b60405180910390fd5b613446838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b84846040516024016133e4929190614377565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506134ff565b505050565b613453611848565b613492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348990614558565b60405180910390fd5b61349b81613671565b50565b600080831182906134e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134dc91906143d6565b60405180910390fd5b5060008385816134f157fe5b049050809150509392505050565b61351e8273ffffffffffffffffffffffffffffffffffffffff166137a1565b61355d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355490614658565b60405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161358691906142a1565b6000604051808303816000865af19150503d80600081146135c3576040519150601f19603f3d011682016040523d82523d6000602084013e6135c8565b606091505b50915091508161360d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360490614498565b60405180910390fd5b60008151111561366b578080602001905161362b9190810190613996565b61366a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613661906145f8565b60405180910390fd5b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156136e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d890614438565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156137e35750808214155b92505050919050565b6000813590506137fb816148bd565b92915050565b600081519050613810816148d4565b92915050565b600081359050613825816148eb565b92915050565b60008135905061383a81614902565b92915050565b60008151905061384f81614902565b92915050565b60008135905061386481614919565b92915050565b60006020828403121561387c57600080fd5b600061388a848285016137ec565b91505092915050565b600080604083850312156138a657600080fd5b60006138b4858286016137ec565b92505060206138c5858286016137ec565b9150509250929050565b6000806000606084860312156138e457600080fd5b60006138f2868287016137ec565b9350506020613903868287016137ec565b92505060406139148682870161382b565b9150509250925092565b6000806040838503121561393157600080fd5b600061393f858286016137ec565b92505060206139508582860161382b565b9150509250929050565b6000806040838503121561396d57600080fd5b600061397b858286016137ec565b925050602061398c85828601613855565b9150509250929050565b6000602082840312156139a857600080fd5b60006139b684828501613801565b91505092915050565b6000602082840312156139d157600080fd5b60006139df84828501613816565b91505092915050565b6000602082840312156139fa57600080fd5b6000613a088482850161382b565b91505092915050565b600060208284031215613a2357600080fd5b6000613a3184828501613840565b91505092915050565b60008060408385031215613a4d57600080fd5b6000613a5b8582860161382b565b9250506020613a6c8582860161382b565b9150509250929050565b6000613a828383613a9d565b60208301905092915050565b613a978161481f565b82525050565b613aa6816147bc565b82525050565b613ab5816147bc565b82525050565b6000613ac682614761565b613ad0818561478f565b9350613adb83614751565b8060005b83811015613b0c578151613af38882613a76565b9750613afe83614782565b925050600181019050613adf565b5085935050505092915050565b613b22816147ce565b82525050565b6000613b338261476c565b613b3d81856147a0565b9350613b4d818560208601614879565b80840191505092915050565b613b6281614831565b82525050565b6000613b7382614777565b613b7d81856147ab565b9350613b8d818560208601614879565b613b96816148ac565b840191505092915050565b6000613bae6023836147ab565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c146025836147ab565b91507f756e7374616b6520736861726573206d7573742062652067726561746572207460008301527f68616e20300000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c7a6026836147ab565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ce06022836147ab565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d46601b836147ab565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613d866020836147ab565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b6000613dc6600d836147ab565b91507f6e6f20656e6f75676820437276000000000000000000000000000000000000006000830152602082019050919050565b6000613e066023836147ab565b91507f7374616b6520616d6f756e74206d75737420626520677265617465722074686160008301527f6e203000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e6c600f836147ab565b91507f726174696f20746f6f206c6172676500000000000000000000000000000000006000830152602082019050919050565b6000613eac6017836147ab565b91507f696e73756666696369656e742079336420737570706c790000000000000000006000830152602082019050919050565b6000613eec6021836147ab565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f526020836147ab565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613f926021836147ab565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ff86025836147ab565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061405e6024836147ab565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006140c4601e836147ab565b91507f6465706f736974206d7573742062652067726561746572207468616e203000006000830152602082019050919050565b6000614104602a836147ab565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b600061416a601f836147ab565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006141aa6036836147ab565b91507f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008301527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006020830152604082019050919050565b6000614210601f836147ab565b91507f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b6000614250601f836147ab565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61428c81614808565b82525050565b61429b81614812565b82525050565b60006142ad8284613b28565b915081905092915050565b60006020820190506142cd6000830184613aac565b92915050565b60006020820190506142e86000830184613a8e565b92915050565b60006060820190506143036000830186613a8e565b6143106020830185613a8e565b61431d6040830184614283565b949350505050565b600060408201905061433a6000830185613a8e565b6143476020830184614283565b9392505050565b60006040820190506143636000830185613aac565b6143706020830184613aac565b9392505050565b600060408201905061438c6000830185613aac565b6143996020830184614283565b9392505050565b60006020820190506143b56000830184613b19565b92915050565b60006020820190506143d06000830184613b59565b92915050565b600060208201905081810360008301526143f08184613b68565b905092915050565b6000602082019050818103600083015261441181613ba1565b9050919050565b6000602082019050818103600083015261443181613c07565b9050919050565b6000602082019050818103600083015261445181613c6d565b9050919050565b6000602082019050818103600083015261447181613cd3565b9050919050565b6000602082019050818103600083015261449181613d39565b9050919050565b600060208201905081810360008301526144b181613d79565b9050919050565b600060208201905081810360008301526144d181613db9565b9050919050565b600060208201905081810360008301526144f181613df9565b9050919050565b6000602082019050818103600083015261451181613e5f565b9050919050565b6000602082019050818103600083015261453181613e9f565b9050919050565b6000602082019050818103600083015261455181613edf565b9050919050565b6000602082019050818103600083015261457181613f45565b9050919050565b6000602082019050818103600083015261459181613f85565b9050919050565b600060208201905081810360008301526145b181613feb565b9050919050565b600060208201905081810360008301526145d181614051565b9050919050565b600060208201905081810360008301526145f1816140b7565b9050919050565b60006020820190508181036000830152614611816140f7565b9050919050565b600060208201905081810360008301526146318161415d565b9050919050565b600060208201905081810360008301526146518161419d565b9050919050565b6000602082019050818103600083015261467181614203565b9050919050565b6000602082019050818103600083015261469181614243565b9050919050565b60006020820190506146ad6000830184614283565b92915050565b60006040820190506146c86000830185614283565b6146d56020830184614283565b9392505050565b600060a0820190506146f16000830188614283565b6146fe6020830187614283565b81810360408301526147108186613abb565b905061471f6060830185613a8e565b61472c6080830184614283565b9695505050505050565b600060208201905061474b6000830184614292565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006147c7826147e8565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061482a82614855565b9050919050565b600061483c82614843565b9050919050565b600061484e826147e8565b9050919050565b600061486082614867565b9050919050565b6000614872826147e8565b9050919050565b60005b8381101561489757808201518184015260208101905061487c565b838111156148a6576000848401525b50505050565b6000601f19601f8301169050919050565b6148c6816147bc565b81146148d157600080fd5b50565b6148dd816147ce565b81146148e857600080fd5b50565b6148f4816147da565b81146148ff57600080fd5b50565b61490b81614808565b811461491657600080fd5b50565b61492281614812565b811461492d57600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa365627a7a72315820f44709df6d66afc124a04b59be79849408c7296fe95e097c0e836b8fe26b4ca96c6578706572696d656e74616cf564736f6c63430005110040

Deployed Bytecode Sourcemap

11719:6121:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5513:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5513:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;2654:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:152:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14894:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14894:121:0;;;:::i;:::-;;12134:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12134:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;12775:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12775:16:0;;;:::i;:::-;;;;;;;;;;;;;;;;2137:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2137:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;2812:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2812:304:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12586:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12586:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;14047:538;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14047:538:0;;;;;;;;;;;;;;;;:::i;:::-;;5695:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5695:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;3122:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3122:210:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16909:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16909:122:0;;;;;;;;;;;;;;;;:::i;:::-;;17169:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17169:115:0;;;;;;;;;;;;;;;;:::i;:::-;;13259:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13259:120:0;;;:::i;:::-;;;;;;;;;;;;;;;;15639:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15639:311:0;;;;;;;;;;;;;;;;:::i;:::-;;17558:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17558:67:0;;;:::i;:::-;;13385:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13385:197:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2234:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2234:110:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6713:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6713:140:0;;;:::i;:::-;;12047:80;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12047:80:0;;;:::i;:::-;;;;;;;;;;;;;;;;15534:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15534:99:0;;;:::i;:::-;;6416:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6416:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;6613:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6613:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;15326:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15326:104:0;;;;;;;;;;;;;;;;:::i;:::-;;12220:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12220:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;5602:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5602:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;17290:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17290:127:0;;;:::i;:::-;;12798:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12798:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;3338:261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3338:261:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13642:366;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13642:366:0;;;;;;;;;;;;;;;;:::i;:::-;;2350:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2350:158:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12306:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12306:82:0;;;:::i;:::-;;;;;;;;;;;;;;;;17713:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17713:124:0;;;:::i;:::-;;15201:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15201:115:0;;;;;;;;;;;;;;;;:::i;:::-;;12678:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12678:88:0;;;:::i;:::-;;;;;;;;;;;;;;;;12491;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12491:88:0;;;:::i;:::-;;;;;;;;;;;;;;;;17423:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17423:111:0;;;:::i;:::-;;16071:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16071:110:0;;;:::i;:::-;;16187:689;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16187:689:0;;;:::i;:::-;;2514:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2514:134:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12395:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12395:89:0;;;:::i;:::-;;;;;;;;;;;;;;;;12830:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12830:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;17037:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17037:122:0;;;;;;;;;;;;;;;;:::i;:::-;;15049:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15049:146:0;;;;;;;;;;;;;;;;:::i;:::-;;5513:83;5550:13;5583:5;;;;;;;;;;;;;;;;;5576:12;;5513:83;:::o;2654:152::-;2720:4;2737:39;2746:12;:10;:12::i;:::-;2760:7;2769:6;2737:8;:39::i;:::-;2794:4;2787:11;;2654:152;;;;:::o;14894:121::-;14947:60;14954:52;15001:4;;14994:1;14985:8;:6;:8::i;:::-;12084:42;14955:14;;;14978:4;14955:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14955:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14955:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14955:29:0;;;;;;;;;:38;:40;14954:46;;:52;;;;:::i;:::-;14947:6;:60::i;:::-;14894:121::o;12134:79::-;12170:42;12134:79;:::o;12775:16::-;;;;:::o;2137:91::-;2181:7;2208:12;;2201:19;;2137:91;:::o;2812:304::-;2901:4;2918:36;2928:6;2936:9;2947:6;2918:9;:36::i;:::-;2965:121;2974:6;2982:12;:10;:12::i;:::-;2996:89;3034:6;2996:89;;;;;;;;;;;;;;;;;:11;:19;3008:6;2996:19;;;;;;;;;;;;;;;:33;3016:12;:10;:12::i;:::-;2996:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;2965:8;:121::i;:::-;3104:4;3097:11;;2812:304;;;;;:::o;12586:85::-;12628:42;12586:85;:::o;14047:538::-;5975:1;5958:13;;:18;;;;;;;;;;;5987:20;6010:13;;5987:36;;14132:1;14122:7;:11;14114:61;;;;;;;;;;;;;;;;;;;;;;14241:15;14259:37;14283:12;;14260:17;14269:7;14260:4;;:8;;:17;;;;:::i;:::-;14259:23;;:37;;;;:::i;:::-;14241:55;;14307:26;14313:10;14325:7;14307:5;:26::i;:::-;14342:17;14351:7;14342:4;;:8;;:17;;;;:::i;:::-;14335:4;:24;;;;14380:51;14392:38;14425:4;14392:28;14404:15;14408:10;14404:3;:15::i;:::-;14392:28;;:7;:11;;:28;;;;:::i;:::-;:32;;:38;;;;:::i;:::-;14380:7;:11;;:51;;;;:::i;:::-;14370:61;;14442:9;12084:42;14454:14;;;14477:4;14454:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14454:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14454:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14454:29:0;;;;;;;;;14442:41;;14502:7;14498:1;:11;14494:38;;;14511:21;14530:1;14520:7;:11;14511:8;:21::i;:::-;14494:38;12084:42;14543:13;;;14557:10;14569:7;14543:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14543:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14543:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14543:34:0;;;;;;;;;;6034:1;;6070:13;;6054:12;:29;6046:73;;;;;;;;;;;;;;;;;;;;;;14047:538;;:::o;5695:83::-;5736:5;5502:2;5754:16;;5695:83;:::o;3122:210::-;3202:4;3219:83;3228:12;:10;:12::i;:::-;3242:7;3251:50;3290:10;3251:11;:25;3263:12;:10;:12::i;:::-;3251:25;;;;;;;;;;;;;;;:34;3277:7;3251:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3219:8;:83::i;:::-;3320:4;3313:11;;3122:210;;;;:::o;16909:122::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;12723:42;16977:38;;;17016:6;16977:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16977:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16977:46:0;;;;16909:122;:::o;17169:115::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;12723:42;17236:34;;;17271:1;17274;17236:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17236:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17236:40:0;;;;17169:115;;:::o;13259:120::-;13298:4;12441:42;13322:34;;;13365:4;13322:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13322:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13322:49:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13322:49:0;;;;;;;;;13315:56;;13259:120;:::o;15639:311::-;11875:12;;12170:42;11837:13;;;11859:10;11837:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11837:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11837:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11837:34:0;;;;;;;;;:50;;11829:86;;;;;;;;;;;;;;;;;;;;;;15725:4;15716:5;:13;;;;15708:41;;;;;;;;;;;;;;;;;;;;;;15760:6;12084:42;15769:14;;;15792:4;15769:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15769:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15769:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15769:29:0;;;;;;;;;15760:38;;15809:6;15818:8;:6;:8::i;:::-;15809:17;;15837:6;15850:1;15846;:5;15837:14;;15857:22;15874:4;15857:12;15863:5;15857:12;;:1;:5;;:12;;;;:::i;:::-;:16;;:22;;;;:::i;:::-;15853:26;;15898:1;15894;:5;15890:52;;;15901:12;15911:1;15909;:3;15901:7;:12::i;:::-;15890:52;;;15929:13;15940:1;15938;:3;15929:8;:13::i;:::-;15890:52;11926:1;;;15639:311;:::o;17558:67::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;17612:5;17605:4;;:12;;;;;;;;;;;;;;;;;;17558:67::o;13385:197::-;13436:5;13475:1;13458:4;:13;13463:7;13458:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;13454:33;;;13485:2;13478:9;;;;13454:33;13530:2;13507:26;;:4;:13;13512:7;13507:13;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;13503:40;;;13542:1;13535:8;;;;13503:40;13561:4;:13;13566:7;13561:13;;;;;;;;;;;;;;;;;;;;;;;;;13554:20;;13385:197;;;;:::o;2234:110::-;2291:7;2318:9;:18;2328:7;2318:18;;;;;;;;;;;;;;;;2311:25;;2234:110;;;:::o;6713:140::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;6812:1;6775:40;;6796:6;;;;;;;;;;;6775:40;;;;;;;;;;;;6843:1;6826:6;;:19;;;;;;;;;;;;;;;;;;6713:140::o;12047:80::-;12084:42;12047:80;:::o;15534:99::-;11875:12;;12170:42;11837:13;;;11859:10;11837:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11837:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11837:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11837:34:0;;;;;;;;;:50;;11829:86;;;;;;;;;;;;;;;;;;;;;;15587:38;12084:42;15595:14;;;15618:4;15595:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15595:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15595:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15595:29:0;;;;;;;;;15587:7;:38::i;:::-;15534:99::o;6416:79::-;6454:7;6481:6;;;;;;;;;;;6474:13;;6416:79;:::o;6613:94::-;6653:4;6693:6;;;;;;;;;;;6677:22;;:12;:10;:12::i;:::-;:22;;;6670:29;;6613:94;:::o;15326:104::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;15418:4;15402;:13;15407:7;15402:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15326:104;;:::o;12220:79::-;12256:42;12220:79;:::o;5602:87::-;5641:13;5674:7;;;;;;;;;;;;;;;;;5667:14;;5602:87;:::o;17290:127::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;12723:42;17351:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17351:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17351:33:0;;;;17395:14;:12;:14::i;:::-;17290:127::o;12798:23::-;;;;;;;;;;;;;:::o;3338:261::-;3423:4;3440:129;3449:12;:10;:12::i;:::-;3463:7;3472:96;3511:15;3472:96;;;;;;;;;;;;;;;;;:11;:25;3484:12;:10;:12::i;:::-;3472:25;;;;;;;;;;;;;;;:34;3498:7;3472:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;3440:8;:129::i;:::-;3587:4;3580:11;;3338:261;;;;:::o;13642:366::-;13712:1;13702:7;:11;13694:59;;;;;;;;;;;;;;;;;;;;;;12084:42;13764:17;;;13782:10;13802:4;13809:7;13764:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13764:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13764:53:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13764:53:0;;;;;;;;;;13884:14;13901:37;13933:4;;13902:25;13914:12;;13902:7;:11;;:25;;;;:::i;:::-;13901:31;;:37;;;;:::i;:::-;13884:54;;13949:25;13955:10;13967:6;13949:5;:25::i;:::-;13983:17;13992:7;13983:4;;:8;;:17;;;;:::i;:::-;13976:4;:24;;;;13642:366;;:::o;2350:158::-;2419:4;2436:42;2446:12;:10;:12::i;:::-;2460:9;2471:6;2436:9;:42::i;:::-;2496:4;2489:11;;2350:158;;;;:::o;12306:82::-;12345:42;12306:82;:::o;17713:124::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;17770:4;;;;;;;;;;;17766:63;;;12084:42;17776:13;;;17790:7;:5;:7::i;:::-;12084:42;17799:14;;;17822:4;17799:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17799:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17799:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17799:29:0;;;;;;;;;17776:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17776:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17776:53:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17776:53:0;;;;;;;;;;17766:63;17713:124::o;15201:115::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;15295:13;15280:12;:28;;;;15201:115;:::o;12678:88::-;12723:42;12678:88;:::o;12491:::-;12536:42;12491:88;:::o;17423:111::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;12256:42;17475:12;;;17488:7;:5;:7::i;:::-;12256:42;17497:13;;;17519:4;17497:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17497:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17497:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17497:28:0;;;;;;;;;17475:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17475:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17475:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17475:51:0;;;;;;;;;;17423:111::o;16071:110::-;12536:42;16120:31;;;12441:42;16165:7;:5;:7::i;:::-;16120:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16120:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16120:53:0;;;;16071:110::o;16187:689::-;11875:12;;12170:42;11837:13;;;11859:10;11837:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11837:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11837:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11837:34:0;;;;;;;;;:50;;11829:86;;;;;;;;;;;;;;;;;;;;;;12536:42;16253:27;;;12441:42;16253:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16253:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16253:40:0;;;;16304:9;12256:42;16316:13;;;16338:4;16316:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16316:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16316:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16316:28:0;;;;;;;;;16304:40;;16370:1;16363:4;:8;16355:34;;;;;;;;;;;;;;;;;;;;;;16400:27;12628:42;16425:1;12256:42;16400:15;;;;:27;;;;;:::i;:::-;16438:30;12628:42;16463:4;12256:42;16438:15;;;;:30;;;;;:::i;:::-;16491:21;16529:1;16515:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;16515:16:0;;;;16491:40;;16552:42;16542:4;16547:1;16542:7;;;;;;;;;;;;;:52;;;;;;;;;;;16622:42;16612:4;16617:1;16612:7;;;;;;;;;;;;;:52;;;;;;;;;;;16693:42;16683:4;16688:1;16683:7;;;;;;;;;;;;;:52;;;;;;;;;;;12628:42;16755;;;16798:4;16809:1;16813:4;16827;16834:13;16842:4;16834:3;:7;;:13;;;;:::i;:::-;16755:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16755:93:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16755:93:0;;;;16859:9;:7;:9::i;:::-;11926:1;;16187:689::o;2514:134::-;2586:7;2613:11;:18;2625:5;2613:18;;;;;;;;;;;;;;;:27;2632:7;2613:27;;;;;;;;;;;;;;;;2606:34;;2514:134;;;;:::o;12395:89::-;12441:42;12395:89;:::o;12830:31::-;;;;:::o;17037:122::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;12723:42;17105:43;;;17149:1;17105:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17105:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17105:46:0;;;;17037:122;:::o;15049:146::-;15112:33;15136:8;15112:23;:33::i;:::-;12256:42;15156:11;;;15168:8;15183:2;15156:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15156:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15156:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15156:31:0;;;;;;;;;;15049:146;:::o;1571:98::-;1616:15;1651:10;1644:17;;1571:98;:::o;4750:338::-;4861:1;4844:19;;:5;:19;;;;4836:68;;;;;;;;;;;;;;;;;;;;;;4942:1;4923:21;;:7;:21;;;;4915:68;;;;;;;;;;;;;;;;;;;;;;5026:6;4996:11;:18;5008:5;4996:18;;;;;;;;;;;;;;;:27;5015:7;4996:27;;;;;;;;;;;;;;;:36;;;;5064:7;5048:32;;5057:5;5048:32;;;5073:6;5048:32;;;;;;;;;;;;;;;4750:338;;;:::o;7421:136::-;7479:7;7506:43;7510:1;7513;7506:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7499:50;;7421:136;;;;:::o;14716:150::-;14787:1;14777:7;:11;14769:54;;;;;;;;;;;;;;;;;;;;;;14841:17;14850:7;14841:4;;:8;;:17;;;;:::i;:::-;14834:4;:24;;;;14716:150;:::o;3605:471::-;3721:1;3703:20;;:6;:20;;;;3695:70;;;;;;;;;;;;;;;;;;;;;;3805:1;3784:23;;:9;:23;;;;3776:71;;;;;;;;;;;;;;;;;;;;;;3880;3902:6;3880:71;;;;;;;;;;;;;;;;;:9;:17;3890:6;3880:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;3860:9;:17;3870:6;3860:17;;;;;;;;;;;;;;;:91;;;;3985:32;4010:6;3985:9;:20;3995:9;3985:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;3962:9;:20;3972:9;3962:20;;;;;;;;;;;;;;;:55;;;;4050:9;4033:35;;4042:6;4033:35;;;4061:6;4033:35;;;;;;;;;;;;;;;3605:471;;;:::o;7563:192::-;7649:7;7682:1;7677;:6;;7685:12;7669:29;;;;;;;;;;;;;;;;;;;;;;;;;7709:9;7725:1;7721;:5;7709:17;;7746:1;7739:8;;;7563:192;;;;;:::o;7761:250::-;7819:7;7848:1;7843;:6;7839:47;;;7873:1;7866:8;;;;7839:47;7898:9;7914:1;7910;:5;7898:17;;7943:1;7938;7934;:5;;;;;;:10;7926:56;;;;;;;;;;;;;;;;;;;;;;8002:1;7995:8;;;7761:250;;;;;:::o;8017:132::-;8075:7;8102:39;8106:1;8109;8102:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8095:46;;8017:132;;;;:::o;4396:348::-;4491:1;4472:21;;:7;:21;;;;4464:67;;;;;;;;;;;;;;;;;;;;;;4565:68;4588:6;4565:68;;;;;;;;;;;;;;;;;:9;:18;4575:7;4565:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;4544:9;:18;4554:7;4544:18;;;;;;;;;;;;;;;:89;;;;4659:24;4676:6;4659:12;;:16;;:24;;;;:::i;:::-;4644:12;:39;;;;4725:1;4699:37;;4708:7;4699:37;;;4729:6;4699:37;;;;;;;;;;;;;;;4396:348;;:::o;15956:105::-;12441:42;16011:33;;;16045:7;16011:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16011:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16011:42:0;;;;15956:105;:::o;7234:181::-;7292:7;7312:9;7328:1;7324;:5;7312:17;;7353:1;7348;:6;;7340:46;;;;;;;;;;;;;;;;;;;;;;7406:1;7399:8;;;7234:181;;;;:::o;15436:88::-;12441:42;15481:32;;;15514:1;15481:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15481:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15481:35:0;;;;15436:88;:::o;4082:308::-;4177:1;4158:21;;:7;:21;;;;4150:65;;;;;;;;;;;;;;;;;;;;;;4243:24;4260:6;4243:12;;:16;;:24;;;;:::i;:::-;4228:12;:39;;;;4299:30;4322:6;4299:9;:18;4309:7;4299:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;4278:9;:18;4288:7;4278:18;;;;;;;;;;;;;;;:51;;;;4366:7;4345:37;;4362:1;4345:37;;;4375:6;4345:37;;;;;;;;;;;;;;;4082:308;;:::o;10130:347::-;10235:1;10226:5;:10;10225:62;;;;10285:1;10242:5;:15;;;10266:4;10273:7;10242:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10242:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10242:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10242:39:0;;;;;;;;;:44;10225:62;10217:152;;;;;;;;;;;;;;;;;;;;;;10380:89;10399:5;10429;:13;;;:22;;;;10453:7;10462:5;10406:62;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10406:62:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;10406:62:0;10380:18;:89::i;:::-;10130:347;;;:::o;6859:109::-;6541:9;:7;:9::i;:::-;6533:54;;;;;;;;;;;;;;;;;;;;;;6932:28;6951:8;6932:18;:28::i;:::-;6859:109;:::o;8155:258::-;8241:7;8340:1;8336;:5;8343:12;8328:28;;;;;;;;;;;;;;;;;;;;;;;;;8367:9;8383:1;8379;:5;;;;;;8367:17;;8404:1;8397:8;;;8155:258;;;;;:::o;11114:598::-;11202:27;11210:5;11202:25;;;:27::i;:::-;11194:71;;;;;;;;;;;;;;;;;;;;;;11339:12;11353:23;11388:5;11380:19;;11400:4;11380:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11338:67:0;;;;11424:7;11416:52;;;;;;;;;;;;;;;;;;;;;;11505:1;11485:10;:17;:21;11481:224;;;11627:10;11616:30;;;;;;;;;;;;;;11608:85;;;;;;;;;;;;;;;;;;;;;;11481:224;11114:598;;;;:::o;6974:229::-;7068:1;7048:22;;:8;:22;;;;7040:73;;;;;;;;;;;;;;;;;;;;;;7158:8;7129:38;;7150:6;;;;;;;;;;;7129:38;;;;;;;;;;;;7187:8;7178:6;;:17;;;;;;;;;;;;;;;;;;6974:229;:::o;8751:374::-;8811:4;8828:16;8855:19;8877:66;8855:88;;;;9046:7;9034:20;9022:32;;9086:3;9074:15;;:8;:15;;:42;;;;;9105:11;9093:8;:23;;9074:42;9066:51;;;;8751:374;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:128;;223:6;217:13;208:22;;235:30;259:5;235:30;;;202:68;;;;;277:128;;356:6;343:20;334:29;;368:32;394:5;368:32;;;328:77;;;;;412:130;;492:6;479:20;470:29;;504:33;531:5;504:33;;;464:78;;;;;549:134;;633:6;627:13;618:22;;645:33;672:5;645:33;;;612:71;;;;;690:126;;768:6;755:20;746:29;;780:31;805:5;780:31;;;740:76;;;;;823:241;;927:2;915:9;906:7;902:23;898:32;895:2;;;943:1;940;933:12;895:2;978:1;995:53;1040:7;1031:6;1020:9;1016:22;995:53;;;985:63;;957:97;889:175;;;;;1071:366;;;1192:2;1180:9;1171:7;1167:23;1163:32;1160:2;;;1208:1;1205;1198:12;1160:2;1243:1;1260:53;1305:7;1296:6;1285:9;1281:22;1260:53;;;1250:63;;1222:97;1350:2;1368:53;1413:7;1404:6;1393:9;1389:22;1368:53;;;1358:63;;1329:98;1154:283;;;;;;1444:491;;;;1582:2;1570:9;1561:7;1557:23;1553:32;1550:2;;;1598:1;1595;1588:12;1550:2;1633:1;1650:53;1695:7;1686:6;1675:9;1671:22;1650:53;;;1640:63;;1612:97;1740:2;1758:53;1803:7;1794:6;1783:9;1779:22;1758:53;;;1748:63;;1719:98;1848:2;1866:53;1911:7;1902:6;1891:9;1887:22;1866:53;;;1856:63;;1827:98;1544:391;;;;;;1942:366;;;2063:2;2051:9;2042:7;2038:23;2034:32;2031:2;;;2079:1;2076;2069:12;2031:2;2114:1;2131:53;2176:7;2167:6;2156:9;2152:22;2131:53;;;2121:63;;2093:97;2221:2;2239:53;2284:7;2275:6;2264:9;2260:22;2239:53;;;2229:63;;2200:98;2025:283;;;;;;2315:362;;;2434:2;2422:9;2413:7;2409:23;2405:32;2402:2;;;2450:1;2447;2440:12;2402:2;2485:1;2502:53;2547:7;2538:6;2527:9;2523:22;2502:53;;;2492:63;;2464:97;2592:2;2610:51;2653:7;2644:6;2633:9;2629:22;2610:51;;;2600:61;;2571:96;2396:281;;;;;;2684:257;;2796:2;2784:9;2775:7;2771:23;2767:32;2764:2;;;2812:1;2809;2802:12;2764:2;2847:1;2864:61;2917:7;2908:6;2897:9;2893:22;2864:61;;;2854:71;;2826:105;2758:183;;;;;2948:239;;3051:2;3039:9;3030:7;3026:23;3022:32;3019:2;;;3067:1;3064;3057:12;3019:2;3102:1;3119:52;3163:7;3154:6;3143:9;3139:22;3119:52;;;3109:62;;3081:96;3013:174;;;;;3194:241;;3298:2;3286:9;3277:7;3273:23;3269:32;3266:2;;;3314:1;3311;3304:12;3266:2;3349:1;3366:53;3411:7;3402:6;3391:9;3387:22;3366:53;;;3356:63;;3328:97;3260:175;;;;;3442:263;;3557:2;3545:9;3536:7;3532:23;3528:32;3525:2;;;3573:1;3570;3563:12;3525:2;3608:1;3625:64;3681:7;3672:6;3661:9;3657:22;3625:64;;;3615:74;;3587:108;3519:186;;;;;3712:366;;;3833:2;3821:9;3812:7;3808:23;3804:32;3801:2;;;3849:1;3846;3839:12;3801:2;3884:1;3901:53;3946:7;3937:6;3926:9;3922:22;3901:53;;;3891:63;;3863:97;3991:2;4009:53;4054:7;4045:6;4034:9;4030:22;4009:53;;;3999:63;;3970:98;3795:283;;;;;;4086:173;;4173:46;4215:3;4207:6;4173:46;;;4248:4;4243:3;4239:14;4225:28;;4166:93;;;;;4267:142;4358:45;4397:5;4358:45;;;4353:3;4346:58;4340:69;;;4416:103;4489:24;4507:5;4489:24;;;4484:3;4477:37;4471:48;;;4526:113;4609:24;4627:5;4609:24;;;4604:3;4597:37;4591:48;;;4677:690;;4822:54;4870:5;4822:54;;;4889:86;4968:6;4963:3;4889:86;;;4882:93;;4996:56;5046:5;4996:56;;;5072:7;5100:1;5085:260;5110:6;5107:1;5104:13;5085:260;;;5177:6;5171:13;5198:63;5257:3;5242:13;5198:63;;;5191:70;;5278:60;5331:6;5278:60;;;5268:70;;5142:203;5132:1;5129;5125:9;5120:14;;5085:260;;;5089:14;5358:3;5351:10;;4801:566;;;;;;;;5375:104;5452:21;5467:5;5452:21;;;5447:3;5440:34;5434:45;;;5486:356;;5614:38;5646:5;5614:38;;;5664:88;5745:6;5740:3;5664:88;;;5657:95;;5757:52;5802:6;5797:3;5790:4;5783:5;5779:16;5757:52;;;5830:6;5825:3;5821:16;5814:23;;5594:248;;;;;;5849:152;5945:50;5989:5;5945:50;;;5940:3;5933:63;5927:74;;;6008:347;;6120:39;6153:5;6120:39;;;6171:71;6235:6;6230:3;6171:71;;;6164:78;;6247:52;6292:6;6287:3;6280:4;6273:5;6269:16;6247:52;;;6320:29;6342:6;6320:29;;;6315:3;6311:39;6304:46;;6100:255;;;;;;6363:372;;6523:67;6587:2;6582:3;6523:67;;;6516:74;;6623:34;6619:1;6614:3;6610:11;6603:55;6692:5;6687:2;6682:3;6678:12;6671:27;6726:2;6721:3;6717:12;6710:19;;6509:226;;;;6744:374;;6904:67;6968:2;6963:3;6904:67;;;6897:74;;7004:34;7000:1;6995:3;6991:11;6984:55;7073:7;7068:2;7063:3;7059:12;7052:29;7109:2;7104:3;7100:12;7093:19;;6890:228;;;;7127:375;;7287:67;7351:2;7346:3;7287:67;;;7280:74;;7387:34;7383:1;7378:3;7374:11;7367:55;7456:8;7451:2;7446:3;7442:12;7435:30;7493:2;7488:3;7484:12;7477:19;;7273:229;;;;7511:371;;7671:67;7735:2;7730:3;7671:67;;;7664:74;;7771:34;7767:1;7762:3;7758:11;7751:55;7840:4;7835:2;7830:3;7826:12;7819:26;7873:2;7868:3;7864:12;7857:19;;7657:225;;;;7891:327;;8051:67;8115:2;8110:3;8051:67;;;8044:74;;8151:29;8147:1;8142:3;8138:11;8131:50;8209:2;8204:3;8200:12;8193:19;;8037:181;;;;8227:332;;8387:67;8451:2;8446:3;8387:67;;;8380:74;;8487:34;8483:1;8478:3;8474:11;8467:55;8550:2;8545:3;8541:12;8534:19;;8373:186;;;;8568:313;;8728:67;8792:2;8787:3;8728:67;;;8721:74;;8828:15;8824:1;8819:3;8815:11;8808:36;8872:2;8867:3;8863:12;8856:19;;8714:167;;;;8890:372;;9050:67;9114:2;9109:3;9050:67;;;9043:74;;9150:34;9146:1;9141:3;9137:11;9130:55;9219:5;9214:2;9209:3;9205:12;9198:27;9253:2;9248:3;9244:12;9237:19;;9036:226;;;;9271:315;;9431:67;9495:2;9490:3;9431:67;;;9424:74;;9531:17;9527:1;9522:3;9518:11;9511:38;9577:2;9572:3;9568:12;9561:19;;9417:169;;;;9595:323;;9755:67;9819:2;9814:3;9755:67;;;9748:74;;9855:25;9851:1;9846:3;9842:11;9835:46;9909:2;9904:3;9900:12;9893:19;;9741:177;;;;9927:370;;10087:67;10151:2;10146:3;10087:67;;;10080:74;;10187:34;10183:1;10178:3;10174:11;10167:55;10256:3;10251:2;10246:3;10242:12;10235:25;10288:2;10283:3;10279:12;10272:19;;10073:224;;;;10306:332;;10466:67;10530:2;10525:3;10466:67;;;10459:74;;10566:34;10562:1;10557:3;10553:11;10546:55;10629:2;10624:3;10620:12;10613:19;;10452:186;;;;10647:370;;10807:67;10871:2;10866:3;10807:67;;;10800:74;;10907:34;10903:1;10898:3;10894:11;10887:55;10976:3;10971:2;10966:3;10962:12;10955:25;11008:2;11003:3;10999:12;10992:19;;10793:224;;;;11026:374;;11186:67;11250:2;11245:3;11186:67;;;11179:74;;11286:34;11282:1;11277:3;11273:11;11266:55;11355:7;11350:2;11345:3;11341:12;11334:29;11391:2;11386:3;11382:12;11375:19;;11172:228;;;;11409:373;;11569:67;11633:2;11628:3;11569:67;;;11562:74;;11669:34;11665:1;11660:3;11656:11;11649:55;11738:6;11733:2;11728:3;11724:12;11717:28;11773:2;11768:3;11764:12;11757:19;;11555:227;;;;11791:330;;11951:67;12015:2;12010:3;11951:67;;;11944:74;;12051:32;12047:1;12042:3;12038:11;12031:53;12112:2;12107:3;12103:12;12096:19;;11937:184;;;;12130:379;;12290:67;12354:2;12349:3;12290:67;;;12283:74;;12390:34;12386:1;12381:3;12377:11;12370:55;12459:12;12454:2;12449:3;12445:12;12438:34;12500:2;12495:3;12491:12;12484:19;;12276:233;;;;12518:331;;12678:67;12742:2;12737:3;12678:67;;;12671:74;;12778:33;12774:1;12769:3;12765:11;12758:54;12840:2;12835:3;12831:12;12824:19;;12664:185;;;;12858:391;;13018:67;13082:2;13077:3;13018:67;;;13011:74;;13118:34;13114:1;13109:3;13105:11;13098:55;13187:24;13182:2;13177:3;13173:12;13166:46;13240:2;13235:3;13231:12;13224:19;;13004:245;;;;13258:331;;13418:67;13482:2;13477:3;13418:67;;;13411:74;;13518:33;13514:1;13509:3;13505:11;13498:54;13580:2;13575:3;13571:12;13564:19;;13404:185;;;;13598:331;;13758:67;13822:2;13817:3;13758:67;;;13751:74;;13858:33;13854:1;13849:3;13845:11;13838:54;13920:2;13915:3;13911:12;13904:19;;13744:185;;;;13937:113;14020:24;14038:5;14020:24;;;14015:3;14008:37;14002:48;;;14057:107;14136:22;14152:5;14136:22;;;14131:3;14124:35;14118:46;;;14171:262;;14315:93;14404:3;14395:6;14315:93;;;14308:100;;14425:3;14418:10;;14296:137;;;;;14440:213;;14558:2;14547:9;14543:18;14535:26;;14572:71;14640:1;14629:9;14625:17;14616:6;14572:71;;;14529:124;;;;;14660:229;;14786:2;14775:9;14771:18;14763:26;;14800:79;14876:1;14865:9;14861:17;14852:6;14800:79;;;14757:132;;;;;14896:467;;15086:2;15075:9;15071:18;15063:26;;15100:79;15176:1;15165:9;15161:17;15152:6;15100:79;;;15190:80;15266:2;15255:9;15251:18;15242:6;15190:80;;;15281:72;15349:2;15338:9;15334:18;15325:6;15281:72;;;15057:306;;;;;;;15370:340;;15524:2;15513:9;15509:18;15501:26;;15538:79;15614:1;15603:9;15599:17;15590:6;15538:79;;;15628:72;15696:2;15685:9;15681:18;15672:6;15628:72;;;15495:215;;;;;;15717:324;;15863:2;15852:9;15848:18;15840:26;;15877:71;15945:1;15934:9;15930:17;15921:6;15877:71;;;15959:72;16027:2;16016:9;16012:18;16003:6;15959:72;;;15834:207;;;;;;16048:324;;16194:2;16183:9;16179:18;16171:26;;16208:71;16276:1;16265:9;16261:17;16252:6;16208:71;;;16290:72;16358:2;16347:9;16343:18;16334:6;16290:72;;;16165:207;;;;;;16379:201;;16491:2;16480:9;16476:18;16468:26;;16505:65;16567:1;16556:9;16552:17;16543:6;16505:65;;;16462:118;;;;;16587:239;;16718:2;16707:9;16703:18;16695:26;;16732:84;16813:1;16802:9;16798:17;16789:6;16732:84;;;16689:137;;;;;16833:301;;16971:2;16960:9;16956:18;16948:26;;17021:9;17015:4;17011:20;17007:1;16996:9;16992:17;16985:47;17046:78;17119:4;17110:6;17046:78;;;17038:86;;16942:192;;;;;17141:407;;17332:2;17321:9;17317:18;17309:26;;17382:9;17376:4;17372:20;17368:1;17357:9;17353:17;17346:47;17407:131;17533:4;17407:131;;;17399:139;;17303:245;;;;17555:407;;17746:2;17735:9;17731:18;17723:26;;17796:9;17790:4;17786:20;17782:1;17771:9;17767:17;17760:47;17821:131;17947:4;17821:131;;;17813:139;;17717:245;;;;17969:407;;18160:2;18149:9;18145:18;18137:26;;18210:9;18204:4;18200:20;18196:1;18185:9;18181:17;18174:47;18235:131;18361:4;18235:131;;;18227:139;;18131:245;;;;18383:407;;18574:2;18563:9;18559:18;18551:26;;18624:9;18618:4;18614:20;18610:1;18599:9;18595:17;18588:47;18649:131;18775:4;18649:131;;;18641:139;;18545:245;;;;18797:407;;18988:2;18977:9;18973:18;18965:26;;19038:9;19032:4;19028:20;19024:1;19013:9;19009:17;19002:47;19063:131;19189:4;19063:131;;;19055:139;;18959:245;;;;19211:407;;19402:2;19391:9;19387:18;19379:26;;19452:9;19446:4;19442:20;19438:1;19427:9;19423:17;19416:47;19477:131;19603:4;19477:131;;;19469:139;;19373:245;;;;19625:407;;19816:2;19805:9;19801:18;19793:26;;19866:9;19860:4;19856:20;19852:1;19841:9;19837:17;19830:47;19891:131;20017:4;19891:131;;;19883:139;;19787:245;;;;20039:407;;20230:2;20219:9;20215:18;20207:26;;20280:9;20274:4;20270:20;20266:1;20255:9;20251:17;20244:47;20305:131;20431:4;20305:131;;;20297:139;;20201:245;;;;20453:407;;20644:2;20633:9;20629:18;20621:26;;20694:9;20688:4;20684:20;20680:1;20669:9;20665:17;20658:47;20719:131;20845:4;20719:131;;;20711:139;;20615:245;;;;20867:407;;21058:2;21047:9;21043:18;21035:26;;21108:9;21102:4;21098:20;21094:1;21083:9;21079:17;21072:47;21133:131;21259:4;21133:131;;;21125:139;;21029:245;;;;21281:407;;21472:2;21461:9;21457:18;21449:26;;21522:9;21516:4;21512:20;21508:1;21497:9;21493:17;21486:47;21547:131;21673:4;21547:131;;;21539:139;;21443:245;;;;21695:407;;21886:2;21875:9;21871:18;21863:26;;21936:9;21930:4;21926:20;21922:1;21911:9;21907:17;21900:47;21961:131;22087:4;21961:131;;;21953:139;;21857:245;;;;22109:407;;22300:2;22289:9;22285:18;22277:26;;22350:9;22344:4;22340:20;22336:1;22325:9;22321:17;22314:47;22375:131;22501:4;22375:131;;;22367:139;;22271:245;;;;22523:407;;22714:2;22703:9;22699:18;22691:26;;22764:9;22758:4;22754:20;22750:1;22739:9;22735:17;22728:47;22789:131;22915:4;22789:131;;;22781:139;;22685:245;;;;22937:407;;23128:2;23117:9;23113:18;23105:26;;23178:9;23172:4;23168:20;23164:1;23153:9;23149:17;23142:47;23203:131;23329:4;23203:131;;;23195:139;;23099:245;;;;23351:407;;23542:2;23531:9;23527:18;23519:26;;23592:9;23586:4;23582:20;23578:1;23567:9;23563:17;23556:47;23617:131;23743:4;23617:131;;;23609:139;;23513:245;;;;23765:407;;23956:2;23945:9;23941:18;23933:26;;24006:9;24000:4;23996:20;23992:1;23981:9;23977:17;23970:47;24031:131;24157:4;24031:131;;;24023:139;;23927:245;;;;24179:407;;24370:2;24359:9;24355:18;24347:26;;24420:9;24414:4;24410:20;24406:1;24395:9;24391:17;24384:47;24445:131;24571:4;24445:131;;;24437:139;;24341:245;;;;24593:407;;24784:2;24773:9;24769:18;24761:26;;24834:9;24828:4;24824:20;24820:1;24809:9;24805:17;24798:47;24859:131;24985:4;24859:131;;;24851:139;;24755:245;;;;25007:407;;25198:2;25187:9;25183:18;25175:26;;25248:9;25242:4;25238:20;25234:1;25223:9;25219:17;25212:47;25273:131;25399:4;25273:131;;;25265:139;;25169:245;;;;25421:407;;25612:2;25601:9;25597:18;25589:26;;25662:9;25656:4;25652:20;25648:1;25637:9;25633:17;25626:47;25687:131;25813:4;25687:131;;;25679:139;;25583:245;;;;25835:213;;25953:2;25942:9;25938:18;25930:26;;25967:71;26035:1;26024:9;26020:17;26011:6;25967:71;;;25924:124;;;;;26055:324;;26201:2;26190:9;26186:18;26178:26;;26215:71;26283:1;26272:9;26268:17;26259:6;26215:71;;;26297:72;26365:2;26354:9;26350:18;26341:6;26297:72;;;26172:207;;;;;;26386:823;;26674:3;26663:9;26659:19;26651:27;;26689:71;26757:1;26746:9;26742:17;26733:6;26689:71;;;26771:72;26839:2;26828:9;26824:18;26815:6;26771:72;;;26891:9;26885:4;26881:20;26876:2;26865:9;26861:18;26854:48;26916:108;27019:4;27010:6;26916:108;;;26908:116;;27035:80;27111:2;27100:9;27096:18;27087:6;27035:80;;;27126:73;27194:3;27183:9;27179:19;27170:6;27126:73;;;26645:564;;;;;;;;;27216:205;;27330:2;27319:9;27315:18;27307:26;;27344:67;27408:1;27397:9;27393:17;27384:6;27344:67;;;27301:120;;;;;27428:151;;27514:3;27506:11;;27552:4;27547:3;27543:14;27535:22;;27500:79;;;;27586:137;;27695:5;27689:12;27679:22;;27660:63;;;;27730:121;;27823:5;27817:12;27807:22;;27788:63;;;;27858:122;;27952:5;27946:12;27936:22;;27917:63;;;;27987:108;;28085:4;28080:3;28076:14;28068:22;;28062:33;;;;28103:178;;28233:6;28228:3;28221:19;28270:4;28265:3;28261:14;28246:29;;28214:67;;;;;28290:144;;28425:3;28410:18;;28403:31;;;;;28443:163;;28558:6;28553:3;28546:19;28595:4;28590:3;28586:14;28571:29;;28539:67;;;;;28614:91;;28676:24;28694:5;28676:24;;;28665:35;;28659:46;;;;28712:85;;28785:5;28778:13;28771:21;28760:32;;28754:43;;;;28804:84;;28876:6;28869:5;28865:18;28854:29;;28848:40;;;;28895:121;;28968:42;28961:5;28957:54;28946:65;;28940:76;;;;29023:72;;29085:5;29074:16;;29068:27;;;;29102:81;;29173:4;29166:5;29162:16;29151:27;;29145:38;;;;29190:129;;29277:37;29308:5;29277:37;;;29264:50;;29258:61;;;;29326:147;;29418:50;29462:5;29418:50;;;29405:63;;29399:74;;;;29480:121;;29572:24;29590:5;29572:24;;;29559:37;;29553:48;;;;29608:121;;29687:37;29718:5;29687:37;;;29674:50;;29668:61;;;;29736:108;;29815:24;29833:5;29815:24;;;29802:37;;29796:48;;;;29852:268;29917:1;29924:101;29938:6;29935:1;29932:13;29924:101;;;30014:1;30009:3;30005:11;29999:18;29995:1;29990:3;29986:11;29979:39;29960:2;29957:1;29953:10;29948:15;;29924:101;;;30040:6;30037:1;30034:13;30031:2;;;30105:1;30096:6;30091:3;30087:16;30080:27;30031:2;29901:219;;;;;30128:97;;30216:2;30212:7;30207:2;30200:5;30196:14;30192:28;30182:38;;30176:49;;;;30233:117;30302:24;30320:5;30302:24;;;30295:5;30292:35;30282:2;;30341:1;30338;30331:12;30282:2;30276:74;;30357:111;30423:21;30438:5;30423:21;;;30416:5;30413:32;30403:2;;30459:1;30456;30449:12;30403:2;30397:71;;30475:115;30543:23;30560:5;30543:23;;;30536:5;30533:34;30523:2;;30581:1;30578;30571:12;30523:2;30517:73;;30597:117;30666:24;30684:5;30666:24;;;30659:5;30656:35;30646:2;;30705:1;30702;30695:12;30646:2;30640:74;;30721:113;30788:22;30804:5;30788:22;;;30781:5;30778:33;30768:2;;30825:1;30822;30815:12;30768:2;30762:72;

Swarm Source

bzzr://f44709df6d66afc124a04b59be79849408c7296fe95e097c0e836b8fe26b4ca9
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.