ETH Price: $2,019.49 (+6.53%)
 

Overview

Max Total Supply

5,000,000,000 YELO

Holders

17

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
YELO

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-15
*/

pragma solidity 0.8.5;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

abstract contract Freezable is Context {
    event Freeze(address indexed holder);
    event Unfreeze(address indexed holder);

    mapping(address => bool) private _frozenAccount;

    modifier whenNotFrozen(address holder) {
        require(!_frozenAccount[holder]);
        _;
    }

    function isFrozen(address holder) public view virtual returns (bool frozen) {
        return _frozenAccount[holder];
    }

    function _freezeAccount(address holder) internal virtual returns (bool success) {
        require(!isFrozen(holder));
        _frozenAccount[holder] = true;
        emit Freeze(holder);
        success = true;
    }

    function _unfreezeAccount(address holder) internal virtual returns (bool success) {
        require(isFrozen(holder));
        _frozenAccount[holder] = false;
        emit Unfreeze(holder);
        success = true;
    }
}

abstract contract Pausable is Context {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
    }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract ERC20Burnable is Context, ERC20, Ownable {
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
    unchecked {
        _approve(account, _msgSender(), currentAllowance - amount);
    }
        _burn(account, amount);
    }
}

abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 releaseTime);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        uint256 length = _locks[from].length;
        if (length > 0) {
            autoUnlock(from);
        }
        require(_balances[from] >= _totalLocked[from] + amount, "checkLock : balance exceed");
        _;
    }

    function _lock(address from, uint256 amount, uint256 releaseTime) internal returns (bool success)
    {
        require(
            _balances[from] >= amount + _totalLocked[from],
            "lock : locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from] + amount;
        _locks[from].push(LockInfo(releaseTime, amount));
        emit Lock(from, amount, releaseTime);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage info = _locks[from][index];
        _totalLocked[from] = _totalLocked[from] - info._amount;
        emit Unlock(from, info._amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function lock(address recipient, uint256 amount, uint256 releaseTime) public onlyOwner returns (bool success) {
        require(_balances[recipient] >= amount, "There is not enough balance of holder.");
        _lock(recipient, amount, releaseTime);

        success = true;
    }

    function autoUnlock(address from) public returns (bool success) {
        for (uint256 i = 0; i < _locks[from].length; i++) {
            if (_locks[from][i]._releaseTime < block.timestamp) {
                _unlock(from, i);
            }
        }
        success = true;
    }

    function unlock(address from, uint256 idx) public onlyOwner returns (bool success) {
        require(_locks[from].length > idx, "There is not lock info.");
        _unlock(from, idx);
        success = true;
    }

    function releaseLock(address from) external onlyOwner returns (bool success){
        require(_locks[from].length > 0, "There is not lock info.");
        //        uint256 i = _locks[from].length - 1;
        //        _unlock(from, i);
        for (uint256 i = _locks[from].length; i > 0; i--) {
            _unlock(from, i - 1);
        }
        success = true;
    }

    function transferWithLock(address recipient, uint256 amount, uint256 releaseTime) external onlyOwner returns (bool success)
    {
        require(recipient != address(0));
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, releaseTime);
        success = true;
    }

    function lockInfo(address locked, uint256 index) public view returns (uint256 releaseTime, uint256 amount)
    {
        LockInfo memory info = _locks[locked][index];
        releaseTime = info._releaseTime;
        amount = info._amount;
    }

    function totalLocked(address locked) public view returns (uint256 amount, uint256 length){
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

contract YELO is ERC20, Pausable, Freezable, ERC20Burnable, ERC20Lockable {

    constructor() ERC20("Yelody", "YELO") {
        _mint(msg.sender, 5000000000 * (10 ** decimals()));
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function freezeAccount(address holder) public onlyOwner {
        _freezeAccount(holder);
    }

    function unfreezeAccount(address holder) public onlyOwner {
        _unfreezeAccount(holder);
    }

    function transfer(address to, uint256 amount) public checkLock(msg.sender, amount) override returns (bool) {
        return super.transfer(to, amount);
    }

    function transferFrom(address from, address to, uint256 amount) public checkLock(from, amount) override returns (bool) {
        return super.transferFrom(from, to, amount);
    }

    function balanceOf(address holder) public view override returns (uint256 balance) {
        uint256 totalBalance = super.balanceOf(holder);
        uint256 avaliableBalance = 0;
        (uint256 lockedBalance, uint256 lockedLength) = totalLocked(holder);
        require(totalBalance >= lockedBalance);

        if (lockedLength > 0) {
            for (uint i = 0; i < lockedLength; i++) {
                (uint256 releaseTime, uint256 amount) = lockInfo(holder, i);
                if (releaseTime <= block.timestamp) {
                    avaliableBalance += amount;
                }
            }
        }

        balance = totalBalance - lockedBalance + avaliableBalance;
    }

    function balanceOfTotal(address holder) public view returns (uint256 balance) {
        balance = super.balanceOf(holder);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused whenNotFrozen(from) override {
        super._beforeTokenTransfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"autoUnlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOfTotal","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"freezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unfreezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600681526020017f59656c6f647900000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f59454c4f0000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000421565b508060049080519060200190620000af92919062000421565b5050506000600560006101000a81548160ff0219169083151502179055506000620000df620001c560201b60201c565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001bf3362000193620001cd60201b60201c565b600a620001a191906200065a565b64012a05f200620001b3919062000797565b620001d660201b60201c565b62000902565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002409062000552565b60405180910390fd5b6200025d600083836200033b60201b60201c565b8060026000828254620002719190620005a2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002c89190620005a2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032f919062000574565b60405180910390a35050565b6200034b6200040560201b60201c565b156200038e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003859062000530565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620003e757600080fd5b620003ff8484846200041c60201b620019af1760201c565b50505050565b6000600560009054906101000a900460ff16905090565b505050565b8280546200042f906200080f565b90600052602060002090601f0160209004810192826200045357600085556200049f565b82601f106200046e57805160ff19168380011785556200049f565b828001600101855582156200049f579182015b828111156200049e57825182559160200191906001019062000481565b5b509050620004ae9190620004b2565b5090565b5b80821115620004cd576000816000905550600101620004b3565b5090565b6000620004e060108362000591565b9150620004ed82620008b0565b602082019050919050565b600062000507601f8362000591565b91506200051482620008d9565b602082019050919050565b6200052a81620007f8565b82525050565b600060208201905081810360008301526200054b81620004d1565b9050919050565b600060208201905081810360008301526200056d81620004f8565b9050919050565b60006020820190506200058b60008301846200051f565b92915050565b600082825260208201905092915050565b6000620005af82620007f8565b9150620005bc83620007f8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005f457620005f362000845565b5b828201905092915050565b6000808291508390505b6001851115620006515780860481111562000629576200062862000845565b5b6001851615620006395780820291505b80810290506200064985620008a3565b945062000609565b94509492505050565b60006200066782620007f8565b9150620006748362000802565b9250620006a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006ab565b905092915050565b600082620006bd576001905062000790565b81620006cd576000905062000790565b8160018114620006e65760028114620006f15762000727565b600191505062000790565b60ff84111562000706576200070562000845565b5b8360020a91508482111562000720576200071f62000845565b5b5062000790565b5060208310610133831016604e8410600b8410161715620007615782820a9050838111156200075b576200075a62000845565b5b62000790565b620007708484846001620005ff565b925090508184048111156200078a576200078962000845565b5b81810290505b9392505050565b6000620007a482620007f8565b9150620007b183620007f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007ed57620007ec62000845565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200082857607f821691505b602082108114156200083f576200083e62000874565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61392980620009126000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612e8f565b60405180910390f35b61021760048036038101906102129190612aae565b6106d1565b6040516102249190612e74565b60405180910390f35b6102356106ef565b60405161024291906130f1565b60405180910390f35b61026560048036038101906102609190612a5b565b6106f9565b6040516102729190612e74565b60405180910390f35b61028361083a565b6040516102909190613135565b60405180910390f35b6102b360048036038101906102ae9190612aae565b610843565b6040516102c09190612e74565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612b41565b610975565b005b6102f7610989565b6040516103049190612e74565b60405180910390f35b610327600480360381019061032291906129ee565b6109a0565b60405161033491906130f1565b60405180910390f35b610345610a40565b005b610361600480360381019061035c91906129ee565b610b7d565b005b61037d60048036038101906103789190612aae565b610c06565b005b61039960048036038101906103949190612aae565b610c81565b6040516103a69190612e74565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612e59565b60405180910390f35b6103df610e48565b6040516103ec9190612e8f565b60405180910390f35b61040f600480360381019061040a9190612aae565b610eda565b60405161041c9190612e74565b60405180910390f35b61043f600480360381019061043a9190612aae565b610fc5565b60405161044c9190612e74565b60405180910390f35b61046f600480360381019061046a9190612aae565b611104565b60405161047d92919061310c565b60405180910390f35b6104a0600480360381019061049b91906129ee565b61119f565b6040516104ad9190612e74565b60405180910390f35b6104d060048036038101906104cb91906129ee565b611327565b6040516104dd91906130f1565b60405180910390f35b61050060048036038101906104fb91906129ee565b611339565b60405161050e92919061310c565b60405180910390f35b610531600480360381019061052c9190612a1b565b6113c8565b60405161053e91906130f1565b60405180910390f35b610561600480360381019061055c9190612aee565b61144f565b60405161056e9190612e74565b60405180910390f35b610591600480360381019061058c91906129ee565b611529565b60405161059e9190612e74565b60405180910390f35b6105c160048036038101906105bc9190612aee565b61160e565b6040516105ce9190612e74565b60405180910390f35b6105f160048036038101906105ec91906129ee565b611724565b6040516105fe9190612e74565b60405180910390f35b610621600480360381019061061c91906129ee565b61177a565b005b61063d600480360381019061063891906129ee565b611803565b005b60606003805461064e906132a8565b80601f016020809104026020016040519081016040528092919081815260200182805461067a906132a8565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de6119b4565b84846119bc565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156107585761075683611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a3919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612ef1565b60405180910390fd5b61082e878787611b87565b93505050509392505050565b60006012905090565b60006108e56108506119b4565b84846001600061085e6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e0919061316c565b6119bc565b6001905092915050565b6108f76119b4565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290613031565b60405180910390fd5b610973611c7f565b565b6109866109806119b4565b82611d21565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611eec565b9050600080806109bb86611339565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a04919061316c565b95505b50508080610a14906132da565b9150506109d8565b505b828285610a2b91906131c2565b610a35919061316c565b945050505050919050565b610a486119b4565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b856119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613031565b60405180910390fd5b610c0281611f34565b5050565b6000610c1983610c146119b4565b6113c8565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613051565b60405180910390fd5b610c7283610c6a6119b4565b8484036119bc565b610c7c8383611d21565b505050565b6000610c8b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613031565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90612f91565b60405180910390fd5b610d8d8383611fec565b506001905092915050565b610da06119b4565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90613031565b60405180910390fd5b610e1c6122da565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e57906132a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610e83906132a8565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee96119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906130d1565b60405180910390fd5b610fba610fb16119b4565b858584036119bc565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156110245761102283611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612ef1565b60405180910390fd5b6110f9868661237d565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061115a576111596133b0565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111a96119b4565b73ffffffffffffffffffffffffffffffffffffffff166111c7610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490613031565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990612f91565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b600081111561131d576113098360018361130491906131c2565b611fec565b5080806113159061327e565b9150506112ea565b5060019050919050565b600061133282611eec565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006114596119b4565b73ffffffffffffffffffffffffffffffffffffffff16611477610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561150757600080fd5b61151233858561239b565b61151d848484612611565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116045742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106115cd576115cc6133b0565b5b90600052602060002090600202016000015410156115f1576115ef8382611fec565b505b80806115fc906132da565b915050611531565b5060019050919050565b60006116186119b4565b73ffffffffffffffffffffffffffffffffffffffff16611636610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390613031565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490612ff1565b60405180910390fd5b611718848484612611565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117826119b4565b73ffffffffffffffffffffffffffffffffffffffff166117a0610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90613031565b60405180910390fd5b6117ff8161285a565b5050565b61180b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16611829610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690612f51565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906130b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612f71565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7a91906130f1565b60405180910390a3505050565b6000611b9484848461239b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611bdf6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5690613011565b60405180910390fd5b611c7385611c6b6119b4565b8584036119bc565b60019150509392505050565b611c87610989565b611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90612ed1565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d0a6119b4565b604051611d179190612e59565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890613071565b60405180910390fd5b611d9d82600083612913565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90612f11565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611e7a91906131c2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611edf91906130f1565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f3f82611724565b611f4857600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106120405761203f6133b0565b5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209f91906131c2565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826001015460405161212c91906130f1565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506121c291906131c2565b815481106121d3576121d26133b0565b5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612232576122316133b0565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806122a6576122a5613381565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6122e2610989565b15612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990612fd1565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123666119b4565b6040516123739190612e59565b60405180910390a1565b600061239161238a6119b4565b848461239b565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613091565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290612eb1565b60405180910390fd5b612486838383612913565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390612fb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259f919061316c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161260391906130f1565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361265e919061316c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590612f31565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612729919061316c565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848460405161284792919061310c565b60405180910390a2600190509392505050565b600061286582611724565b1561286f57600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b61291b610989565b1561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290612fd1565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129b357600080fd5b6129be8484846119af565b50505050565b6000813590506129d3816138c5565b92915050565b6000813590506129e8816138dc565b92915050565b600060208284031215612a0457612a036133df565b5b6000612a12848285016129c4565b91505092915050565b60008060408385031215612a3257612a316133df565b5b6000612a40858286016129c4565b9250506020612a51858286016129c4565b9150509250929050565b600080600060608486031215612a7457612a736133df565b5b6000612a82868287016129c4565b9350506020612a93868287016129c4565b9250506040612aa4868287016129d9565b9150509250925092565b60008060408385031215612ac557612ac46133df565b5b6000612ad3858286016129c4565b9250506020612ae4858286016129d9565b9150509250929050565b600080600060608486031215612b0757612b066133df565b5b6000612b15868287016129c4565b9350506020612b26868287016129d9565b9250506040612b37868287016129d9565b9150509250925092565b600060208284031215612b5757612b566133df565b5b6000612b65848285016129d9565b91505092915050565b612b77816131f6565b82525050565b612b8681613208565b82525050565b6000612b9782613150565b612ba1818561315b565b9350612bb181856020860161324b565b612bba816133e4565b840191505092915050565b6000612bd260238361315b565b9150612bdd826133f5565b604082019050919050565b6000612bf560148361315b565b9150612c0082613444565b602082019050919050565b6000612c18601a8361315b565b9150612c238261346d565b602082019050919050565b6000612c3b60228361315b565b9150612c4682613496565b604082019050919050565b6000612c5e60328361315b565b9150612c69826134e5565b604082019050919050565b6000612c8160268361315b565b9150612c8c82613534565b604082019050919050565b6000612ca460228361315b565b9150612caf82613583565b604082019050919050565b6000612cc760178361315b565b9150612cd2826135d2565b602082019050919050565b6000612cea60268361315b565b9150612cf5826135fb565b604082019050919050565b6000612d0d60108361315b565b9150612d188261364a565b602082019050919050565b6000612d3060268361315b565b9150612d3b82613673565b604082019050919050565b6000612d5360288361315b565b9150612d5e826136c2565b604082019050919050565b6000612d7660208361315b565b9150612d8182613711565b602082019050919050565b6000612d9960248361315b565b9150612da48261373a565b604082019050919050565b6000612dbc60218361315b565b9150612dc782613789565b604082019050919050565b6000612ddf60258361315b565b9150612dea826137d8565b604082019050919050565b6000612e0260248361315b565b9150612e0d82613827565b604082019050919050565b6000612e2560258361315b565b9150612e3082613876565b604082019050919050565b612e4481613234565b82525050565b612e538161323e565b82525050565b6000602082019050612e6e6000830184612b6e565b92915050565b6000602082019050612e896000830184612b7d565b92915050565b60006020820190508181036000830152612ea98184612b8c565b905092915050565b60006020820190508181036000830152612eca81612bc5565b9050919050565b60006020820190508181036000830152612eea81612be8565b9050919050565b60006020820190508181036000830152612f0a81612c0b565b9050919050565b60006020820190508181036000830152612f2a81612c2e565b9050919050565b60006020820190508181036000830152612f4a81612c51565b9050919050565b60006020820190508181036000830152612f6a81612c74565b9050919050565b60006020820190508181036000830152612f8a81612c97565b9050919050565b60006020820190508181036000830152612faa81612cba565b9050919050565b60006020820190508181036000830152612fca81612cdd565b9050919050565b60006020820190508181036000830152612fea81612d00565b9050919050565b6000602082019050818103600083015261300a81612d23565b9050919050565b6000602082019050818103600083015261302a81612d46565b9050919050565b6000602082019050818103600083015261304a81612d69565b9050919050565b6000602082019050818103600083015261306a81612d8c565b9050919050565b6000602082019050818103600083015261308a81612daf565b9050919050565b600060208201905081810360008301526130aa81612dd2565b9050919050565b600060208201905081810360008301526130ca81612df5565b9050919050565b600060208201905081810360008301526130ea81612e18565b9050919050565b60006020820190506131066000830184612e3b565b92915050565b60006040820190506131216000830185612e3b565b61312e6020830184612e3b565b9392505050565b600060208201905061314a6000830184612e4a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061317782613234565b915061318283613234565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b7576131b6613323565b5b828201905092915050565b60006131cd82613234565b91506131d883613234565b9250828210156131eb576131ea613323565b5b828203905092915050565b600061320182613214565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561326957808201518184015260208101905061324e565b83811115613278576000848401525b50505050565b600061328982613234565b9150600082141561329d5761329c613323565b5b600182039050919050565b600060028204905060018216806132c057607f821691505b602082108114156132d4576132d3613352565b5b50919050565b60006132e582613234565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331857613317613323565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6138ce816131f6565b81146138d957600080fd5b50565b6138e581613234565b81146138f057600080fd5b5056fea2646970667358221220f1109cd33fc727c9e0aa577a46c4c7925bed9d36464c93361939a927f1c033ec64736f6c63430008050033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612e8f565b60405180910390f35b61021760048036038101906102129190612aae565b6106d1565b6040516102249190612e74565b60405180910390f35b6102356106ef565b60405161024291906130f1565b60405180910390f35b61026560048036038101906102609190612a5b565b6106f9565b6040516102729190612e74565b60405180910390f35b61028361083a565b6040516102909190613135565b60405180910390f35b6102b360048036038101906102ae9190612aae565b610843565b6040516102c09190612e74565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612b41565b610975565b005b6102f7610989565b6040516103049190612e74565b60405180910390f35b610327600480360381019061032291906129ee565b6109a0565b60405161033491906130f1565b60405180910390f35b610345610a40565b005b610361600480360381019061035c91906129ee565b610b7d565b005b61037d60048036038101906103789190612aae565b610c06565b005b61039960048036038101906103949190612aae565b610c81565b6040516103a69190612e74565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612e59565b60405180910390f35b6103df610e48565b6040516103ec9190612e8f565b60405180910390f35b61040f600480360381019061040a9190612aae565b610eda565b60405161041c9190612e74565b60405180910390f35b61043f600480360381019061043a9190612aae565b610fc5565b60405161044c9190612e74565b60405180910390f35b61046f600480360381019061046a9190612aae565b611104565b60405161047d92919061310c565b60405180910390f35b6104a0600480360381019061049b91906129ee565b61119f565b6040516104ad9190612e74565b60405180910390f35b6104d060048036038101906104cb91906129ee565b611327565b6040516104dd91906130f1565b60405180910390f35b61050060048036038101906104fb91906129ee565b611339565b60405161050e92919061310c565b60405180910390f35b610531600480360381019061052c9190612a1b565b6113c8565b60405161053e91906130f1565b60405180910390f35b610561600480360381019061055c9190612aee565b61144f565b60405161056e9190612e74565b60405180910390f35b610591600480360381019061058c91906129ee565b611529565b60405161059e9190612e74565b60405180910390f35b6105c160048036038101906105bc9190612aee565b61160e565b6040516105ce9190612e74565b60405180910390f35b6105f160048036038101906105ec91906129ee565b611724565b6040516105fe9190612e74565b60405180910390f35b610621600480360381019061061c91906129ee565b61177a565b005b61063d600480360381019061063891906129ee565b611803565b005b60606003805461064e906132a8565b80601f016020809104026020016040519081016040528092919081815260200182805461067a906132a8565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de6119b4565b84846119bc565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156107585761075683611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a3919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612ef1565b60405180910390fd5b61082e878787611b87565b93505050509392505050565b60006012905090565b60006108e56108506119b4565b84846001600061085e6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e0919061316c565b6119bc565b6001905092915050565b6108f76119b4565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290613031565b60405180910390fd5b610973611c7f565b565b6109866109806119b4565b82611d21565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611eec565b9050600080806109bb86611339565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a04919061316c565b95505b50508080610a14906132da565b9150506109d8565b505b828285610a2b91906131c2565b610a35919061316c565b945050505050919050565b610a486119b4565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b856119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613031565b60405180910390fd5b610c0281611f34565b5050565b6000610c1983610c146119b4565b6113c8565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613051565b60405180910390fd5b610c7283610c6a6119b4565b8484036119bc565b610c7c8383611d21565b505050565b6000610c8b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613031565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90612f91565b60405180910390fd5b610d8d8383611fec565b506001905092915050565b610da06119b4565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90613031565b60405180910390fd5b610e1c6122da565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e57906132a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610e83906132a8565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee96119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906130d1565b60405180910390fd5b610fba610fb16119b4565b858584036119bc565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156110245761102283611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612ef1565b60405180910390fd5b6110f9868661237d565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061115a576111596133b0565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111a96119b4565b73ffffffffffffffffffffffffffffffffffffffff166111c7610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490613031565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990612f91565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b600081111561131d576113098360018361130491906131c2565b611fec565b5080806113159061327e565b9150506112ea565b5060019050919050565b600061133282611eec565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006114596119b4565b73ffffffffffffffffffffffffffffffffffffffff16611477610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561150757600080fd5b61151233858561239b565b61151d848484612611565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116045742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106115cd576115cc6133b0565b5b90600052602060002090600202016000015410156115f1576115ef8382611fec565b505b80806115fc906132da565b915050611531565b5060019050919050565b60006116186119b4565b73ffffffffffffffffffffffffffffffffffffffff16611636610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390613031565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490612ff1565b60405180910390fd5b611718848484612611565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117826119b4565b73ffffffffffffffffffffffffffffffffffffffff166117a0610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90613031565b60405180910390fd5b6117ff8161285a565b5050565b61180b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16611829610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690612f51565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906130b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612f71565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7a91906130f1565b60405180910390a3505050565b6000611b9484848461239b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611bdf6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5690613011565b60405180910390fd5b611c7385611c6b6119b4565b8584036119bc565b60019150509392505050565b611c87610989565b611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90612ed1565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d0a6119b4565b604051611d179190612e59565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890613071565b60405180910390fd5b611d9d82600083612913565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90612f11565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611e7a91906131c2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611edf91906130f1565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f3f82611724565b611f4857600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106120405761203f6133b0565b5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209f91906131c2565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826001015460405161212c91906130f1565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506121c291906131c2565b815481106121d3576121d26133b0565b5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612232576122316133b0565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806122a6576122a5613381565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6122e2610989565b15612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990612fd1565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123666119b4565b6040516123739190612e59565b60405180910390a1565b600061239161238a6119b4565b848461239b565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613091565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290612eb1565b60405180910390fd5b612486838383612913565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390612fb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259f919061316c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161260391906130f1565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361265e919061316c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590612f31565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612729919061316c565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848460405161284792919061310c565b60405180910390a2600190509392505050565b600061286582611724565b1561286f57600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b61291b610989565b1561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290612fd1565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129b357600080fd5b6129be8484846119af565b50505050565b6000813590506129d3816138c5565b92915050565b6000813590506129e8816138dc565b92915050565b600060208284031215612a0457612a036133df565b5b6000612a12848285016129c4565b91505092915050565b60008060408385031215612a3257612a316133df565b5b6000612a40858286016129c4565b9250506020612a51858286016129c4565b9150509250929050565b600080600060608486031215612a7457612a736133df565b5b6000612a82868287016129c4565b9350506020612a93868287016129c4565b9250506040612aa4868287016129d9565b9150509250925092565b60008060408385031215612ac557612ac46133df565b5b6000612ad3858286016129c4565b9250506020612ae4858286016129d9565b9150509250929050565b600080600060608486031215612b0757612b066133df565b5b6000612b15868287016129c4565b9350506020612b26868287016129d9565b9250506040612b37868287016129d9565b9150509250925092565b600060208284031215612b5757612b566133df565b5b6000612b65848285016129d9565b91505092915050565b612b77816131f6565b82525050565b612b8681613208565b82525050565b6000612b9782613150565b612ba1818561315b565b9350612bb181856020860161324b565b612bba816133e4565b840191505092915050565b6000612bd260238361315b565b9150612bdd826133f5565b604082019050919050565b6000612bf560148361315b565b9150612c0082613444565b602082019050919050565b6000612c18601a8361315b565b9150612c238261346d565b602082019050919050565b6000612c3b60228361315b565b9150612c4682613496565b604082019050919050565b6000612c5e60328361315b565b9150612c69826134e5565b604082019050919050565b6000612c8160268361315b565b9150612c8c82613534565b604082019050919050565b6000612ca460228361315b565b9150612caf82613583565b604082019050919050565b6000612cc760178361315b565b9150612cd2826135d2565b602082019050919050565b6000612cea60268361315b565b9150612cf5826135fb565b604082019050919050565b6000612d0d60108361315b565b9150612d188261364a565b602082019050919050565b6000612d3060268361315b565b9150612d3b82613673565b604082019050919050565b6000612d5360288361315b565b9150612d5e826136c2565b604082019050919050565b6000612d7660208361315b565b9150612d8182613711565b602082019050919050565b6000612d9960248361315b565b9150612da48261373a565b604082019050919050565b6000612dbc60218361315b565b9150612dc782613789565b604082019050919050565b6000612ddf60258361315b565b9150612dea826137d8565b604082019050919050565b6000612e0260248361315b565b9150612e0d82613827565b604082019050919050565b6000612e2560258361315b565b9150612e3082613876565b604082019050919050565b612e4481613234565b82525050565b612e538161323e565b82525050565b6000602082019050612e6e6000830184612b6e565b92915050565b6000602082019050612e896000830184612b7d565b92915050565b60006020820190508181036000830152612ea98184612b8c565b905092915050565b60006020820190508181036000830152612eca81612bc5565b9050919050565b60006020820190508181036000830152612eea81612be8565b9050919050565b60006020820190508181036000830152612f0a81612c0b565b9050919050565b60006020820190508181036000830152612f2a81612c2e565b9050919050565b60006020820190508181036000830152612f4a81612c51565b9050919050565b60006020820190508181036000830152612f6a81612c74565b9050919050565b60006020820190508181036000830152612f8a81612c97565b9050919050565b60006020820190508181036000830152612faa81612cba565b9050919050565b60006020820190508181036000830152612fca81612cdd565b9050919050565b60006020820190508181036000830152612fea81612d00565b9050919050565b6000602082019050818103600083015261300a81612d23565b9050919050565b6000602082019050818103600083015261302a81612d46565b9050919050565b6000602082019050818103600083015261304a81612d69565b9050919050565b6000602082019050818103600083015261306a81612d8c565b9050919050565b6000602082019050818103600083015261308a81612daf565b9050919050565b600060208201905081810360008301526130aa81612dd2565b9050919050565b600060208201905081810360008301526130ca81612df5565b9050919050565b600060208201905081810360008301526130ea81612e18565b9050919050565b60006020820190506131066000830184612e3b565b92915050565b60006040820190506131216000830185612e3b565b61312e6020830184612e3b565b9392505050565b600060208201905061314a6000830184612e4a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061317782613234565b915061318283613234565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b7576131b6613323565b5b828201905092915050565b60006131cd82613234565b91506131d883613234565b9250828210156131eb576131ea613323565b5b828203905092915050565b600061320182613214565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561326957808201518184015260208101905061324e565b83811115613278576000848401525b50505050565b600061328982613234565b9150600082141561329d5761329c613323565b5b600182039050919050565b600060028204905060018216806132c057607f821691505b602082108114156132d4576132d3613352565b5b50919050565b60006132e582613234565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331857613317613323565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6138ce816131f6565b81146138d957600080fd5b50565b6138e581613234565b81146138f057600080fd5b5056fea2646970667358221220f1109cd33fc727c9e0aa577a46c4c7925bed9d36464c93361939a927f1c033ec64736f6c63430008050033

Deployed Bytecode Sourcemap

12611:1946:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4331:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5245:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4652:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13332:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4551:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5910:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12878:65;;;:::i;:::-;;8670:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2473:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13521:700;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;967:148;;;:::i;:::-;;13056:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8769:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11245:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12809:61;;;:::i;:::-;;744:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4439:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6133:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13165:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12169:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11470:379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14229:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5086:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11857:304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10951:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10658:285;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1676:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12951:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1123:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4331:100;4385:13;4418:5;4411:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4331:100;:::o;5245:169::-;5328:4;5345:39;5354:12;:10;:12::i;:::-;5368:7;5377:6;5345:8;:39::i;:::-;5402:4;5395:11;;5245:169;;;;:::o;4652:108::-;4713:7;4740:12;;4733:19;;4652:108;:::o;13332:181::-;13445:4;13413;13419:6;9584:14;9601:6;:12;9608:4;9601:12;;;;;;;;;;;;;;;:19;;;;9584:36;;9644:1;9635:6;:10;9631:59;;;9662:16;9673:4;9662:10;:16::i;:::-;;9631:59;9748:6;9727:12;:18;9740:4;9727:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9708:9;:15;9718:4;9708:15;;;;;;;;;;;;;;;;:46;;9700:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13469:36:::1;13488:4;13494:2;13498:6;13469:18;:36::i;:::-;13462:43;;9573:232:::0;13332:181;;;;;;;:::o;4551:93::-;4609:5;4634:2;4627:9;;4551:93;:::o;5910:215::-;5998:4;6015:80;6024:12;:10;:12::i;:::-;6038:7;6084:10;6047:11;:25;6059:12;:10;:12::i;:::-;6047:25;;;;;;;;;;;;;;;:34;6073:7;6047:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6015:8;:80::i;:::-;6113:4;6106:11;;5910:215;;;;:::o;12878:65::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12925:10:::1;:8;:10::i;:::-;12878:65::o:0;8670:91::-;8726:27;8732:12;:10;:12::i;:::-;8746:6;8726:5;:27::i;:::-;8670:91;:::o;2473:86::-;2520:4;2544:7;;;;;;;;;;;2537:14;;2473:86;:::o;13521:700::-;13586:15;13614:20;13637:23;13653:6;13637:15;:23::i;:::-;13614:46;;13671:24;13711:21;13734:20;13758:19;13770:6;13758:11;:19::i;:::-;13710:67;;;;13812:13;13796:12;:29;;13788:38;;;;;;13858:1;13843:12;:16;13839:305;;;13881:6;13876:257;13897:12;13893:1;:16;13876:257;;;13936:19;13957:14;13975:19;13984:6;13992:1;13975:8;:19::i;:::-;13935:59;;;;14032:15;14017:11;:30;14013:105;;14092:6;14072:26;;;;;:::i;:::-;;;14013:105;13916:217;;13911:3;;;;;:::i;:::-;;;;13876:257;;;;13839:305;14197:16;14181:13;14166:12;:28;;;;:::i;:::-;:47;;;;:::i;:::-;14156:57;;13603:618;;;;13521:700;;;:::o;967:148::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1074:1:::1;1037:40;;1058:6;;;;;;;;;;;1037:40;;;;;;;;;;;;1105:1;1088:6;;:19;;;;;;;;;;;;;;;;;;967:148::o:0;13056:101::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13125:24:::1;13142:6;13125:16;:24::i;:::-;;13056:101:::0;:::o;8769:356::-;8846:24;8873:32;8883:7;8892:12;:10;:12::i;:::-;8873:9;:32::i;:::-;8846:59;;8944:6;8924:16;:26;;8916:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9019:58;9028:7;9037:12;:10;:12::i;:::-;9070:6;9051:16;:25;9019:8;:58::i;:::-;9095:22;9101:7;9110:6;9095:5;:22::i;:::-;8835:290;8769:356;;:::o;11245:217::-;11314:12;890;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11369:3:::1;11347:6;:12;11354:4;11347:12;;;;;;;;;;;;;;;:19;;;;:25;11339:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11411:18;11419:4;11425:3;11411:7;:18::i;:::-;;11450:4;11440:14;;11245:217:::0;;;;:::o;12809:61::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12854:8:::1;:6;:8::i;:::-;12809:61::o:0;744:87::-;790:7;817:6;;;;;;;;;;;810:13;;744:87;:::o;4439:104::-;4495:13;4528:7;4521:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4439:104;:::o;6133:401::-;6226:4;6243:24;6270:11;:25;6282:12;:10;:12::i;:::-;6270:25;;;;;;;;;;;;;;;:34;6296:7;6270:34;;;;;;;;;;;;;;;;6243:61;;6343:15;6323:16;:35;;6315:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6428:67;6437:12;:10;:12::i;:::-;6451:7;6479:15;6460:16;:34;6428:8;:67::i;:::-;6522:4;6515:11;;;6133:401;;;;:::o;13165:159::-;13266:4;13228:10;13240:6;9584:14;9601:6;:12;9608:4;9601:12;;;;;;;;;;;;;;;:19;;;;9584:36;;9644:1;9635:6;:10;9631:59;;;9662:16;9673:4;9662:10;:16::i;:::-;;9631:59;9748:6;9727:12;:18;9740:4;9727:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9708:9;:15;9718:4;9708:15;;;;;;;;;;;;;;;;:46;;9700:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13290:26:::1;13305:2;13309:6;13290:14;:26::i;:::-;13283:33;;9573:232:::0;13165:159;;;;;;:::o;12169:249::-;12239:19;12260:14;12292:20;12315:6;:14;12322:6;12315:14;;;;;;;;;;;;;;;12330:5;12315:21;;;;;;;;:::i;:::-;;;;;;;;;;;;12292:44;;;;;;;;;;;;;;;;;;;;;;;;;;;12361:4;:17;;;12347:31;;12398:4;:12;;;12389:21;;12281:137;12169:249;;;;;:::o;11470:379::-;11533:12;890;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11587:1:::1;11565:6;:12;11572:4;11565:12;;;;;;;;;;;;;;;:19;;;;:23;11557:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11725:9;11737:6;:12;11744:4;11737:12;;;;;;;;;;;;;;;:19;;;;11725:31;;11720:97;11762:1;11758;:5;11720:97;;;11785:20;11793:4;11803:1;11799;:5;;;;:::i;:::-;11785:7;:20::i;:::-;;11765:3;;;;;:::i;:::-;;;;11720:97;;;;11837:4;11827:14;;11470:379:::0;;;:::o;14229:130::-;14290:15;14328:23;14344:6;14328:15;:23::i;:::-;14318:33;;14229:130;;;:::o;12426:178::-;12484:14;12500;12535:12;:20;12548:6;12535:20;;;;;;;;;;;;;;;;12526:29;;12575:6;:14;12582:6;12575:14;;;;;;;;;;;;;;;:21;;;;12566:30;;12426:178;;;:::o;5086:151::-;5175:7;5202:11;:18;5214:5;5202:18;;;;;;;;;;;;;;;:27;5221:7;5202:27;;;;;;;;;;;;;;;;5195:34;;5086:151;;;;:::o;11857:304::-;11967:12;890;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12026:1:::1;12005:23;;:9;:23;;;;11997:32;;;::::0;::::1;;12040:40;12050:10;12062:9;12073:6;12040:9;:40::i;:::-;12091:37;12097:9;12108:6;12116:11;12091:5;:37::i;:::-;;12149:4;12139:14;;11857:304:::0;;;;;:::o;10951:286::-;11001:12;11031:9;11043:1;11031:13;;11026:179;11050:6;:12;11057:4;11050:12;;;;;;;;;;;;;;;:19;;;;11046:1;:23;11026:179;;;11126:15;11095:6;:12;11102:4;11095:12;;;;;;;;;;;;;;;11108:1;11095:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;:46;11091:103;;;11162:16;11170:4;11176:1;11162:7;:16::i;:::-;;11091:103;11071:3;;;;;:::i;:::-;;;;11026:179;;;;11225:4;11215:14;;10951:286;;;:::o;10658:285::-;10754:12;890;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10811:6:::1;10787:9;:20:::0;10797:9:::1;10787:20;;;;;;;;;;;;;;;;:30;;10779:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10871:37;10877:9;10888:6;10896:11;10871:5;:37::i;:::-;;10931:4;10921:14;;10658:285:::0;;;;;:::o;1676:124::-;1739:11;1770:14;:22;1785:6;1770:22;;;;;;;;;;;;;;;;;;;;;;;;;1763:29;;1676:124;;;:::o;12951:97::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13018:22:::1;13033:6;13018:14;:22::i;:::-;;12951:97:::0;:::o;1123:244::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1232:1:::1;1212:22;;:8;:22;;;;1204:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1322:8;1293:38;;1314:6;;;;;;;;;;;1293:38;;;;;;;;;;;;1351:8;1342:6;;:17;;;;;;;;;;;;;;;;;;1123:244:::0;:::o;8472:125::-;;;;:::o;59:98::-;112:7;139:10;132:17;;59:98;:::o;8084:380::-;8237:1;8220:19;;:5;:19;;;;8212:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8318:1;8299:21;;:7;:21;;;;8291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8402:6;8372:11;:18;8384:5;8372:18;;;;;;;;;;;;;;;:27;8391:7;8372:27;;;;;;;;;;;;;;;:36;;;;8440:7;8424:32;;8433:5;8424:32;;;8449:6;8424:32;;;;;;:::i;:::-;;;;;;;;8084:380;;;:::o;5422:480::-;5562:4;5579:36;5589:6;5597:9;5608:6;5579:9;:36::i;:::-;5628:24;5655:11;:19;5667:6;5655:19;;;;;;;;;;;;;;;:33;5675:12;:10;:12::i;:::-;5655:33;;;;;;;;;;;;;;;;5628:60;;5727:6;5707:16;:26;;5699:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5806:57;5815:6;5823:12;:10;:12::i;:::-;5856:6;5837:16;:25;5806:8;:57::i;:::-;5890:4;5883:11;;;5422:480;;;;;:::o;2897:120::-;2710:8;:6;:8::i;:::-;2702:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2966:5:::1;2956:7;;:15;;;;;;;;;;;;;;;;;;2987:22;2996:12;:10;:12::i;:::-;2987:22;;;;;;:::i;:::-;;;;;;;;2897:120::o:0;7558:518::-;7661:1;7642:21;;:7;:21;;;;7634:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7714:49;7735:7;7752:1;7756:6;7714:20;:49::i;:::-;7776:22;7801:9;:18;7811:7;7801:18;;;;;;;;;;;;;;;;7776:43;;7856:6;7838:14;:24;;7830:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7967:6;7950:14;:23;7929:9;:18;7939:7;7929:18;;;;;;;;;;;;;;;:44;;;;8007:6;7991:12;;:22;;;;;;;:::i;:::-;;;;;;;;8057:1;8031:37;;8040:7;8031:37;;;8061:6;8031:37;;;;;;:::i;:::-;;;;;;;;7623:453;7558:518;;:::o;4768:127::-;4842:7;4869:9;:18;4879:7;4869:18;;;;;;;;;;;;;;;;4862:25;;4768:127;;;:::o;2036:224::-;2104:12;2137:16;2146:6;2137:8;:16::i;:::-;2129:25;;;;;;2190:5;2165:14;:22;2180:6;2165:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2220:6;2211:16;;;;;;;;;;;;2248:4;2238:14;;2036:224;;;:::o;10279:371::-;10343:12;10368:21;10392:6;:12;10399:4;10392:12;;;;;;;;;;;;;;;10405:5;10392:19;;;;;;;;:::i;:::-;;;;;;;;;;;;10368:43;;10464:4;:12;;;10443;:18;10456:4;10443:18;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;10422:12;:18;10435:4;10422:18;;;;;;;;;;;;;;;:54;;;;10499:4;10492:26;;;10505:4;:12;;;10492:26;;;;;;:::i;:::-;;;;;;;;10551:6;:12;10558:4;10551:12;;;;;;;;;;;;;;;10586:1;10564:6;:12;10571:4;10564:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;10551:37;;;;;;;;:::i;:::-;;;;;;;;;;;;10529:6;:12;10536:4;10529:12;;;;;;;;;;;;;;;10542:5;10529:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;10599:6;:12;10606:4;10599:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10638:4;10628:14;;10357:293;10279:371;;;;:::o;2771:118::-;2612:8;:6;:8::i;:::-;2611:9;2603:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2841:4:::1;2831:7;;:14;;;;;;;;;;;;;;;;;;2861:20;2868:12;:10;:12::i;:::-;2861:20;;;;;;:::i;:::-;;;;;;;;2771:118::o:0;4903:175::-;4989:4;5006:42;5016:12;:10;:12::i;:::-;5030:9;5041:6;5006:9;:42::i;:::-;5066:4;5059:11;;4903:175;;;;:::o;6542:662::-;6700:1;6682:20;;:6;:20;;;;6674:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6784:1;6763:23;;:9;:23;;;;6755:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6839:47;6860:6;6868:9;6879:6;6839:20;:47::i;:::-;6899:21;6923:9;:17;6933:6;6923:17;;;;;;;;;;;;;;;;6899:41;;6976:6;6959:13;:23;;6951:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7089:6;7073:13;:22;7053:9;:17;7063:6;7053:17;;;;;;;;;;;;;;;:42;;;;7137:6;7113:9;:20;7123:9;7113:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7178:9;7161:35;;7170:6;7161:35;;;7189:6;7161:35;;;;;;:::i;:::-;;;;;;;;6663:541;6542:662;;;:::o;9813:458::-;9897:12;9977;:18;9990:4;9977:18;;;;;;;;;;;;;;;;9968:6;:27;;;;:::i;:::-;9949:9;:15;9959:4;9949:15;;;;;;;;;;;;;;;;:46;;9927:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;10126:6;10105:12;:18;10118:4;10105:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;10084:12;:18;10097:4;10084:18;;;;;;;;;;;;;;;:48;;;;10143:6;:12;10150:4;10143:12;;;;;;;;;;;;;;;10161:29;;;;;;;;10170:11;10161:29;;;;10183:6;10161:29;;;10143:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10212:4;10207:31;;;10218:6;10226:11;10207:31;;;;;;;:::i;:::-;;;;;;;;10259:4;10249:14;;9813:458;;;;;:::o;1808:220::-;1874:12;1908:16;1917:6;1908:8;:16::i;:::-;1907:17;1899:26;;;;;;1961:4;1936:14;:22;1951:6;1936:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1988:6;1981:14;;;;;;;;;;;;2016:4;2006:14;;1808:220;;;:::o;14367:187::-;2612:8;:6;:8::i;:::-;2611:9;2603:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14476:4:::1;1625:14;:22;1640:6;1625:22;;;;;;;;;;;;;;;;;;;;;;;;;1624:23;1616:32;;;::::0;::::1;;14502:44:::2;14529:4;14535:2;14539:6;14502:26;:44::i;:::-;2652:1:::1;14367:187:::0;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;411:79;;:::i;:::-;373:2;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;363:263;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:2;;;763:79;;:::i;:::-;725:2;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;715:391;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:2;;;1260:79;;:::i;:::-;1222:2;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1212:519;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:2;;;1868:79;;:::i;:::-;1830:2;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1820:391;;;;;:::o;2217:619::-;2294:6;2302;2310;2359:2;2347:9;2338:7;2334:23;2330:32;2327:2;;;2365:79;;:::i;:::-;2327:2;2485:1;2510:53;2555:7;2546:6;2535:9;2531:22;2510:53;:::i;:::-;2500:63;;2456:117;2612:2;2638:53;2683:7;2674:6;2663:9;2659:22;2638:53;:::i;:::-;2628:63;;2583:118;2740:2;2766:53;2811:7;2802:6;2791:9;2787:22;2766:53;:::i;:::-;2756:63;;2711:118;2317:519;;;;;:::o;2842:329::-;2901:6;2950:2;2938:9;2929:7;2925:23;2921:32;2918:2;;;2956:79;;:::i;:::-;2918:2;3076:1;3101:53;3146:7;3137:6;3126:9;3122:22;3101:53;:::i;:::-;3091:63;;3047:117;2908:263;;;;:::o;3177:118::-;3264:24;3282:5;3264:24;:::i;:::-;3259:3;3252:37;3242:53;;:::o;3301:109::-;3382:21;3397:5;3382:21;:::i;:::-;3377:3;3370:34;3360:50;;:::o;3416:364::-;3504:3;3532:39;3565:5;3532:39;:::i;:::-;3587:71;3651:6;3646:3;3587:71;:::i;:::-;3580:78;;3667:52;3712:6;3707:3;3700:4;3693:5;3689:16;3667:52;:::i;:::-;3744:29;3766:6;3744:29;:::i;:::-;3739:3;3735:39;3728:46;;3508:272;;;;;:::o;3786:366::-;3928:3;3949:67;4013:2;4008:3;3949:67;:::i;:::-;3942:74;;4025:93;4114:3;4025:93;:::i;:::-;4143:2;4138:3;4134:12;4127:19;;3932:220;;;:::o;4158:366::-;4300:3;4321:67;4385:2;4380:3;4321:67;:::i;:::-;4314:74;;4397:93;4486:3;4397:93;:::i;:::-;4515:2;4510:3;4506:12;4499:19;;4304:220;;;:::o;4530:366::-;4672:3;4693:67;4757:2;4752:3;4693:67;:::i;:::-;4686:74;;4769:93;4858:3;4769:93;:::i;:::-;4887:2;4882:3;4878:12;4871:19;;4676:220;;;:::o;4902:366::-;5044:3;5065:67;5129:2;5124:3;5065:67;:::i;:::-;5058:74;;5141:93;5230:3;5141:93;:::i;:::-;5259:2;5254:3;5250:12;5243:19;;5048:220;;;:::o;5274:366::-;5416:3;5437:67;5501:2;5496:3;5437:67;:::i;:::-;5430:74;;5513:93;5602:3;5513:93;:::i;:::-;5631:2;5626:3;5622:12;5615:19;;5420:220;;;:::o;5646:366::-;5788:3;5809:67;5873:2;5868:3;5809:67;:::i;:::-;5802:74;;5885:93;5974:3;5885:93;:::i;:::-;6003:2;5998:3;5994:12;5987:19;;5792:220;;;:::o;6018:366::-;6160:3;6181:67;6245:2;6240:3;6181:67;:::i;:::-;6174:74;;6257:93;6346:3;6257:93;:::i;:::-;6375:2;6370:3;6366:12;6359:19;;6164:220;;;:::o;6390:366::-;6532:3;6553:67;6617:2;6612:3;6553:67;:::i;:::-;6546:74;;6629:93;6718:3;6629:93;:::i;:::-;6747:2;6742:3;6738:12;6731:19;;6536:220;;;:::o;6762:366::-;6904:3;6925:67;6989:2;6984:3;6925:67;:::i;:::-;6918:74;;7001:93;7090:3;7001:93;:::i;:::-;7119:2;7114:3;7110:12;7103:19;;6908:220;;;:::o;7134:366::-;7276:3;7297:67;7361:2;7356:3;7297:67;:::i;:::-;7290:74;;7373:93;7462:3;7373:93;:::i;:::-;7491:2;7486:3;7482:12;7475:19;;7280:220;;;:::o;7506:366::-;7648:3;7669:67;7733:2;7728:3;7669:67;:::i;:::-;7662:74;;7745:93;7834:3;7745:93;:::i;:::-;7863:2;7858:3;7854:12;7847:19;;7652:220;;;:::o;7878:366::-;8020:3;8041:67;8105:2;8100:3;8041:67;:::i;:::-;8034:74;;8117:93;8206:3;8117:93;:::i;:::-;8235:2;8230:3;8226:12;8219:19;;8024:220;;;:::o;8250:366::-;8392:3;8413:67;8477:2;8472:3;8413:67;:::i;:::-;8406:74;;8489:93;8578:3;8489:93;:::i;:::-;8607:2;8602:3;8598:12;8591:19;;8396:220;;;:::o;8622:366::-;8764:3;8785:67;8849:2;8844:3;8785:67;:::i;:::-;8778:74;;8861:93;8950:3;8861:93;:::i;:::-;8979:2;8974:3;8970:12;8963:19;;8768:220;;;:::o;8994:366::-;9136:3;9157:67;9221:2;9216:3;9157:67;:::i;:::-;9150:74;;9233:93;9322:3;9233:93;:::i;:::-;9351:2;9346:3;9342:12;9335:19;;9140:220;;;:::o;9366:366::-;9508:3;9529:67;9593:2;9588:3;9529:67;:::i;:::-;9522:74;;9605:93;9694:3;9605:93;:::i;:::-;9723:2;9718:3;9714:12;9707:19;;9512:220;;;:::o;9738:366::-;9880:3;9901:67;9965:2;9960:3;9901:67;:::i;:::-;9894:74;;9977:93;10066:3;9977:93;:::i;:::-;10095:2;10090:3;10086:12;10079:19;;9884:220;;;:::o;10110:366::-;10252:3;10273:67;10337:2;10332:3;10273:67;:::i;:::-;10266:74;;10349:93;10438:3;10349:93;:::i;:::-;10467:2;10462:3;10458:12;10451:19;;10256:220;;;:::o;10482:118::-;10569:24;10587:5;10569:24;:::i;:::-;10564:3;10557:37;10547:53;;:::o;10606:112::-;10689:22;10705:5;10689:22;:::i;:::-;10684:3;10677:35;10667:51;;:::o;10724:222::-;10817:4;10855:2;10844:9;10840:18;10832:26;;10868:71;10936:1;10925:9;10921:17;10912:6;10868:71;:::i;:::-;10822:124;;;;:::o;10952:210::-;11039:4;11077:2;11066:9;11062:18;11054:26;;11090:65;11152:1;11141:9;11137:17;11128:6;11090:65;:::i;:::-;11044:118;;;;:::o;11168:313::-;11281:4;11319:2;11308:9;11304:18;11296:26;;11368:9;11362:4;11358:20;11354:1;11343:9;11339:17;11332:47;11396:78;11469:4;11460:6;11396:78;:::i;:::-;11388:86;;11286:195;;;;:::o;11487:419::-;11653:4;11691:2;11680:9;11676:18;11668:26;;11740:9;11734:4;11730:20;11726:1;11715:9;11711:17;11704:47;11768:131;11894:4;11768:131;:::i;:::-;11760:139;;11658:248;;;:::o;11912:419::-;12078:4;12116:2;12105:9;12101:18;12093:26;;12165:9;12159:4;12155:20;12151:1;12140:9;12136:17;12129:47;12193:131;12319:4;12193:131;:::i;:::-;12185:139;;12083:248;;;:::o;12337:419::-;12503:4;12541:2;12530:9;12526:18;12518:26;;12590:9;12584:4;12580:20;12576:1;12565:9;12561:17;12554:47;12618:131;12744:4;12618:131;:::i;:::-;12610:139;;12508:248;;;:::o;12762:419::-;12928:4;12966:2;12955:9;12951:18;12943:26;;13015:9;13009:4;13005:20;13001:1;12990:9;12986:17;12979:47;13043:131;13169:4;13043:131;:::i;:::-;13035:139;;12933:248;;;:::o;13187:419::-;13353:4;13391:2;13380:9;13376:18;13368:26;;13440:9;13434:4;13430:20;13426:1;13415:9;13411:17;13404:47;13468:131;13594:4;13468:131;:::i;:::-;13460:139;;13358:248;;;:::o;13612:419::-;13778:4;13816:2;13805:9;13801:18;13793:26;;13865:9;13859:4;13855:20;13851:1;13840:9;13836:17;13829:47;13893:131;14019:4;13893:131;:::i;:::-;13885:139;;13783:248;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14208:248;;;:::o;14462:419::-;14628:4;14666:2;14655:9;14651:18;14643:26;;14715:9;14709:4;14705:20;14701:1;14690:9;14686:17;14679:47;14743:131;14869:4;14743:131;:::i;:::-;14735:139;;14633:248;;;:::o;14887:419::-;15053:4;15091:2;15080:9;15076:18;15068:26;;15140:9;15134:4;15130:20;15126:1;15115:9;15111:17;15104:47;15168:131;15294:4;15168:131;:::i;:::-;15160:139;;15058:248;;;:::o;15312:419::-;15478:4;15516:2;15505:9;15501:18;15493:26;;15565:9;15559:4;15555:20;15551:1;15540:9;15536:17;15529:47;15593:131;15719:4;15593:131;:::i;:::-;15585:139;;15483:248;;;:::o;15737:419::-;15903:4;15941:2;15930:9;15926:18;15918:26;;15990:9;15984:4;15980:20;15976:1;15965:9;15961:17;15954:47;16018:131;16144:4;16018:131;:::i;:::-;16010:139;;15908:248;;;:::o;16162:419::-;16328:4;16366:2;16355:9;16351:18;16343:26;;16415:9;16409:4;16405:20;16401:1;16390:9;16386:17;16379:47;16443:131;16569:4;16443:131;:::i;:::-;16435:139;;16333:248;;;:::o;16587:419::-;16753:4;16791:2;16780:9;16776:18;16768:26;;16840:9;16834:4;16830:20;16826:1;16815:9;16811:17;16804:47;16868:131;16994:4;16868:131;:::i;:::-;16860:139;;16758:248;;;:::o;17012:419::-;17178:4;17216:2;17205:9;17201:18;17193:26;;17265:9;17259:4;17255:20;17251:1;17240:9;17236:17;17229:47;17293:131;17419:4;17293:131;:::i;:::-;17285:139;;17183:248;;;:::o;17437:419::-;17603:4;17641:2;17630:9;17626:18;17618:26;;17690:9;17684:4;17680:20;17676:1;17665:9;17661:17;17654:47;17718:131;17844:4;17718:131;:::i;:::-;17710:139;;17608:248;;;:::o;17862:419::-;18028:4;18066:2;18055:9;18051:18;18043:26;;18115:9;18109:4;18105:20;18101:1;18090:9;18086:17;18079:47;18143:131;18269:4;18143:131;:::i;:::-;18135:139;;18033:248;;;:::o;18287:419::-;18453:4;18491:2;18480:9;18476:18;18468:26;;18540:9;18534:4;18530:20;18526:1;18515:9;18511:17;18504:47;18568:131;18694:4;18568:131;:::i;:::-;18560:139;;18458:248;;;:::o;18712:419::-;18878:4;18916:2;18905:9;18901:18;18893:26;;18965:9;18959:4;18955:20;18951:1;18940:9;18936:17;18929:47;18993:131;19119:4;18993:131;:::i;:::-;18985:139;;18883:248;;;:::o;19137:222::-;19230:4;19268:2;19257:9;19253:18;19245:26;;19281:71;19349:1;19338:9;19334:17;19325:6;19281:71;:::i;:::-;19235:124;;;;:::o;19365:332::-;19486:4;19524:2;19513:9;19509:18;19501:26;;19537:71;19605:1;19594:9;19590:17;19581:6;19537:71;:::i;:::-;19618:72;19686:2;19675:9;19671:18;19662:6;19618:72;:::i;:::-;19491:206;;;;;:::o;19703:214::-;19792:4;19830:2;19819:9;19815:18;19807:26;;19843:67;19907:1;19896:9;19892:17;19883:6;19843:67;:::i;:::-;19797:120;;;;:::o;20004:99::-;20056:6;20090:5;20084:12;20074:22;;20063:40;;;:::o;20109:169::-;20193:11;20227:6;20222:3;20215:19;20267:4;20262:3;20258:14;20243:29;;20205:73;;;;:::o;20284:305::-;20324:3;20343:20;20361:1;20343:20;:::i;:::-;20338:25;;20377:20;20395:1;20377:20;:::i;:::-;20372:25;;20531:1;20463:66;20459:74;20456:1;20453:81;20450:2;;;20537:18;;:::i;:::-;20450:2;20581:1;20578;20574:9;20567:16;;20328:261;;;;:::o;20595:191::-;20635:4;20655:20;20673:1;20655:20;:::i;:::-;20650:25;;20689:20;20707:1;20689:20;:::i;:::-;20684:25;;20728:1;20725;20722:8;20719:2;;;20733:18;;:::i;:::-;20719:2;20778:1;20775;20771:9;20763:17;;20640:146;;;;:::o;20792:96::-;20829:7;20858:24;20876:5;20858:24;:::i;:::-;20847:35;;20837:51;;;:::o;20894:90::-;20928:7;20971:5;20964:13;20957:21;20946:32;;20936:48;;;:::o;20990:126::-;21027:7;21067:42;21060:5;21056:54;21045:65;;21035:81;;;:::o;21122:77::-;21159:7;21188:5;21177:16;;21167:32;;;:::o;21205:86::-;21240:7;21280:4;21273:5;21269:16;21258:27;;21248:43;;;:::o;21297:307::-;21365:1;21375:113;21389:6;21386:1;21383:13;21375:113;;;21474:1;21469:3;21465:11;21459:18;21455:1;21450:3;21446:11;21439:39;21411:2;21408:1;21404:10;21399:15;;21375:113;;;21506:6;21503:1;21500:13;21497:2;;;21586:1;21577:6;21572:3;21568:16;21561:27;21497:2;21346:258;;;;:::o;21610:171::-;21649:3;21672:24;21690:5;21672:24;:::i;:::-;21663:33;;21718:4;21711:5;21708:15;21705:2;;;21726:18;;:::i;:::-;21705:2;21773:1;21766:5;21762:13;21755:20;;21653:128;;;:::o;21787:320::-;21831:6;21868:1;21862:4;21858:12;21848:22;;21915:1;21909:4;21905:12;21936:18;21926:2;;21992:4;21984:6;21980:17;21970:27;;21926:2;22054;22046:6;22043:14;22023:18;22020:38;22017:2;;;22073:18;;:::i;:::-;22017:2;21838:269;;;;:::o;22113:233::-;22152:3;22175:24;22193:5;22175:24;:::i;:::-;22166:33;;22221:66;22214:5;22211:77;22208:2;;;22291:18;;:::i;:::-;22208:2;22338:1;22331:5;22327:13;22320:20;;22156:190;;;:::o;22352:180::-;22400:77;22397:1;22390:88;22497:4;22494:1;22487:15;22521:4;22518:1;22511:15;22538:180;22586:77;22583:1;22576:88;22683:4;22680:1;22673:15;22707:4;22704:1;22697:15;22724:180;22772:77;22769:1;22762:88;22869:4;22866:1;22859:15;22893:4;22890:1;22883:15;22910:180;22958:77;22955:1;22948:88;23055:4;23052:1;23045:15;23079:4;23076:1;23069:15;23219:117;23328:1;23325;23318:12;23342:102;23383:6;23434:2;23430:7;23425:2;23418:5;23414:14;23410:28;23400:38;;23390:54;;;:::o;23450:222::-;23590:34;23586:1;23578:6;23574:14;23567:58;23659:5;23654:2;23646:6;23642:15;23635:30;23556:116;:::o;23678:170::-;23818:22;23814:1;23806:6;23802:14;23795:46;23784:64;:::o;23854:176::-;23994:28;23990:1;23982:6;23978:14;23971:52;23960:70;:::o;24036:221::-;24176:34;24172:1;24164:6;24160:14;24153:58;24245:4;24240:2;24232:6;24228:15;24221:29;24142:115;:::o;24263:237::-;24403:34;24399:1;24391:6;24387:14;24380:58;24472:20;24467:2;24459:6;24455:15;24448:45;24369:131;:::o;24506:225::-;24646:34;24642:1;24634:6;24630:14;24623:58;24715:8;24710:2;24702:6;24698:15;24691:33;24612:119;:::o;24737:221::-;24877:34;24873:1;24865:6;24861:14;24854:58;24946:4;24941:2;24933:6;24929:15;24922:29;24843:115;:::o;24964:173::-;25104:25;25100:1;25092:6;25088:14;25081:49;25070:67;:::o;25143:225::-;25283:34;25279:1;25271:6;25267:14;25260:58;25352:8;25347:2;25339:6;25335:15;25328:33;25249:119;:::o;25374:166::-;25514:18;25510:1;25502:6;25498:14;25491:42;25480:60;:::o;25546:225::-;25686:34;25682:1;25674:6;25670:14;25663:58;25755:8;25750:2;25742:6;25738:15;25731:33;25652:119;:::o;25777:227::-;25917:34;25913:1;25905:6;25901:14;25894:58;25986:10;25981:2;25973:6;25969:15;25962:35;25883:121;:::o;26010:182::-;26150:34;26146:1;26138:6;26134:14;26127:58;26116:76;:::o;26198:223::-;26338:34;26334:1;26326:6;26322:14;26315:58;26407:6;26402:2;26394:6;26390:15;26383:31;26304:117;:::o;26427:220::-;26567:34;26563:1;26555:6;26551:14;26544:58;26636:3;26631:2;26623:6;26619:15;26612:28;26533:114;:::o;26653:224::-;26793:34;26789:1;26781:6;26777:14;26770:58;26862:7;26857:2;26849:6;26845:15;26838:32;26759:118;:::o;26883:223::-;27023:34;27019:1;27011:6;27007:14;27000:58;27092:6;27087:2;27079:6;27075:15;27068:31;26989:117;:::o;27112:224::-;27252:34;27248:1;27240:6;27236:14;27229:58;27321:7;27316:2;27308:6;27304:15;27297:32;27218:118;:::o;27342:122::-;27415:24;27433:5;27415:24;:::i;:::-;27408:5;27405:35;27395:2;;27454:1;27451;27444:12;27395:2;27385:79;:::o;27470:122::-;27543:24;27561:5;27543:24;:::i;:::-;27536:5;27533:35;27523:2;;27582:1;27579;27572:12;27523:2;27513:79;:::o

Swarm Source

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