ETH Price: $3,178.43 (-7.66%)
Gas: 2 Gwei

Token

FOGnet (FOG)
 

Overview

Max Total Supply

10,000,000,000 FOG

Holders

8,854 (0.00%)

Market

Price

$0.15 @ 0.000046 ETH (-0.98%)

Onchain Market Cap

$1,458,640,000.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
3 FOG

Value
$0.44 ( ~0.000138433214069357 Eth) [0.0000%]
0x9ff907796f83a8de7f29a2418a8acbec51cbb678
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Fognet, a high-speed blockchain-based integrated content platform, offers a variety of service platforms centered around the blockchain secure messenger, KARMA.

Market

Volume (24H):$4,588,180.00
Market Capitalization:$0.00
Circulating Supply:0.00 FOG
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FOGnet

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-01
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        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), "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, "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.");

        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 FOGnet is ERC20, Pausable, Freezable, ERC20Burnable, ERC20Lockable {

    constructor() ERC20("FOGnet", "FOG") {
        _mint(msg.sender, 10000000000 * (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

[{"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600681526020017f464f476e657400000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f464f47000000000000000000000000000000000000000000000000000000000081525081600390816200008f91906200068c565b508060049081620000a191906200068c565b5050506000600560006101000a81548160ff0219169083151502179055506000620000d1620001b760201b60201c565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001b13362000185620001bf60201b60201c565b600a62000193919062000903565b6402540be400620001a5919062000954565b620001c860201b60201c565b62000afd565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200023a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002319062000a00565b60405180910390fd5b6200024e600083836200032c60201b60201c565b806002600082825462000262919062000a22565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002b9919062000a22565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000320919062000a6e565b60405180910390a35050565b6200033c620003f660201b60201c565b156200037f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003769062000adb565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620003d857600080fd5b620003f08484846200040d60201b620019ad1760201c565b50505050565b6000600560009054906101000a900460ff16905090565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049457607f821691505b602082108103620004aa57620004a96200044c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004d5565b620005208683620004d5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200056d62000567620005618462000538565b62000542565b62000538565b9050919050565b6000819050919050565b62000589836200054c565b620005a1620005988262000574565b848454620004e2565b825550505050565b600090565b620005b8620005a9565b620005c58184846200057e565b505050565b5b81811015620005ed57620005e1600082620005ae565b600181019050620005cb565b5050565b601f8211156200063c576200060681620004b0565b6200061184620004c5565b8101602085101562000621578190505b620006396200063085620004c5565b830182620005ca565b50505b505050565b600082821c905092915050565b6000620006616000198460080262000641565b1980831691505092915050565b60006200067c83836200064e565b9150826002028217905092915050565b620006978262000412565b67ffffffffffffffff811115620006b357620006b26200041d565b5b620006bf82546200047b565b620006cc828285620005f1565b600060209050601f831160018114620007045760008415620006ef578287015190505b620006fb85826200066e565b8655506200076b565b601f1984166200071486620004b0565b60005b828110156200073e5784890151825560018201915060208501945060208101905062000717565b868310156200075e57848901516200075a601f8916826200064e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200080157808604811115620007d957620007d862000773565b5b6001851615620007e95780820291505b8081029050620007f985620007a2565b9450620007b9565b94509492505050565b6000826200081c5760019050620008ef565b816200082c5760009050620008ef565b8160018114620008455760028114620008505762000886565b6001915050620008ef565b60ff84111562000865576200086462000773565b5b8360020a9150848211156200087f576200087e62000773565b5b50620008ef565b5060208310610133831016604e8410600b8410161715620008c05782820a905083811115620008ba57620008b962000773565b5b620008ef565b620008cf8484846001620007af565b92509050818404811115620008e957620008e862000773565b5b81810290505b9392505050565b600060ff82169050919050565b6000620009108262000538565b91506200091d83620008f6565b92506200094c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200080a565b905092915050565b6000620009618262000538565b91506200096e8362000538565b92508282026200097e8162000538565b9150828204841483151762000998576200099762000773565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620009e8601f836200099f565b9150620009f582620009b0565b602082019050919050565b6000602082019050818103600083015262000a1b81620009d9565b9050919050565b600062000a2f8262000538565b915062000a3c8362000538565b925082820190508082111562000a575762000a5662000773565b5b92915050565b62000a688162000538565b82525050565b600060208201905062000a85600083018462000a5d565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600062000ac36010836200099f565b915062000ad08262000a8b565b602082019050919050565b6000602082019050818103600083015262000af68162000ab4565b9050919050565b6138a88062000b0d6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612a4d565b60405180910390f35b61021760048036038101906102129190612b08565b6106d1565b6040516102249190612b63565b60405180910390f35b6102356106ef565b6040516102429190612b8d565b60405180910390f35b61026560048036038101906102609190612ba8565b6106f9565b6040516102729190612b63565b60405180910390f35b61028361083a565b6040516102909190612c17565b60405180910390f35b6102b360048036038101906102ae9190612b08565b610843565b6040516102c09190612b63565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612c32565b610975565b005b6102f7610989565b6040516103049190612b63565b60405180910390f35b61032760048036038101906103229190612c5f565b6109a0565b6040516103349190612b8d565b60405180910390f35b610345610a40565b005b610361600480360381019061035c9190612c5f565b610b7d565b005b61037d60048036038101906103789190612b08565b610c06565b005b61039960048036038101906103949190612b08565b610c81565b6040516103a69190612b63565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612c9b565b60405180910390f35b6103df610e48565b6040516103ec9190612a4d565b60405180910390f35b61040f600480360381019061040a9190612b08565b610eda565b60405161041c9190612b63565b60405180910390f35b61043f600480360381019061043a9190612b08565b610fc5565b60405161044c9190612b63565b60405180910390f35b61046f600480360381019061046a9190612b08565b611104565b60405161047d929190612cb6565b60405180910390f35b6104a0600480360381019061049b9190612c5f565b61119f565b6040516104ad9190612b63565b60405180910390f35b6104d060048036038101906104cb9190612c5f565b611327565b6040516104dd9190612b8d565b60405180910390f35b61050060048036038101906104fb9190612c5f565b611339565b60405161050e929190612cb6565b60405180910390f35b610531600480360381019061052c9190612cdf565b6113c8565b60405161053e9190612b8d565b60405180910390f35b610561600480360381019061055c9190612d1f565b61144f565b60405161056e9190612b63565b60405180910390f35b610591600480360381019061058c9190612c5f565b611528565b60405161059e9190612b63565b60405180910390f35b6105c160048036038101906105bc9190612d1f565b61160d565b6040516105ce9190612b63565b60405180910390f35b6105f160048036038101906105ec9190612c5f565b611723565b6040516105fe9190612b63565b60405180910390f35b610621600480360381019061061c9190612c5f565b611779565b005b61063d60048036038101906106389190612c5f565b611802565b005b60606003805461064e90612da1565b80601f016020809104026020016040519081016040528092919081815260200182805461067a90612da1565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de6119b2565b84846119ba565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156107585761075683611528565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a39190612e01565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612e81565b60405180910390fd5b61082e878787611b83565b93505050509392505050565b60006012905090565b60006108e56108506119b2565b84846001600061085e6119b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e09190612e01565b6119ba565b6001905092915050565b6108f76119b2565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290612eed565b60405180910390fd5b610973611c7b565b565b6109866109806119b2565b82611d1d565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611ee7565b9050600080806109bb86611339565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a049190612e01565b95505b50508080610a1490612f0d565b9150506109d8565b505b828285610a2b9190612f55565b610a359190612e01565b945050505050919050565b610a486119b2565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b856119b2565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090612eed565b60405180910390fd5b610c0281611f2f565b5050565b6000610c1983610c146119b2565b6113c8565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590612fd5565b60405180910390fd5b610c7283610c6a6119b2565b8484036119ba565b610c7c8383611d1d565b505050565b6000610c8b6119b2565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690612eed565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90613041565b60405180910390fd5b610d8d8383611fe7565b506001905092915050565b610da06119b2565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90612eed565b60405180910390fd5b610e1c6122d5565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e5790612da1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8390612da1565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee96119b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906130d3565b60405180910390fd5b610fba610fb16119b2565b858584036119ba565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156110245761102283611528565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f9190612e01565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612e81565b60405180910390fd5b6110f98686612378565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061115a576111596130f3565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111a96119b2565b73ffffffffffffffffffffffffffffffffffffffff166111c7610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490612eed565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990613041565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b600081111561131d57611309836001836113049190612f55565b611fe7565b50808061131590613122565b9150506112ea565b5060019050919050565b600061133282611ee7565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006114596119b2565b73ffffffffffffffffffffffffffffffffffffffff16611477610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361150657600080fd5b611511338585612396565b61151c84848461260a565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116035742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106115cc576115cb6130f3565b5b90600052602060002090600202016000015410156115f0576115ee8382611fe7565b505b80806115fb90612f0d565b915050611530565b5060019050919050565b60006116176119b2565b73ffffffffffffffffffffffffffffffffffffffff16611635610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612eed565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561170c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611703906131bd565b60405180910390fd5b61171784848461260a565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117816119b2565b73ffffffffffffffffffffffffffffffffffffffff1661179f610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612eed565b60405180910390fd5b6117fe81612853565b5050565b61180a6119b2565b73ffffffffffffffffffffffffffffffffffffffff16611828610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e490613229565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a20906132bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f9061334d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b769190612b8d565b60405180910390a3505050565b6000611b90848484612396565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611bdb6119b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c52906133df565b60405180910390fd5b611c6f85611c676119b2565b8584036119ba565b60019150509392505050565b611c83610989565b611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb99061344b565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d066119b2565b604051611d139190612c9b565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d83906134dd565b60405180910390fd5b611d988260008361290c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e159061356f565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611e759190612f55565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eda9190612b8d565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f3a82611723565b611f4357600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061203b5761203a6130f3565b5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209a9190612f55565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f182600101546040516121279190612b8d565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506121bd9190612f55565b815481106121ce576121cd6130f3565b5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061222d5761222c6130f3565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806122a1576122a061358f565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6122dd610989565b1561231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061360a565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123616119b2565b60405161236e9190612c9b565b60405180910390a1565b600061238c6123856119b2565b8484612396565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc9061369c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b9061372e565b60405180910390fd5b61247f83838361290c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fc906137c0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125989190612e01565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125fc9190612b8d565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126579190612e01565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce90613852565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127229190612e01565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051612840929190612cb6565b60405180910390a2600190509392505050565b600061285e82611723565b1561286857600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b612914610989565b15612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b9061360a565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129ac57600080fd5b6129b78484846119ad565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129f75780820151818401526020810190506129dc565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a1f826129bd565b612a2981856129c8565b9350612a398185602086016129d9565b612a4281612a03565b840191505092915050565b60006020820190508181036000830152612a678184612a14565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9f82612a74565b9050919050565b612aaf81612a94565b8114612aba57600080fd5b50565b600081359050612acc81612aa6565b92915050565b6000819050919050565b612ae581612ad2565b8114612af057600080fd5b50565b600081359050612b0281612adc565b92915050565b60008060408385031215612b1f57612b1e612a6f565b5b6000612b2d85828601612abd565b9250506020612b3e85828601612af3565b9150509250929050565b60008115159050919050565b612b5d81612b48565b82525050565b6000602082019050612b786000830184612b54565b92915050565b612b8781612ad2565b82525050565b6000602082019050612ba26000830184612b7e565b92915050565b600080600060608486031215612bc157612bc0612a6f565b5b6000612bcf86828701612abd565b9350506020612be086828701612abd565b9250506040612bf186828701612af3565b9150509250925092565b600060ff82169050919050565b612c1181612bfb565b82525050565b6000602082019050612c2c6000830184612c08565b92915050565b600060208284031215612c4857612c47612a6f565b5b6000612c5684828501612af3565b91505092915050565b600060208284031215612c7557612c74612a6f565b5b6000612c8384828501612abd565b91505092915050565b612c9581612a94565b82525050565b6000602082019050612cb06000830184612c8c565b92915050565b6000604082019050612ccb6000830185612b7e565b612cd86020830184612b7e565b9392505050565b60008060408385031215612cf657612cf5612a6f565b5b6000612d0485828601612abd565b9250506020612d1585828601612abd565b9150509250929050565b600080600060608486031215612d3857612d37612a6f565b5b6000612d4686828701612abd565b9350506020612d5786828701612af3565b9250506040612d6886828701612af3565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612db957607f821691505b602082108103612dcc57612dcb612d72565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e0c82612ad2565b9150612e1783612ad2565b9250828201905080821115612e2f57612e2e612dd2565b5b92915050565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b6000612e6b601a836129c8565b9150612e7682612e35565b602082019050919050565b60006020820190508181036000830152612e9a81612e5e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ed76020836129c8565b9150612ee282612ea1565b602082019050919050565b60006020820190508181036000830152612f0681612eca565b9050919050565b6000612f1882612ad2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f4a57612f49612dd2565b5b600182019050919050565b6000612f6082612ad2565b9150612f6b83612ad2565b9250828203905081811115612f8357612f82612dd2565b5b92915050565b7f6275726e20616d6f756e74206578636565647320616c6c6f77616e6365000000600082015250565b6000612fbf601d836129c8565b9150612fca82612f89565b602082019050919050565b60006020820190508181036000830152612fee81612fb2565b9050919050565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b600061302b6017836129c8565b915061303682612ff5565b602082019050919050565b6000602082019050818103600083015261305a8161301e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130bd6025836129c8565b91506130c882613061565b604082019050919050565b600060208201905081810360008301526130ec816130b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061312d82612ad2565b9150600082036131405761313f612dd2565b5b600182039050919050565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b60006131a76026836129c8565b91506131b28261314b565b604082019050919050565b600060208201905081810360008301526131d68161319a565b9050919050565b7f6e6577206f776e657220697320746865207a65726f2061646472657373000000600082015250565b6000613213601d836129c8565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132a56024836129c8565b91506132b082613249565b604082019050919050565b600060208201905081810360008301526132d481613298565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133376022836129c8565b9150613342826132db565b604082019050919050565b600060208201905081810360008301526133668161332a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133c96028836129c8565b91506133d48261336d565b604082019050919050565b600060208201905081810360008301526133f8816133bc565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006134356014836129c8565b9150613440826133ff565b602082019050919050565b6000602082019050818103600083015261346481613428565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c76021836129c8565b91506134d28261346b565b604082019050919050565b600060208201905081810360008301526134f6816134ba565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006135596022836129c8565b9150613564826134fd565b604082019050919050565b600060208201905081810360008301526135888161354c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006135f46010836129c8565b91506135ff826135be565b602082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136866025836129c8565b91506136918261362a565b604082019050919050565b600060208201905081810360008301526136b581613679565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137186023836129c8565b9150613723826136bc565b604082019050919050565b600060208201905081810360008301526137478161370b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006137aa6026836129c8565b91506137b58261374e565b604082019050919050565b600060208201905081810360008301526137d98161379d565b9050919050565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b600061383c6032836129c8565b9150613847826137e0565b604082019050919050565b6000602082019050818103600083015261386b8161382f565b905091905056fea26469706673582212204487fd8c45e7f59895da951d87c4244ca559be0af1f13ab55d8b8c23ead8d3a164736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612a4d565b60405180910390f35b61021760048036038101906102129190612b08565b6106d1565b6040516102249190612b63565b60405180910390f35b6102356106ef565b6040516102429190612b8d565b60405180910390f35b61026560048036038101906102609190612ba8565b6106f9565b6040516102729190612b63565b60405180910390f35b61028361083a565b6040516102909190612c17565b60405180910390f35b6102b360048036038101906102ae9190612b08565b610843565b6040516102c09190612b63565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612c32565b610975565b005b6102f7610989565b6040516103049190612b63565b60405180910390f35b61032760048036038101906103229190612c5f565b6109a0565b6040516103349190612b8d565b60405180910390f35b610345610a40565b005b610361600480360381019061035c9190612c5f565b610b7d565b005b61037d60048036038101906103789190612b08565b610c06565b005b61039960048036038101906103949190612b08565b610c81565b6040516103a69190612b63565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612c9b565b60405180910390f35b6103df610e48565b6040516103ec9190612a4d565b60405180910390f35b61040f600480360381019061040a9190612b08565b610eda565b60405161041c9190612b63565b60405180910390f35b61043f600480360381019061043a9190612b08565b610fc5565b60405161044c9190612b63565b60405180910390f35b61046f600480360381019061046a9190612b08565b611104565b60405161047d929190612cb6565b60405180910390f35b6104a0600480360381019061049b9190612c5f565b61119f565b6040516104ad9190612b63565b60405180910390f35b6104d060048036038101906104cb9190612c5f565b611327565b6040516104dd9190612b8d565b60405180910390f35b61050060048036038101906104fb9190612c5f565b611339565b60405161050e929190612cb6565b60405180910390f35b610531600480360381019061052c9190612cdf565b6113c8565b60405161053e9190612b8d565b60405180910390f35b610561600480360381019061055c9190612d1f565b61144f565b60405161056e9190612b63565b60405180910390f35b610591600480360381019061058c9190612c5f565b611528565b60405161059e9190612b63565b60405180910390f35b6105c160048036038101906105bc9190612d1f565b61160d565b6040516105ce9190612b63565b60405180910390f35b6105f160048036038101906105ec9190612c5f565b611723565b6040516105fe9190612b63565b60405180910390f35b610621600480360381019061061c9190612c5f565b611779565b005b61063d60048036038101906106389190612c5f565b611802565b005b60606003805461064e90612da1565b80601f016020809104026020016040519081016040528092919081815260200182805461067a90612da1565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de6119b2565b84846119ba565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156107585761075683611528565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a39190612e01565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612e81565b60405180910390fd5b61082e878787611b83565b93505050509392505050565b60006012905090565b60006108e56108506119b2565b84846001600061085e6119b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e09190612e01565b6119ba565b6001905092915050565b6108f76119b2565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290612eed565b60405180910390fd5b610973611c7b565b565b6109866109806119b2565b82611d1d565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611ee7565b9050600080806109bb86611339565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a049190612e01565b95505b50508080610a1490612f0d565b9150506109d8565b505b828285610a2b9190612f55565b610a359190612e01565b945050505050919050565b610a486119b2565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b856119b2565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090612eed565b60405180910390fd5b610c0281611f2f565b5050565b6000610c1983610c146119b2565b6113c8565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590612fd5565b60405180910390fd5b610c7283610c6a6119b2565b8484036119ba565b610c7c8383611d1d565b505050565b6000610c8b6119b2565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690612eed565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90613041565b60405180910390fd5b610d8d8383611fe7565b506001905092915050565b610da06119b2565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90612eed565b60405180910390fd5b610e1c6122d5565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e5790612da1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8390612da1565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee96119b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906130d3565b60405180910390fd5b610fba610fb16119b2565b858584036119ba565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156110245761102283611528565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f9190612e01565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612e81565b60405180910390fd5b6110f98686612378565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061115a576111596130f3565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111a96119b2565b73ffffffffffffffffffffffffffffffffffffffff166111c7610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490612eed565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990613041565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b600081111561131d57611309836001836113049190612f55565b611fe7565b50808061131590613122565b9150506112ea565b5060019050919050565b600061133282611ee7565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006114596119b2565b73ffffffffffffffffffffffffffffffffffffffff16611477610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361150657600080fd5b611511338585612396565b61151c84848461260a565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116035742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106115cc576115cb6130f3565b5b90600052602060002090600202016000015410156115f0576115ee8382611fe7565b505b80806115fb90612f0d565b915050611530565b5060019050919050565b60006116176119b2565b73ffffffffffffffffffffffffffffffffffffffff16611635610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612eed565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561170c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611703906131bd565b60405180910390fd5b61171784848461260a565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117816119b2565b73ffffffffffffffffffffffffffffffffffffffff1661179f610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612eed565b60405180910390fd5b6117fe81612853565b5050565b61180a6119b2565b73ffffffffffffffffffffffffffffffffffffffff16611828610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e490613229565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a20906132bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f9061334d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b769190612b8d565b60405180910390a3505050565b6000611b90848484612396565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611bdb6119b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c52906133df565b60405180910390fd5b611c6f85611c676119b2565b8584036119ba565b60019150509392505050565b611c83610989565b611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb99061344b565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d066119b2565b604051611d139190612c9b565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d83906134dd565b60405180910390fd5b611d988260008361290c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e159061356f565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611e759190612f55565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eda9190612b8d565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f3a82611723565b611f4357600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061203b5761203a6130f3565b5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209a9190612f55565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f182600101546040516121279190612b8d565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506121bd9190612f55565b815481106121ce576121cd6130f3565b5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061222d5761222c6130f3565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806122a1576122a061358f565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6122dd610989565b1561231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061360a565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123616119b2565b60405161236e9190612c9b565b60405180910390a1565b600061238c6123856119b2565b8484612396565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc9061369c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b9061372e565b60405180910390fd5b61247f83838361290c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fc906137c0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125989190612e01565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125fc9190612b8d565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126579190612e01565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce90613852565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127229190612e01565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051612840929190612cb6565b60405180910390a2600190509392505050565b600061285e82611723565b1561286857600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b612914610989565b15612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b9061360a565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129ac57600080fd5b6129b78484846119ad565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129f75780820151818401526020810190506129dc565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a1f826129bd565b612a2981856129c8565b9350612a398185602086016129d9565b612a4281612a03565b840191505092915050565b60006020820190508181036000830152612a678184612a14565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9f82612a74565b9050919050565b612aaf81612a94565b8114612aba57600080fd5b50565b600081359050612acc81612aa6565b92915050565b6000819050919050565b612ae581612ad2565b8114612af057600080fd5b50565b600081359050612b0281612adc565b92915050565b60008060408385031215612b1f57612b1e612a6f565b5b6000612b2d85828601612abd565b9250506020612b3e85828601612af3565b9150509250929050565b60008115159050919050565b612b5d81612b48565b82525050565b6000602082019050612b786000830184612b54565b92915050565b612b8781612ad2565b82525050565b6000602082019050612ba26000830184612b7e565b92915050565b600080600060608486031215612bc157612bc0612a6f565b5b6000612bcf86828701612abd565b9350506020612be086828701612abd565b9250506040612bf186828701612af3565b9150509250925092565b600060ff82169050919050565b612c1181612bfb565b82525050565b6000602082019050612c2c6000830184612c08565b92915050565b600060208284031215612c4857612c47612a6f565b5b6000612c5684828501612af3565b91505092915050565b600060208284031215612c7557612c74612a6f565b5b6000612c8384828501612abd565b91505092915050565b612c9581612a94565b82525050565b6000602082019050612cb06000830184612c8c565b92915050565b6000604082019050612ccb6000830185612b7e565b612cd86020830184612b7e565b9392505050565b60008060408385031215612cf657612cf5612a6f565b5b6000612d0485828601612abd565b9250506020612d1585828601612abd565b9150509250929050565b600080600060608486031215612d3857612d37612a6f565b5b6000612d4686828701612abd565b9350506020612d5786828701612af3565b9250506040612d6886828701612af3565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612db957607f821691505b602082108103612dcc57612dcb612d72565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e0c82612ad2565b9150612e1783612ad2565b9250828201905080821115612e2f57612e2e612dd2565b5b92915050565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b6000612e6b601a836129c8565b9150612e7682612e35565b602082019050919050565b60006020820190508181036000830152612e9a81612e5e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ed76020836129c8565b9150612ee282612ea1565b602082019050919050565b60006020820190508181036000830152612f0681612eca565b9050919050565b6000612f1882612ad2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f4a57612f49612dd2565b5b600182019050919050565b6000612f6082612ad2565b9150612f6b83612ad2565b9250828203905081811115612f8357612f82612dd2565b5b92915050565b7f6275726e20616d6f756e74206578636565647320616c6c6f77616e6365000000600082015250565b6000612fbf601d836129c8565b9150612fca82612f89565b602082019050919050565b60006020820190508181036000830152612fee81612fb2565b9050919050565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b600061302b6017836129c8565b915061303682612ff5565b602082019050919050565b6000602082019050818103600083015261305a8161301e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130bd6025836129c8565b91506130c882613061565b604082019050919050565b600060208201905081810360008301526130ec816130b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061312d82612ad2565b9150600082036131405761313f612dd2565b5b600182039050919050565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b60006131a76026836129c8565b91506131b28261314b565b604082019050919050565b600060208201905081810360008301526131d68161319a565b9050919050565b7f6e6577206f776e657220697320746865207a65726f2061646472657373000000600082015250565b6000613213601d836129c8565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132a56024836129c8565b91506132b082613249565b604082019050919050565b600060208201905081810360008301526132d481613298565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133376022836129c8565b9150613342826132db565b604082019050919050565b600060208201905081810360008301526133668161332a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133c96028836129c8565b91506133d48261336d565b604082019050919050565b600060208201905081810360008301526133f8816133bc565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006134356014836129c8565b9150613440826133ff565b602082019050919050565b6000602082019050818103600083015261346481613428565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c76021836129c8565b91506134d28261346b565b604082019050919050565b600060208201905081810360008301526134f6816134ba565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006135596022836129c8565b9150613564826134fd565b604082019050919050565b600060208201905081810360008301526135888161354c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006135f46010836129c8565b91506135ff826135be565b602082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136866025836129c8565b91506136918261362a565b604082019050919050565b600060208201905081810360008301526136b581613679565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137186023836129c8565b9150613723826136bc565b604082019050919050565b600060208201905081810360008301526137478161370b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006137aa6026836129c8565b91506137b58261374e565b604082019050919050565b600060208201905081810360008301526137d98161379d565b9050919050565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b600061383c6032836129c8565b9150613847826137e0565b604082019050919050565b6000602082019050818103600083015261386b8161382f565b905091905056fea26469706673582212204487fd8c45e7f59895da951d87c4244ca559be0af1f13ab55d8b8c23ead8d3a164736f6c63430008110033

Deployed Bytecode Sourcemap

12490:1948:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4230:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5144:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4551:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13213:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4450:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5823:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12759:65;;;:::i;:::-;;8629:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2372:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13402:700;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;875:148;;;:::i;:::-;;12937:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8728:365;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11213:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12690:61;;;:::i;:::-;;652:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4338:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6046:415;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13046:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12048:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11438:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14110:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12305:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4985:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11736:304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10919:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10626:285;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1575:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12832:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1031:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4230:100;4284:13;4317:5;4310:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4230:100;:::o;5144:169::-;5227:4;5244:39;5253:12;:10;:12::i;:::-;5267:7;5276:6;5244:8;:39::i;:::-;5301:4;5294:11;;5144:169;;;;:::o;4551:108::-;4612:7;4639:12;;4632:19;;4551:108;:::o;13213:181::-;13326:4;13294;13300:6;9552:14;9569:6;:12;9576:4;9569:12;;;;;;;;;;;;;;;:19;;;;9552:36;;9612:1;9603:6;:10;9599:59;;;9630:16;9641:4;9630:10;:16::i;:::-;;9599:59;9716:6;9695:12;:18;9708:4;9695:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9676:9;:15;9686:4;9676:15;;;;;;;;;;;;;;;;:46;;9668:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13350:36:::1;13369:4;13375:2;13379:6;13350:18;:36::i;:::-;13343:43;;9541:232:::0;13213:181;;;;;;;:::o;4450:93::-;4508:5;4533:2;4526:9;;4450:93;:::o;5823:215::-;5911:4;5928:80;5937:12;:10;:12::i;:::-;5951:7;5997:10;5960:11;:25;5972:12;:10;:12::i;:::-;5960:25;;;;;;;;;;;;;;;:34;5986:7;5960:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5928:8;:80::i;:::-;6026:4;6019:11;;5823:215;;;;:::o;12759:65::-;798:12;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12806:10:::1;:8;:10::i;:::-;12759:65::o:0;8629:91::-;8685:27;8691:12;:10;:12::i;:::-;8705:6;8685:5;:27::i;:::-;8629:91;:::o;2372:86::-;2419:4;2443:7;;;;;;;;;;;2436:14;;2372:86;:::o;13402:700::-;13467:15;13495:20;13518:23;13534:6;13518:15;:23::i;:::-;13495:46;;13552:24;13592:21;13615:20;13639:19;13651:6;13639:11;:19::i;:::-;13591:67;;;;13693:13;13677:12;:29;;13669:38;;;;;;13739:1;13724:12;:16;13720:305;;;13762:6;13757:257;13778:12;13774:1;:16;13757:257;;;13817:19;13838:14;13856:19;13865:6;13873:1;13856:8;:19::i;:::-;13816:59;;;;13913:15;13898:11;:30;13894:105;;13973:6;13953:26;;;;;:::i;:::-;;;13894:105;13797:217;;13792:3;;;;;:::i;:::-;;;;13757:257;;;;13720:305;14078:16;14062:13;14047:12;:28;;;;:::i;:::-;:47;;;;:::i;:::-;14037:57;;13484:618;;;;13402:700;;;:::o;875:148::-;798:12;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;982:1:::1;945:40;;966:6;;;;;;;;;;;945:40;;;;;;;;;;;;1013:1;996:6;;:19;;;;;;;;;;;;;;;;;;875:148::o:0;12937:101::-;798:12;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13006:24:::1;13023:6;13006:16;:24::i;:::-;;12937:101:::0;:::o;8728:365::-;8805:24;8832:32;8842:7;8851:12;:10;:12::i;:::-;8832:9;:32::i;:::-;8805:59;;8903:6;8883:16;:26;;8875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8981:58;8990:7;8999:12;:10;:12::i;:::-;9032:6;9013:16;:25;8981:8;:58::i;:::-;9063:22;9069:7;9078:6;9063:5;:22::i;:::-;8794:299;8728:365;;:::o;11213:217::-;11282:12;798;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11337:3:::1;11315:6;:12;11322:4;11315:12;;;;;;;;;;;;;;;:19;;;;:25;11307:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11379:18;11387:4;11393:3;11379:7;:18::i;:::-;;11418:4;11408:14;;11213:217:::0;;;;:::o;12690:61::-;798:12;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12735:8:::1;:6;:8::i;:::-;12690:61::o:0;652:87::-;698:7;725:6;;;;;;;;;;;718:13;;652:87;:::o;4338:104::-;4394:13;4427:7;4420:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4338:104;:::o;6046:415::-;6139:4;6156:24;6183:11;:25;6195:12;:10;:12::i;:::-;6183:25;;;;;;;;;;;;;;;:34;6209:7;6183:34;;;;;;;;;;;;;;;;6156:61;;6256:15;6236:16;:35;;6228:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6351:67;6360:12;:10;:12::i;:::-;6374:7;6402:15;6383:16;:34;6351:8;:67::i;:::-;6449:4;6442:11;;;6046:415;;;;:::o;13046:159::-;13147:4;13109:10;13121:6;9552:14;9569:6;:12;9576:4;9569:12;;;;;;;;;;;;;;;:19;;;;9552:36;;9612:1;9603:6;:10;9599:59;;;9630:16;9641:4;9630:10;:16::i;:::-;;9599:59;9716:6;9695:12;:18;9708:4;9695:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9676:9;:15;9686:4;9676:15;;;;;;;;;;;;;;;;:46;;9668:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13171:26:::1;13186:2;13190:6;13171:14;:26::i;:::-;13164:33;;9541:232:::0;13046:159;;;;;;:::o;12048:249::-;12118:19;12139:14;12171:20;12194:6;:14;12201:6;12194:14;;;;;;;;;;;;;;;12209:5;12194:21;;;;;;;;:::i;:::-;;;;;;;;;;;;12171:44;;;;;;;;;;;;;;;;;;;;;;;;;;;12240:4;:17;;;12226:31;;12277:4;:12;;;12268:21;;12160:137;12048:249;;;;;:::o;11438:290::-;11501:12;798;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11555:1:::1;11533:6;:12;11540:4;11533:12;;;;;;;;;;;;;;;:19;;;;:23;11525:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11602:9;11614:6;:12;11621:4;11614:12;;;;;;;;;;;;;;;:19;;;;11602:31;;11597:97;11639:1;11635;:5;11597:97;;;11662:20;11670:4;11680:1;11676;:5;;;;:::i;:::-;11662:7;:20::i;:::-;;11642:3;;;;;:::i;:::-;;;;11597:97;;;;11716:4;11706:14;;11438:290:::0;;;:::o;14110:130::-;14171:15;14209:23;14225:6;14209:15;:23::i;:::-;14199:33;;14110:130;;;:::o;12305:178::-;12363:14;12379;12414:12;:20;12427:6;12414:20;;;;;;;;;;;;;;;;12405:29;;12454:6;:14;12461:6;12454:14;;;;;;;;;;;;;;;:21;;;;12445:30;;12305:178;;;:::o;4985:151::-;5074:7;5101:11;:18;5113:5;5101:18;;;;;;;;;;;;;;;:27;5120:7;5101:27;;;;;;;;;;;;;;;;5094:34;;4985:151;;;;:::o;11736:304::-;11846:12;798;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11905:1:::1;11884:23;;:9;:23;;::::0;11876:32:::1;;;::::0;::::1;;11919:40;11929:10;11941:9;11952:6;11919:9;:40::i;:::-;11970:37;11976:9;11987:6;11995:11;11970:5;:37::i;:::-;;12028:4;12018:14;;11736:304:::0;;;;;:::o;10919:286::-;10969:12;10999:9;11011:1;10999:13;;10994:179;11018:6;:12;11025:4;11018:12;;;;;;;;;;;;;;;:19;;;;11014:1;:23;10994:179;;;11094:15;11063:6;:12;11070:4;11063:12;;;;;;;;;;;;;;;11076:1;11063:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;:46;11059:103;;;11130:16;11138:4;11144:1;11130:7;:16::i;:::-;;11059:103;11039:3;;;;;:::i;:::-;;;;10994:179;;;;11193:4;11183:14;;10919:286;;;:::o;10626:285::-;10722:12;798;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10779:6:::1;10755:9;:20:::0;10765:9:::1;10755:20;;;;;;;;;;;;;;;;:30;;10747:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10839:37;10845:9;10856:6;10864:11;10839:5;:37::i;:::-;;10899:4;10889:14;;10626:285:::0;;;;;:::o;1575:124::-;1638:11;1669:14;:22;1684:6;1669:22;;;;;;;;;;;;;;;;;;;;;;;;;1662:29;;1575:124;;;:::o;12832:97::-;798:12;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12899:22:::1;12914:6;12899:14;:22::i;:::-;;12832:97:::0;:::o;1031:235::-;798:12;:10;:12::i;:::-;787:23;;:7;:5;:7::i;:::-;:23;;;779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1140:1:::1;1120:22;;:8;:22;;::::0;1112:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1221:8;1192:38;;1213:6;;;;;;;;;;;1192:38;;;;;;;;;;;;1250:8;1241:6;;:17;;;;;;;;;;;;;;;;;;1031:235:::0;:::o;8431:125::-;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;8043:380::-;8196:1;8179:19;;:5;:19;;;8171:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8277:1;8258:21;;:7;:21;;;8250:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8361:6;8331:11;:18;8343:5;8331:18;;;;;;;;;;;;;;;:27;8350:7;8331:27;;;;;;;;;;;;;;;:36;;;;8399:7;8383:32;;8392:5;8383:32;;;8408:6;8383:32;;;;;;:::i;:::-;;;;;;;;8043:380;;;:::o;5321:494::-;5461:4;5478:36;5488:6;5496:9;5507:6;5478:9;:36::i;:::-;5527:24;5554:11;:19;5566:6;5554:19;;;;;;;;;;;;;;;:33;5574:12;:10;:12::i;:::-;5554:33;;;;;;;;;;;;;;;;5527:60;;5626:6;5606:16;:26;;5598:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5715:57;5724:6;5732:12;:10;:12::i;:::-;5765:6;5746:16;:25;5715:8;:57::i;:::-;5803:4;5796:11;;;5321:494;;;;;:::o;2796:120::-;2609:8;:6;:8::i;:::-;2601:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2865:5:::1;2855:7;;:15;;;;;;;;;;;;;;;;;;2886:22;2895:12;:10;:12::i;:::-;2886:22;;;;;;:::i;:::-;;;;;;;;2796:120::o:0;7501:534::-;7604:1;7585:21;;:7;:21;;;7577:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7657:49;7678:7;7695:1;7699:6;7657:20;:49::i;:::-;7719:22;7744:9;:18;7754:7;7744:18;;;;;;;;;;;;;;;;7719:43;;7799:6;7781:14;:24;;7773:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7920:6;7903:14;:23;7882:9;:18;7892:7;7882:18;;;;;;;;;;;;;;;:44;;;;7966:6;7950:12;;:22;;;;;;;:::i;:::-;;;;;;;;8016:1;7990:37;;7999:7;7990:37;;;8020:6;7990:37;;;;;;:::i;:::-;;;;;;;;7566:469;7501:534;;:::o;4667:127::-;4741:7;4768:9;:18;4778:7;4768:18;;;;;;;;;;;;;;;;4761:25;;4667:127;;;:::o;1935:224::-;2003:12;2036:16;2045:6;2036:8;:16::i;:::-;2028:25;;;;;;2089:5;2064:14;:22;2079:6;2064:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2119:6;2110:16;;;;;;;;;;;;2147:4;2137:14;;1935:224;;;:::o;10247:371::-;10311:12;10336:21;10360:6;:12;10367:4;10360:12;;;;;;;;;;;;;;;10373:5;10360:19;;;;;;;;:::i;:::-;;;;;;;;;;;;10336:43;;10432:4;:12;;;10411;:18;10424:4;10411:18;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;10390:12;:18;10403:4;10390:18;;;;;;;;;;;;;;;:54;;;;10467:4;10460:26;;;10473:4;:12;;;10460:26;;;;;;:::i;:::-;;;;;;;;10519:6;:12;10526:4;10519:12;;;;;;;;;;;;;;;10554:1;10532:6;:12;10539:4;10532:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;10519:37;;;;;;;;:::i;:::-;;;;;;;;;;;;10497:6;:12;10504:4;10497:12;;;;;;;;;;;;;;;10510:5;10497:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;10567:6;:12;10574:4;10567:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10606:4;10596:14;;10325:293;10247:371;;;;:::o;2670:118::-;2511:8;:6;:8::i;:::-;2510:9;2502:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2740:4:::1;2730:7;;:14;;;;;;;;;;;;;;;;;;2760:20;2767:12;:10;:12::i;:::-;2760:20;;;;;;:::i;:::-;;;;;;;;2670:118::o:0;4802:175::-;4888:4;4905:42;4915:12;:10;:12::i;:::-;4929:9;4940:6;4905:9;:42::i;:::-;4965:4;4958:11;;4802:175;;;;:::o;6469:678::-;6627:1;6609:20;;:6;:20;;;6601:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6711:1;6690:23;;:9;:23;;;6682:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6766:47;6787:6;6795:9;6806:6;6766:20;:47::i;:::-;6826:21;6850:9;:17;6860:6;6850:17;;;;;;;;;;;;;;;;6826:41;;6903:6;6886:13;:23;;6878:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7026:6;7010:13;:22;6990:9;:17;7000:6;6990:17;;;;;;;;;;;;;;;:42;;;;7080:6;7056:9;:20;7066:9;7056:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7121:9;7104:35;;7113:6;7104:35;;;7132:6;7104:35;;;;;;:::i;:::-;;;;;;;;6590:557;6469:678;;;:::o;9781:458::-;9865:12;9945;:18;9958:4;9945:18;;;;;;;;;;;;;;;;9936:6;:27;;;;:::i;:::-;9917:9;:15;9927:4;9917:15;;;;;;;;;;;;;;;;:46;;9895:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;10094:6;10073:12;:18;10086:4;10073:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;10052:12;:18;10065:4;10052:18;;;;;;;;;;;;;;;:48;;;;10111:6;:12;10118:4;10111:12;;;;;;;;;;;;;;;10129:29;;;;;;;;10138:11;10129:29;;;;10151:6;10129:29;;;10111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10180:4;10175:31;;;10186:6;10194:11;10175:31;;;;;;;:::i;:::-;;;;;;;;10227:4;10217:14;;9781:458;;;;;:::o;1707:220::-;1773:12;1807:16;1816:6;1807:8;:16::i;:::-;1806:17;1798:26;;;;;;1860:4;1835:14;:22;1850:6;1835:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1887:6;1880:14;;;;;;;;;;;;1915:4;1905:14;;1707:220;;;:::o;14248:187::-;2511:8;:6;:8::i;:::-;2510:9;2502:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14357:4:::1;1524:14;:22;1539:6;1524:22;;;;;;;;;;;;;;;;;;;;;;;;;1523:23;1515:32;;;::::0;::::1;;14383:44:::2;14410:4;14416:2;14420:6;14383:26;:44::i;:::-;2551:1:::1;14248:187:::0;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:332::-;5996:4;6034:2;6023:9;6019:18;6011:26;;6047:71;6115:1;6104:9;6100:17;6091:6;6047:71;:::i;:::-;6128:72;6196:2;6185:9;6181:18;6172:6;6128:72;:::i;:::-;5875:332;;;;;:::o;6213:474::-;6281:6;6289;6338:2;6326:9;6317:7;6313:23;6309:32;6306:119;;;6344:79;;:::i;:::-;6306:119;6464:1;6489:53;6534:7;6525:6;6514:9;6510:22;6489:53;:::i;:::-;6479:63;;6435:117;6591:2;6617:53;6662:7;6653:6;6642:9;6638:22;6617:53;:::i;:::-;6607:63;;6562:118;6213:474;;;;;:::o;6693:619::-;6770:6;6778;6786;6835:2;6823:9;6814:7;6810:23;6806:32;6803:119;;;6841:79;;:::i;:::-;6803:119;6961:1;6986:53;7031:7;7022:6;7011:9;7007:22;6986:53;:::i;:::-;6976:63;;6932:117;7088:2;7114:53;7159:7;7150:6;7139:9;7135:22;7114:53;:::i;:::-;7104:63;;7059:118;7216:2;7242:53;7287:7;7278:6;7267:9;7263:22;7242:53;:::i;:::-;7232:63;;7187:118;6693:619;;;;;:::o;7318:180::-;7366:77;7363:1;7356:88;7463:4;7460:1;7453:15;7487:4;7484:1;7477:15;7504:320;7548:6;7585:1;7579:4;7575:12;7565:22;;7632:1;7626:4;7622:12;7653:18;7643:81;;7709:4;7701:6;7697:17;7687:27;;7643:81;7771:2;7763:6;7760:14;7740:18;7737:38;7734:84;;7790:18;;:::i;:::-;7734:84;7555:269;7504:320;;;:::o;7830:180::-;7878:77;7875:1;7868:88;7975:4;7972:1;7965:15;7999:4;7996:1;7989:15;8016:191;8056:3;8075:20;8093:1;8075:20;:::i;:::-;8070:25;;8109:20;8127:1;8109:20;:::i;:::-;8104:25;;8152:1;8149;8145:9;8138:16;;8173:3;8170:1;8167:10;8164:36;;;8180:18;;:::i;:::-;8164:36;8016:191;;;;:::o;8213:176::-;8353:28;8349:1;8341:6;8337:14;8330:52;8213:176;:::o;8395:366::-;8537:3;8558:67;8622:2;8617:3;8558:67;:::i;:::-;8551:74;;8634:93;8723:3;8634:93;:::i;:::-;8752:2;8747:3;8743:12;8736:19;;8395:366;;;:::o;8767:419::-;8933:4;8971:2;8960:9;8956:18;8948:26;;9020:9;9014:4;9010:20;9006:1;8995:9;8991:17;8984:47;9048:131;9174:4;9048:131;:::i;:::-;9040:139;;8767:419;;;:::o;9192:182::-;9332:34;9328:1;9320:6;9316:14;9309:58;9192:182;:::o;9380:366::-;9522:3;9543:67;9607:2;9602:3;9543:67;:::i;:::-;9536:74;;9619:93;9708:3;9619:93;:::i;:::-;9737:2;9732:3;9728:12;9721:19;;9380:366;;;:::o;9752:419::-;9918:4;9956:2;9945:9;9941:18;9933:26;;10005:9;9999:4;9995:20;9991:1;9980:9;9976:17;9969:47;10033:131;10159:4;10033:131;:::i;:::-;10025:139;;9752:419;;;:::o;10177:233::-;10216:3;10239:24;10257:5;10239:24;:::i;:::-;10230:33;;10285:66;10278:5;10275:77;10272:103;;10355:18;;:::i;:::-;10272:103;10402:1;10395:5;10391:13;10384:20;;10177:233;;;:::o;10416:194::-;10456:4;10476:20;10494:1;10476:20;:::i;:::-;10471:25;;10510:20;10528:1;10510:20;:::i;:::-;10505:25;;10554:1;10551;10547:9;10539:17;;10578:1;10572:4;10569:11;10566:37;;;10583:18;;:::i;:::-;10566:37;10416:194;;;;:::o;10616:179::-;10756:31;10752:1;10744:6;10740:14;10733:55;10616:179;:::o;10801:366::-;10943:3;10964:67;11028:2;11023:3;10964:67;:::i;:::-;10957:74;;11040:93;11129:3;11040:93;:::i;:::-;11158:2;11153:3;11149:12;11142:19;;10801:366;;;:::o;11173:419::-;11339:4;11377:2;11366:9;11362:18;11354:26;;11426:9;11420:4;11416:20;11412:1;11401:9;11397:17;11390:47;11454:131;11580:4;11454:131;:::i;:::-;11446:139;;11173:419;;;:::o;11598:173::-;11738:25;11734:1;11726:6;11722:14;11715:49;11598:173;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:224::-;12714:34;12710:1;12702:6;12698:14;12691:58;12783:7;12778:2;12770:6;12766:15;12759:32;12574:224;:::o;12804:366::-;12946:3;12967:67;13031:2;13026:3;12967:67;:::i;:::-;12960:74;;13043:93;13132:3;13043:93;:::i;:::-;13161:2;13156:3;13152:12;13145:19;;12804:366;;;:::o;13176:419::-;13342:4;13380:2;13369:9;13365:18;13357:26;;13429:9;13423:4;13419:20;13415:1;13404:9;13400:17;13393:47;13457:131;13583:4;13457:131;:::i;:::-;13449:139;;13176:419;;;:::o;13601:180::-;13649:77;13646:1;13639:88;13746:4;13743:1;13736:15;13770:4;13767:1;13760:15;13787:171;13826:3;13849:24;13867:5;13849:24;:::i;:::-;13840:33;;13895:4;13888:5;13885:15;13882:41;;13903:18;;:::i;:::-;13882:41;13950:1;13943:5;13939:13;13932:20;;13787:171;;;:::o;13964:225::-;14104:34;14100:1;14092:6;14088:14;14081:58;14173:8;14168:2;14160:6;14156:15;14149:33;13964:225;:::o;14195:366::-;14337:3;14358:67;14422:2;14417:3;14358:67;:::i;:::-;14351:74;;14434:93;14523:3;14434:93;:::i;:::-;14552:2;14547:3;14543:12;14536:19;;14195:366;;;:::o;14567:419::-;14733:4;14771:2;14760:9;14756:18;14748:26;;14820:9;14814:4;14810:20;14806:1;14795:9;14791:17;14784:47;14848:131;14974:4;14848:131;:::i;:::-;14840:139;;14567:419;;;:::o;14992:179::-;15132:31;15128:1;15120:6;15116:14;15109:55;14992:179;:::o;15177:366::-;15319:3;15340:67;15404:2;15399:3;15340:67;:::i;:::-;15333:74;;15416:93;15505:3;15416:93;:::i;:::-;15534:2;15529:3;15525:12;15518:19;;15177:366;;;:::o;15549:419::-;15715:4;15753:2;15742:9;15738:18;15730:26;;15802:9;15796:4;15792:20;15788:1;15777:9;15773:17;15766:47;15830:131;15956:4;15830:131;:::i;:::-;15822:139;;15549:419;;;:::o;15974:223::-;16114:34;16110:1;16102:6;16098:14;16091:58;16183:6;16178:2;16170:6;16166:15;16159:31;15974:223;:::o;16203:366::-;16345:3;16366:67;16430:2;16425:3;16366:67;:::i;:::-;16359:74;;16442:93;16531:3;16442:93;:::i;:::-;16560:2;16555:3;16551:12;16544:19;;16203:366;;;:::o;16575:419::-;16741:4;16779:2;16768:9;16764:18;16756:26;;16828:9;16822:4;16818:20;16814:1;16803:9;16799:17;16792:47;16856:131;16982:4;16856:131;:::i;:::-;16848:139;;16575:419;;;:::o;17000:221::-;17140:34;17136:1;17128:6;17124:14;17117:58;17209:4;17204:2;17196:6;17192:15;17185:29;17000:221;:::o;17227:366::-;17369:3;17390:67;17454:2;17449:3;17390:67;:::i;:::-;17383:74;;17466:93;17555:3;17466:93;:::i;:::-;17584:2;17579:3;17575:12;17568:19;;17227:366;;;:::o;17599:419::-;17765:4;17803:2;17792:9;17788:18;17780:26;;17852:9;17846:4;17842:20;17838:1;17827:9;17823:17;17816:47;17880:131;18006:4;17880:131;:::i;:::-;17872:139;;17599:419;;;:::o;18024:227::-;18164:34;18160:1;18152:6;18148:14;18141:58;18233:10;18228:2;18220:6;18216:15;18209:35;18024:227;:::o;18257:366::-;18399:3;18420:67;18484:2;18479:3;18420:67;:::i;:::-;18413:74;;18496:93;18585:3;18496:93;:::i;:::-;18614:2;18609:3;18605:12;18598:19;;18257:366;;;:::o;18629:419::-;18795:4;18833:2;18822:9;18818:18;18810:26;;18882:9;18876:4;18872:20;18868:1;18857:9;18853:17;18846:47;18910:131;19036:4;18910:131;:::i;:::-;18902:139;;18629:419;;;:::o;19054:170::-;19194:22;19190:1;19182:6;19178:14;19171:46;19054:170;:::o;19230:366::-;19372:3;19393:67;19457:2;19452:3;19393:67;:::i;:::-;19386:74;;19469:93;19558:3;19469:93;:::i;:::-;19587:2;19582:3;19578:12;19571:19;;19230:366;;;:::o;19602:419::-;19768:4;19806:2;19795:9;19791:18;19783:26;;19855:9;19849:4;19845:20;19841:1;19830:9;19826:17;19819:47;19883:131;20009:4;19883:131;:::i;:::-;19875:139;;19602:419;;;:::o;20027:220::-;20167:34;20163:1;20155:6;20151:14;20144:58;20236:3;20231:2;20223:6;20219:15;20212:28;20027:220;:::o;20253:366::-;20395:3;20416:67;20480:2;20475:3;20416:67;:::i;:::-;20409:74;;20492:93;20581:3;20492:93;:::i;:::-;20610:2;20605:3;20601:12;20594:19;;20253:366;;;:::o;20625:419::-;20791:4;20829:2;20818:9;20814:18;20806:26;;20878:9;20872:4;20868:20;20864:1;20853:9;20849:17;20842:47;20906:131;21032:4;20906:131;:::i;:::-;20898:139;;20625:419;;;:::o;21050:221::-;21190:34;21186:1;21178:6;21174:14;21167:58;21259:4;21254:2;21246:6;21242:15;21235:29;21050:221;:::o;21277:366::-;21419:3;21440:67;21504:2;21499:3;21440:67;:::i;:::-;21433:74;;21516:93;21605:3;21516:93;:::i;:::-;21634:2;21629:3;21625:12;21618:19;;21277:366;;;:::o;21649:419::-;21815:4;21853:2;21842:9;21838:18;21830:26;;21902:9;21896:4;21892:20;21888:1;21877:9;21873:17;21866:47;21930:131;22056:4;21930:131;:::i;:::-;21922:139;;21649:419;;;:::o;22074:180::-;22122:77;22119:1;22112:88;22219:4;22216:1;22209:15;22243:4;22240:1;22233:15;22260:166;22400:18;22396:1;22388:6;22384:14;22377:42;22260:166;:::o;22432:366::-;22574:3;22595:67;22659:2;22654:3;22595:67;:::i;:::-;22588:74;;22671:93;22760:3;22671:93;:::i;:::-;22789:2;22784:3;22780:12;22773:19;;22432:366;;;:::o;22804:419::-;22970:4;23008:2;22997:9;22993:18;22985:26;;23057:9;23051:4;23047:20;23043:1;23032:9;23028:17;23021:47;23085:131;23211:4;23085:131;:::i;:::-;23077:139;;22804:419;;;:::o;23229:224::-;23369:34;23365:1;23357:6;23353:14;23346:58;23438:7;23433:2;23425:6;23421:15;23414:32;23229:224;:::o;23459:366::-;23601:3;23622:67;23686:2;23681:3;23622:67;:::i;:::-;23615:74;;23698:93;23787:3;23698:93;:::i;:::-;23816:2;23811:3;23807:12;23800:19;;23459:366;;;:::o;23831:419::-;23997:4;24035:2;24024:9;24020:18;24012:26;;24084:9;24078:4;24074:20;24070:1;24059:9;24055:17;24048:47;24112:131;24238:4;24112:131;:::i;:::-;24104:139;;23831:419;;;:::o;24256:222::-;24396:34;24392:1;24384:6;24380:14;24373:58;24465:5;24460:2;24452:6;24448:15;24441:30;24256:222;:::o;24484:366::-;24626:3;24647:67;24711:2;24706:3;24647:67;:::i;:::-;24640:74;;24723:93;24812:3;24723:93;:::i;:::-;24841:2;24836:3;24832:12;24825:19;;24484:366;;;:::o;24856:419::-;25022:4;25060:2;25049:9;25045:18;25037:26;;25109:9;25103:4;25099:20;25095:1;25084:9;25080:17;25073:47;25137:131;25263:4;25137:131;:::i;:::-;25129:139;;24856:419;;;:::o;25281:225::-;25421:34;25417:1;25409:6;25405:14;25398:58;25490:8;25485:2;25477:6;25473:15;25466:33;25281:225;:::o;25512:366::-;25654:3;25675:67;25739:2;25734:3;25675:67;:::i;:::-;25668:74;;25751:93;25840:3;25751:93;:::i;:::-;25869:2;25864:3;25860:12;25853:19;;25512:366;;;:::o;25884:419::-;26050:4;26088:2;26077:9;26073:18;26065:26;;26137:9;26131:4;26127:20;26123:1;26112:9;26108:17;26101:47;26165:131;26291:4;26165:131;:::i;:::-;26157:139;;25884:419;;;:::o;26309:237::-;26449:34;26445:1;26437:6;26433:14;26426:58;26518:20;26513:2;26505:6;26501:15;26494:45;26309:237;:::o;26552:366::-;26694:3;26715:67;26779:2;26774:3;26715:67;:::i;:::-;26708:74;;26791:93;26880:3;26791:93;:::i;:::-;26909:2;26904:3;26900:12;26893:19;;26552:366;;;:::o;26924:419::-;27090:4;27128:2;27117:9;27113:18;27105:26;;27177:9;27171:4;27167:20;27163:1;27152:9;27148:17;27141:47;27205:131;27331:4;27205:131;:::i;:::-;27197:139;;26924:419;;;:::o

Swarm Source

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