Contract 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd 7

 

Contract Overview

Balance:
0.000867660949433626 ETH

ETH Value:
$2.68 (@ $3,092.33/ETH)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd9053390402442666325e55ded68bc1e605f2f295eb45525278a37580cc0c0c2Approve962281252023-05-31 4:35:47324 days 10 hrs ago0x82b5e9207bb79c003efb3e94793fd6a14563dea3 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000052840.1
0xb18fe9b934f43ad5287b6cb061d93344c0c7ed617a060cfe19fe713eac715dddApprove793986882023-04-11 16:31:51373 days 23 hrs ago0xceba4aa57cddc4988cca59f458c5062b7ab246c1 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00007878 0.1
0xd912333ee7c821858bb028e766232f9dc0f21efc5c70f8b1bca779aea51c1f2eApprove787851862023-04-09 21:28:35375 days 18 hrs ago0x98fd6d4fb7095f9034938d6017b131ae1336aa69 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.0000402 0.1
0x730f0f42722fb40821be0675136a20f17c0308810f181587b0e78cdd412fd031Approve787530732023-04-09 19:12:10375 days 20 hrs ago0x82b5e9207bb79c003efb3e94793fd6a14563dea3 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000039870.1
0x7615f08b88acd20eb370e11786752385a1ba54122fa625293507e77c148e2591Approve787064022023-04-09 15:56:40375 days 23 hrs ago0x6bc7f96f2a53c7a5052b9e4f1ad2540e267fe78d IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004084 0.1
0xc5632f8bb4fa35722fdf0cfc61c694ffeb6cb3cf697e176aaf1cbafc8d913a95Approve787044682023-04-09 15:48:38375 days 23 hrs ago0x7a234583bdac3d4c34b4875a8fb750f96fd63958 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.0000382 0.1
0x50e5c41b06c92f240d0134a5a64b2017a1ad6f7d7ef5ac4b49c12b6c379ea48cApprove786930922023-04-09 15:01:36376 days 30 mins ago0x66de14956b4b3310c5c2ff65e2e7be324eb4b937 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004219 0.1
0x7dbd877b26f2bd2d1021fc2bb4b461b1071ffdb9eb46b826c7250f4fac5110e0Approve785961242023-04-09 8:20:19376 days 7 hrs ago0x9683f91f85f34db1fa2c49982104dad8ddf9379c IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00003901 0.1
0xc08c6fd3b9af81a6449b0d796c05afa73bb26cf321dc9a3230440702a37aa8caApprove746219042023-03-28 16:37:34387 days 22 hrs ago0x619afd2560c543ac0e95d58939503b5f3a76f67f IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00006689 0.1
0xb861c81be4e58020b82ab7926f1ced18d9b6c1b57f13934b0d40d7d6e01852ebApprove740048252023-03-26 21:46:43389 days 17 hrs ago0x2fa981bbe79a85dc982c6ea04fbccbc3d6437143 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000042730.1
0x99f74bf46763dbd4fbefb2a93105f6ecb7cf66779635882d5d3d7894298850bcApprove739939782023-03-26 21:01:04389 days 18 hrs ago0xceba4aa57cddc4988cca59f458c5062b7ab246c1 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004041 0.1
0xe1e7f57f44cb07c83fd93f5bd0eb8448f7be7ea520946a01fae059353d478e3bApprove736392732023-03-25 20:16:12390 days 19 hrs ago0xc3fe82917b0fed3f1f8b41f620863736a517c38d IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000043070.1
0x3f30dd57747cf3a4be3d4a196088c54fc44b776b8879af1f2c7231836153c230Approve736382622023-03-25 20:12:00390 days 19 hrs ago0x5dd2831681197df32c7dec602a8620a16911fb7b IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000035770.1
0xf550a2d3273f46e0f05b6fb6e2d2792e592c1d63aab057c74664f886ea0e6efcApprove736369432023-03-25 20:06:31390 days 19 hrs ago0x92799b57f2b43be38bb3e0fa09db0abc3e45a8df IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000033920.1
0xa2df7b99613f9f1f9d0c42b12c887c26299fc6c2f064def97505f436bc397084Approve736367402023-03-25 20:05:41390 days 19 hrs ago0xf746c10a6c578f0d5d401b13beb762b1ad056584 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000033920.1
0x40199398bb612771d6bf0b3d9853f37e2fbb71c0f41b635bee34debc7dd14eb0Approve736350742023-03-25 19:58:45390 days 19 hrs ago0xffac0adab1ca8e44a13bab8a1dfa028e5d73e7ae IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.000035050.1
0x92e198c60d293bf61cf9bae68c220fc980e337b4f87f6dd06d4238aad3be84bcApprove735887312023-03-25 16:45:41390 days 22 hrs ago0xd626aa83963d63ad1cd86312f5c329ead3236e84 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004219 0.1
0x5dab2341fe3cc33428dc0084f58f61baad814c9267a4f55367e5610ca1268ae7Approve735886852023-03-25 16:45:29390 days 22 hrs ago0xd626aa83963d63ad1cd86312f5c329ead3236e84 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004418 0.1
0xf14307622071b0c3d9655465fba5fe66a3bbaa4ea7b6e95eb3cb912534ab3d00Approve735880842023-03-25 16:42:58390 days 22 hrs ago0x145bc5563760605d4e8b64e9c0f571d26a6a080d IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004294 0.1
0x4d63201fae14398adfe41238513f683b2e31b1cf02f9ecc55b419f7ba6e033a7Approve735594382023-03-25 14:44:29391 days 47 mins ago0xf811acf290bd92992e3533aa5bbe787220217d6a IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004291 0.1
0xb2a9ef2e5637434c4ad6d945260a26e9213602d88030f631b0bc7c172f6f0bb4Approve735543952023-03-25 14:23:44391 days 1 hr ago0x5f6a829ec14a797ea3f88284785e9cd04a3eccc4 IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00004816 0.1
0xf47d1c426a947c332b9e72cab89f2e308291cdaa50c8f99cd470add7c5067398Approve735537182023-03-25 14:20:59391 days 1 hr ago0xd209520a616df8158751d6f81b046002be56814f IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00003956 0.1
0x607c3483f442bd241aacd11fe409b9dae154ced2a86e2de63958eeaaa389d1a8Approve735444582023-03-25 13:42:44391 days 1 hr ago0x00ab4debdcfb18261d3116a5167e1974dc427f8c IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00003275 0.1
0xc8b4c641bbbe7c3338e4bbf6f844628bc29bc2d70a68db21585f49823652aef3Approve735442682023-03-25 13:41:56391 days 1 hr ago0x00ab4debdcfb18261d3116a5167e1974dc427f8c IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00003474 0.1
0xe5e73351c5017ea2d832e5431f5117132782cedf1b007be1e56e094ab6ef57b7Approve735438932023-03-25 13:40:22391 days 1 hr ago0x00ab4debdcfb18261d3116a5167e1974dc427f8c IN  0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0 ETH0.00003287 0.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9299258226b94451dee66a30199fad399f5d8719a7070201253cd101c2844a14735540532023-03-25 14:22:18391 days 1 hr ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0xceba4aa57cddc4988cca59f458c5062b7ab246c10.000684899554933773 ETH
0x9299258226b94451dee66a30199fad399f5d8719a7070201253cd101c2844a14735540532023-03-25 14:22:18391 days 1 hr ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd 0x2492d3f2fd5c754ea93400a85b9367d187787e670.000637701415422126 ETH
0x9299258226b94451dee66a30199fad399f5d8719a7070201253cd101c2844a14735540532023-03-25 14:22:18391 days 1 hr ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd SushiSwap: Router0.000137748995575043 ETH
0x9299258226b94451dee66a30199fad399f5d8719a7070201253cd101c2844a14735540532023-03-25 14:22:18391 days 1 hr ago SushiSwap: Router 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0.001460349965931782 ETH
0x0950734e7361130885a083b57b7160368483e10fe65faaa058490e7402b4c2a9734952082023-03-25 10:18:26391 days 5 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0xceba4aa57cddc4988cca59f458c5062b7ab246c10.001076447458207428 ETH
0x0950734e7361130885a083b57b7160368483e10fe65faaa058490e7402b4c2a9734952082023-03-25 10:18:26391 days 5 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd 0x2492d3f2fd5c754ea93400a85b9367d187787e670.000906597130944704 ETH
0x0950734e7361130885a083b57b7160368483e10fe65faaa058490e7402b4c2a9734952082023-03-25 10:18:26391 days 5 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd SushiSwap: Router0.000264333073324693 ETH
0x0950734e7361130885a083b57b7160368483e10fe65faaa058490e7402b4c2a9734952082023-03-25 10:18:26391 days 5 hrs ago SushiSwap: Router 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0.002247377662476826 ETH
0x54c015c790ba12bef1e4283269f93403bf2e86ba568262d27023c996af18ab52733203632023-03-24 22:14:13391 days 17 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0xceba4aa57cddc4988cca59f458c5062b7ab246c10.00159315806868555 ETH
0x54c015c790ba12bef1e4283269f93403bf2e86ba568262d27023c996af18ab52733203632023-03-24 22:14:13391 days 17 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd 0x2492d3f2fd5c754ea93400a85b9367d187787e670.00107838784811733 ETH
0x54c015c790ba12bef1e4283269f93403bf2e86ba568262d27023c996af18ab52733203632023-03-24 22:14:13391 days 17 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd SushiSwap: Router0.000522911455042464 ETH
0x54c015c790ba12bef1e4283269f93403bf2e86ba568262d27023c996af18ab52733203632023-03-24 22:14:13391 days 17 hrs ago SushiSwap: Router 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0.003194457371847128 ETH
0xb3cb0b6785ef23382f0199d90a33ed58088dc51d4fc9c7e27a276cc72d3e2b31732960222023-03-24 20:34:10391 days 18 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0xceba4aa57cddc4988cca59f458c5062b7ab246c10.001636771125871235 ETH
0xb3cb0b6785ef23382f0199d90a33ed58088dc51d4fc9c7e27a276cc72d3e2b31732960222023-03-24 20:34:10391 days 18 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd 0x2492d3f2fd5c754ea93400a85b9367d187787e670.001119884612850303 ETH
0xb3cb0b6785ef23382f0199d90a33ed58088dc51d4fc9c7e27a276cc72d3e2b31732960222023-03-24 20:34:10391 days 18 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd SushiSwap: Router0.000531238444130928 ETH
0xb3cb0b6785ef23382f0199d90a33ed58088dc51d4fc9c7e27a276cc72d3e2b31732960222023-03-24 20:34:10391 days 18 hrs ago SushiSwap: Router 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0.003287894182852467 ETH
0x63175998adb8675b92a5d295e0b72d6cecc669b1b8f4e85b1e40d687becc75cb732888992023-03-24 20:04:54391 days 19 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0xceba4aa57cddc4988cca59f458c5062b7ab246c10.001705297904688143 ETH
0x63175998adb8675b92a5d295e0b72d6cecc669b1b8f4e85b1e40d687becc75cb732888992023-03-24 20:04:54391 days 19 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd 0x2492d3f2fd5c754ea93400a85b9367d187787e670.001470916976974085 ETH
0x63175998adb8675b92a5d295e0b72d6cecc669b1b8f4e85b1e40d687becc75cb732888992023-03-24 20:04:54391 days 19 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd SushiSwap: Router0.000401406781288925 ETH
0x63175998adb8675b92a5d295e0b72d6cecc669b1b8f4e85b1e40d687becc75cb732888992023-03-24 20:04:54391 days 19 hrs ago SushiSwap: Router 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0.003577621662951155 ETH
0x0b925292b77d3c909f67e29db2d81b9e95bfa6204aa09866eaf8cee2a26cb082732887992023-03-24 20:04:28391 days 19 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0xceba4aa57cddc4988cca59f458c5062b7ab246c10.001947498296762371 ETH
0x0b925292b77d3c909f67e29db2d81b9e95bfa6204aa09866eaf8cee2a26cb082732887992023-03-24 20:04:28391 days 19 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd 0x2492d3f2fd5c754ea93400a85b9367d187787e670.001621638003084126 ETH
0x0b925292b77d3c909f67e29db2d81b9e95bfa6204aa09866eaf8cee2a26cb082732887992023-03-24 20:04:28391 days 19 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd SushiSwap: Router0.000487513196280663 ETH
0x0b925292b77d3c909f67e29db2d81b9e95bfa6204aa09866eaf8cee2a26cb082732887992023-03-24 20:04:28391 days 19 hrs ago SushiSwap: Router 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0.004056649496129424 ETH
0x51680c3c4e957ca1e7b36bb7d90b6061d481f801cf72bb624d22ec3f1568303a732852912023-03-24 19:50:02391 days 19 hrs ago 0x646fb05c24a0155e8f3d4e81f565a0cfd8f972bd0xceba4aa57cddc4988cca59f458c5062b7ab246c10.003032228016286874 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ARBIANS

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-03-24
*/

// SPDX-License-Identifier: MIT

/**
Telegram: https://t.me/arbiansportal
Twitter: https://twitter.com/arbianscoin
                                
*/

pragma solidity ^0.8.10;

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

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

interface IERC20Extended {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

contract Ownable is Context {
    address private _owner;

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

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

    function owner() public view 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 = payable(address(0));
    }

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

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;

    function claimDividend(address _user) external;

    function getPaidEarnings(address shareholder)
        external
        view
        returns (uint256);

    function getUnpaidEarnings(address shareholder)
        external
        view
        returns (uint256);

    function totalDistributed() external view returns (uint256);
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IERC20Extended public Arbitrum =
        IERC20Extended(0x912CE59144191C1204E64559FE8253a0e49E6548);
    IDexRouter public router;

    address[] public shareholders;
    mapping(address => uint256) public shareholderIndexes;
    mapping(address => uint256) public shareholderClaims;

    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10**36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10**Arbitrum.decimals());

    uint256 currentIndex;

    bool initialized;
    modifier initializer() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == token);
        _;
    }

    constructor(address router_) {
        token = msg.sender;
        router = IDexRouter(router_);
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount)
        external
        override
        onlyToken
    {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = Arbitrum.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(Arbitrum);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = Arbitrum.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            Arbitrum.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                   .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function claimDividend(address _user) external {
        distributeDividend(_user);
    }

    function getPaidEarnings(address shareholder)
        public
        view
        returns (uint256)
    {
        return shares[shareholder].totalRealised;
    }

    function getUnpaidEarnings(address shareholder)
        public
        view
        returns (uint256)
    {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

// main contract
contract ARBIANS is IERC20Extended, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Arbians";
    string private constant _symbol = "$ARBN";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1_000_000 * 10**_decimals;

    address public Arbitrum = 0x912CE59144191C1204E64559FE8253a0e49E6548;
    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public router;
    address public pair;
    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 _reflectionBuyFee = 3_00;
    uint256 _liquidityBuyFee = 2_00;
    uint256 _marketingBuyFee = 9_00;

    uint256 _reflectionSellFee = 3_00;
    uint256 _liquiditySellFee = 2_00;
    uint256 _marketingSellFee = 9_00;

    uint256 _reflectionFeeCount;
    uint256 _liquidityFeeCount;
    uint256 _marketingFeeCount;

    uint256 public totalBuyFee = 14_00;
    uint256 public totalSellFee = 14_00;
    uint256 public feeDenominator = 100_00;

    DividendDistributor public distributor;
    uint256 public distributorGas = 500000;

    uint256 public maxTxnAmount = _totalSupply * 2 / 100;
    uint256 public maxWalletAmount = _totalSupply * 2 / 100;
    uint256 public launchedAt;
    uint256 public snipingTime = 60 seconds;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isLimitExmpt;
    mapping(address => bool) public isWalletExmpt;
    mapping(address => bool) public isDividendExempt;
    mapping(address => bool) public isBot;

    uint256 public swapThreshold = _totalSupply / 1000;
    bool public swapEnabled;
    bool public trading;
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

    constructor() Ownable() {
        address router_ = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506;
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xCEBa4Aa57CDdc4988CCA59F458c5062b7AB246c1;

        router = IDexRouter(router_);
        pair = IDexFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        distributor = new DividendDistributor(router_);

        isFeeExempt[autoLiquidityReceiver] = true;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(router)] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        isLimitExmpt[autoLiquidityReceiver] = true;
        isLimitExmpt[marketingFeeReceiver] = true;
        isLimitExmpt[address(this)] = true;
        isLimitExmpt[address(router)] = true;

        isWalletExmpt[autoLiquidityReceiver] = true;
        isWalletExmpt[marketingFeeReceiver] = true;
        isWalletExmpt[pair] = true;
        isWalletExmpt[address(router)] = true;
        isWalletExmpt[address(this)] = true;

        _allowances[address(this)][address(router)] = _totalSupply;
        _allowances[address(this)][address(pair)] = _totalSupply;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

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

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != _totalSupply) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(!isBot[sender], "Bot detected");
        if (!isLimitExmpt[sender] && !isLimitExmpt[recipient]) {
            require(amount <= maxTxnAmount, "Max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    pair != sender && pair != recipient,
                    "Trading is disable"
                );
            }
            // anti snipper bot
            if (
                block.timestamp < launchedAt + snipingTime &&
                sender != address(router)
            ) {
                if (pair == sender) {
                    isBot[recipient] = true;
                } else if (pair == recipient) {
                    isBot[sender] = true;
                }
            }
        }

        if (!isWalletExmpt[recipient]) {
            require(
                balanceOf(recipient).add(amount) <= maxWalletAmount,
                "Max Wallet limit exceeds"
            );
        }

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (shouldSwapBack()) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived;
        if (
            isFeeExempt[sender] ||
            isFeeExempt[recipient] ||
            (sender != pair && recipient != pair)
        ) {
            amountReceived = amount;
        } else {
            uint256 feeAmount;
            if (sender == pair) {
                feeAmount = amount.mul(totalBuyFee).div(feeDenominator);
                amountReceived = amount.sub(feeAmount);
                takeFee(sender, feeAmount);
                setBuyAccFee(amount);
            } else {
                feeAmount = amount.mul(totalSellFee).div(feeDenominator);
                amountReceived = amount.sub(feeAmount);
                takeFee(sender, feeAmount);
                setSellAccFee(amount);
            }
        }

        _balances[recipient] = _balances[recipient].add(amountReceived);

        if (!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
        if (!isDividendExempt[recipient]) {
            try
                distributor.setShare(recipient, _balances[recipient])
            {} catch {}
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 feeAmount) internal {
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
    }

    function setBuyAccFee(uint256 _amount) internal {
        _liquidityFeeCount += _amount.mul(_liquidityBuyFee).div(feeDenominator);
        _reflectionFeeCount += _amount.mul(_reflectionBuyFee).div(
            feeDenominator
        );
        _marketingFeeCount += _amount.mul(_marketingBuyFee).div(feeDenominator);
    }

    function setSellAccFee(uint256 _amount) internal {
        _liquidityFeeCount += _amount.mul(_liquiditySellFee).div(
            feeDenominator
        );
        _reflectionFeeCount += _amount.mul(_reflectionSellFee).div(
            feeDenominator
        );
        _marketingFeeCount += _amount.mul(_marketingSellFee).div(
            feeDenominator
        );
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 totalFee = _liquidityFeeCount.add(_reflectionFeeCount).add(
            _marketingFeeCount
        );

        uint256 amountToLiquify = swapThreshold
            .mul(_liquidityFeeCount)
            .div(totalFee)
            .div(2);

        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
        _allowances[address(this)][address(router)] = _totalSupply;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(_liquidityFeeCount.div(2));

        uint256 amountBNBLiquidity = amountBNB
            .mul(_liquidityFeeCount)
            .div(totalBNBFee)
            .div(2);

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }

        uint256 amountBNBReflection = amountBNB.mul(_reflectionFeeCount).div(
            totalBNBFee
        );
        if (amountBNBReflection > 0) {
            try distributor.deposit{value: amountBNBReflection}() {} catch {}
        }

        uint256 amountBNBMarketing = amountBNB.mul(_marketingFeeCount).div(
            totalBNBFee
        );

        if (amountBNBMarketing > 0) {
            payable(marketingFeeReceiver).transfer(amountBNBMarketing);
        }

        _liquidityFeeCount = 0;
        _reflectionFeeCount = 0;
        _marketingFeeCount = 0;
    }

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }

    function getPaidDividend(address shareholder)
        public
        view
        returns (uint256)
    {
        return distributor.getPaidEarnings(shareholder);
    }

    function getUnpaidDividend(address shareholder)
        external
        view
        returns (uint256)
    {
        return distributor.getUnpaidEarnings(shareholder);
    }

    function getTotalDistributedDividend() external view returns (uint256) {
        return distributor.totalDistributed();
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function enableTrading() external onlyOwner {
        require(!trading, "Already enabled");
        trading = true;
        swapEnabled = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(uint256 amount) external onlyOwner {
        payable(owner()).transfer(amount);
    }

    function setMaxTxnAmount(uint256 amount) external onlyOwner {
        require(amount >= _totalSupply / 10000);
        maxTxnAmount = amount;
    }

    function setMaxWalletAmount(uint256 amount) external onlyOwner {
        require(amount >= _totalSupply / 10000);
        maxWalletAmount = amount;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
            isLimitExmpt[holder] = exempt;
    }

    function setIsWalletExempt(address holder, bool exempt) external onlyOwner {
        isWalletExmpt[holder] = exempt;
    }

    function removeBots(address account) external onlyOwner {
            isBot[account] = false;
    }

    function setBuyFees(
        uint256 _reflectionFee,
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _feeDenominator
    ) public onlyOwner {
        _reflectionBuyFee = _reflectionFee;
        _liquidityBuyFee = _liquidityFee;
        _marketingBuyFee = _marketingFee;
        totalBuyFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(
            totalBuyFee <= feeDenominator.mul(5).div(100),
            "Can't be greater than 15%"
        );
    }

    function setSellFees(
        uint256 _liquidityFee,
        uint256 _reflectionFee,
        uint256 _marketingFee,
        uint256 _feeDenominator
    ) public onlyOwner {
        _liquiditySellFee = _liquidityFee;
        _reflectionSellFee = _reflectionFee;
        _marketingSellFee = _marketingFee;
        totalSellFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(
            totalSellFee <= feeDenominator.mul(5).div(100),
            "Can't be greater than 15%"
        );
    }

    function setFeeReceivers(
        address _autoLiquidityReceiver,
        address _marketingFeeReceiver
    ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount)
        external
        onlyOwner
    {
        require(swapThreshold > 0);
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000, "Gas must be lower than 750000");
        distributorGas = gas;
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Arbitrum","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributedDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191673912ce59144191c1204e64559fe8253a0e49e654817905561012c600681905560c8600781905561038460088190556009928355600a918255600b55610578600f8190556010556127106011556207a120601355606491620000749162000727565b6200008390620f42406200073f565b620000909060026200073f565b6200009c919062000761565b6014556064620000af6009600a62000727565b620000be90620f42406200073f565b620000cb9060026200073f565b620000d7919062000761565b601555603c6017556103e8620000f06009600a62000727565b620000ff90620f42406200073f565b6200010b919062000761565b601f553480156200011b57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048054336001600160a01b03199182161782556005805473ceba4aa57cddc4988cca59f458c5062b7ab246c190831617905560028054731b02da8cb0d097eb8d57a175b88c7d8b479975069216821790556040805163c45a015560e01b815290519192839263c45a01559280830192602092918290030181865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000784565b6001600160a01b031663c9c6539630600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000298919062000784565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030c919062000784565b600380546001600160a01b0319166001600160a01b039290921691909117905560405181906200033c9062000604565b6001600160a01b039091168152602001604051809103906000f08015801562000369573d6000803e3d6000fd5b50601280546001600160a01b0319166001600160a01b039283161790556004805482166000908152601a60209081526040808320805460ff19908116600190811790925560058054881686528386208054831684179055308087528487208054841685179055600380548a168852601d87528588208054851686179055600280548b168952868920805486168717905582895286892080548616871790557ffa758cef5bd0db441ee78e87b9ceab03f7b5d7b78ff593b3cf8150611abcb99980548616871790557f0a51588b1664495f089dd83d2d26f247920f94a57a4a09f20cf068efc8f82bd4805486168717905589548b168952601b8852868920805486168717905583548b1689528689208054861687179055828952868920805486168717905580548b168952868920805486168717905598548a168852601c909652848720805484168517905590548816865283862080548316841790559354871685528285208054821683179055945490951683528083208054851686179055908252902080549091169091179055620005056009600a62000727565b6200051490620f42406200073f565b3060009081526019602090815260408083206002546001600160a01b03168452909152902055620005486009600a62000727565b6200055790620f42406200073f565b3060009081526019602090815260408083206003546001600160a01b031684529091529020556200058b6009600a62000727565b6200059a90620f42406200073f565b33600081815260186020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005dd6009600a62000727565b620005ec90620f42406200073f565b60405190815260200160405180910390a350620007af565b6111eb806200301883390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006695781600019048211156200064d576200064d62000612565b808516156200065b57918102915b93841c93908002906200062d565b509250929050565b600082620006825750600162000721565b81620006915750600062000721565b8160018114620006aa5760028114620006b557620006d5565b600191505062000721565b60ff841115620006c957620006c962000612565b50506001821b62000721565b5060208310610133831016604e8410600b8410161715620006fa575081810a62000721565b62000706838362000628565b80600019048211156200071d576200071d62000612565b0290505b92915050565b60006200073860ff84168362000671565b9392505050565b60008160001904831182151516156200075c576200075c62000612565b500290565b6000826200077f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200079757600080fd5b81516001600160a01b03811681146200073857600080fd5b61285980620007bf6000396000f3fe6080604052600436106103395760003560e01c806386cb8fb1116101ab578063bfe10928116100f7578063e96fada211610095578063f2fde38b1161006f578063f2fde38b146109d7578063f708a64f146109f7578063f887ea4014610a17578063fc899bdc14610a3757600080fd5b8063e96fada214610983578063ec44acf2146109a3578063f0fc6bca146109c257600080fd5b8063d962cf58116100d1578063d962cf58146108dd578063dd62ed3e146108fd578063df20fd4914610943578063e41f9efe1461096357600080fd5b8063bfe1092814610887578063ca33e64c146108a7578063cf46f24c146108c757600080fd5b80639d1944f511610164578063a8aa1b311161013e578063a8aa1b311461081b578063a9059cbb1461083b578063aa4bde281461085b578063bf56b3711461087157600080fd5b80639d1944f5146107c55780639d9241ec146107e5578063a4b45c00146107fb57600080fd5b806386cb8fb1146106f457806386db0c0514610724578063893c9f2b146107445780638a8c523c146107645780638da5cb5b1461077957806395d89b411461079757600080fd5b80634355855a116102855780636c5b285511610223578063715018a6116101fd578063715018a614610671578063731f7ec01461068657806374010ece146106be5780637d99c66d146106de57600080fd5b80636c5b2855146106015780636ddd17131461062157806370a082311461063b57600080fd5b8063571ac8b01161025f578063571ac8b01461059557806359b107b9146105b557806360e71962146105cb578063658d4b7f146105e157600080fd5b80634355855a1461051557806349bc3feb14610545578063540b8a271461056557600080fd5b80631961cee2116102f25780632d48e896116102cc5780632d48e89614610479578063313ce567146104995780633bbac579146104b55780633f4218e0146104e557600080fd5b80631961cee21461042457806323b872dd1461043957806327a14fc21461045957600080fd5b80630445b6671461034557806306fdde031461036e578063095ea7b3146103a7578063178d9b8e146103d7578063180b0d7e146103f957806318160ddd1461040f57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b601f5481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b5060408051808201909152600781526641726269616e7360c81b60208201525b6040516103659190612387565b3480156103b357600080fd5b506103c76103c23660046123f4565b610a57565b6040519015158152602001610365565b3480156103e357600080fd5b506103f76103f2366004612420565b610ac4565b005b34801561040557600080fd5b5061035b60115481565b34801561041b57600080fd5b5061035b610b8b565b34801561043057600080fd5b5061035b610bab565b34801561044557600080fd5b506103c7610454366004612452565b610c19565b34801561046557600080fd5b506103f7610474366004612493565b610cf3565b34801561048557600080fd5b506103f76104943660046124ac565b610d54565b3480156104a557600080fd5b5060405160098152602001610365565b3480156104c157600080fd5b506103c76104d03660046124ce565b601e6020526000908152604090205460ff1681565b3480156104f157600080fd5b506103c76105003660046124ce565b601a6020526000908152604090205460ff1681565b34801561052157600080fd5b506103c76105303660046124ce565b601d6020526000908152604090205460ff1681565b34801561055157600080fd5b5061035b6105603660046124ce565b610de8565b34801561057157600080fd5b506103c76105803660046124ce565b601b6020526000908152604090205460ff1681565b3480156105a157600080fd5b506103c76105b03660046124ce565b610e58565b3480156105c157600080fd5b5061035b600f5481565b3480156105d757600080fd5b5061035b60135481565b3480156105ed57600080fd5b506103f76105fc366004612500565b610e77565b34801561060d57600080fd5b506103f761061c366004612420565b610ecc565b34801561062d57600080fd5b506020546103c79060ff1681565b34801561064757600080fd5b5061035b6106563660046124ce565b6001600160a01b031660009081526018602052604090205490565b34801561067d57600080fd5b506103f7610f78565b34801561069257600080fd5b506001546106a6906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b3480156106ca57600080fd5b506103f76106d9366004612493565b610fec565b3480156106ea57600080fd5b5061035b60175481565b34801561070057600080fd5b506103c761070f3660046124ce565b601c6020526000908152604090205460ff1681565b34801561073057600080fd5b5061035b61073f3660046124ce565b61104d565b34801561075057600080fd5b506103f761075f366004612493565b611080565b34801561077057600080fd5b506103f76110e7565b34801561078557600080fd5b506000546001600160a01b03166106a6565b3480156107a357600080fd5b506040805180820190915260058152641220a9212760d91b602082015261039a565b3480156107d157600080fd5b506103f76107e0366004612493565b611170565b3480156107f157600080fd5b5061035b60105481565b34801561080757600080fd5b506103f7610816366004612535565b6111f1565b34801561082757600080fd5b506003546106a6906001600160a01b031681565b34801561084757600080fd5b506103c76108563660046123f4565b611249565b34801561086757600080fd5b5061035b60155481565b34801561087d57600080fd5b5061035b60165481565b34801561089357600080fd5b506012546106a6906001600160a01b031681565b3480156108b357600080fd5b506004546106a6906001600160a01b031681565b3480156108d357600080fd5b5061035b60145481565b3480156108e957600080fd5b506103f76108f8366004612500565b611256565b34801561090957600080fd5b5061035b610918366004612535565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b34801561094f57600080fd5b506103f761095e36600461256e565b6112ab565b34801561096f57600080fd5b506103f761097e3660046124ce565b6112fb565b34801561098f57600080fd5b506005546106a6906001600160a01b031681565b3480156109af57600080fd5b506020546103c790610100900460ff1681565b3480156109ce57600080fd5b506103f7611346565b3480156109e357600080fd5b506103f76109f23660046124ce565b61139f565b348015610a0357600080fd5b506103f7610a12366004612500565b611489565b348015610a2357600080fd5b506002546106a6906001600160a01b031681565b348015610a4357600080fd5b506103f7610a52366004612500565b611592565b3360008181526019602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab29086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610af75760405162461bcd60e51b8152600401610aee9061258a565b60405180910390fd5b600684905560078390556008829055610b1a82610b1485876115e7565b906115e7565b600f556011819055610b386064610b328360056115f3565b906115ff565b600f541115610b855760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031352560381b6044820152606401610aee565b50505050565b6000610b996009600a6126b9565b610ba690620f42406126c8565b905090565b6012546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba691906126e7565b6000610c276009600a6126b9565b610c3490620f42406126c8565b6001600160a01b038516600090815260196020908152604080832033845290915290205414610cde576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601982528381203382529091529190912054610cb991849061160b565b6001600160a01b03851660009081526019602090815260408083203384529091529020555b610ce9848484611637565b90505b9392505050565b6000546001600160a01b03163314610d1d5760405162461bcd60e51b8152600401610aee9061258a565b612710610d2c6009600a6126b9565b610d3990620f42406126c8565b610d439190612700565b811015610d4f57600080fd5b601555565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b8152600401610aee9061258a565b6012546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b505050505050565b601254604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abe91906126e7565b6000610abe82610e6a6009600a6126b9565b6103c290620f42406126c8565b6000546001600160a01b03163314610ea15760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ef65760405162461bcd60e51b8152600401610aee9061258a565b600a8490556009839055600b829055610f1382610b1486866115e7565b6010556011819055610f2b6064610b328360056115f3565b6010541115610b855760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031352560381b6044820152606401610aee565b6000546001600160a01b03163314610fa25760405162461bcd60e51b8152600401610aee9061258a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110165760405162461bcd60e51b8152600401610aee9061258a565b6127106110256009600a6126b9565b61103290620f42406126c8565b61103c9190612700565b81101561104857600080fd5b601455565b60125460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401610e17565b6000546001600160a01b031633146110aa5760405162461bcd60e51b8152600401610aee9061258a565b600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156110e3573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146111115760405162461bcd60e51b8152600401610aee9061258a565b602054610100900460ff161561115b5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610aee565b6020805461ffff191661010117905542601655565b6000546001600160a01b0316331461119a5760405162461bcd60e51b8152600401610aee9061258a565b620b71b081106111ec5760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e203735303030300000006044820152606401610aee565b601355565b6000546001600160a01b0316331461121b5760405162461bcd60e51b8152600401610aee9061258a565b600480546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055565b6000610cec338484611637565b6000546001600160a01b031633146112805760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d55760405162461bcd60e51b8152600401610aee9061258a565b6000601f54116112e457600080fd5b6020805460ff191692151592909217909155601f55565b6000546001600160a01b031633146113255760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b601254604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561138b57600080fd5b505af1158015610b85573d6000803e3d6000fd5b6000546001600160a01b031633146113c95760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03811661142e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aee565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114b35760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03821630148015906114da57506003546001600160a01b03838116911614155b6114e357600080fd5b6001600160a01b0382166000908152601d60205260409020805460ff1916821580159190911790915561154957601254604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610db2565b6012546001600160a01b0383811660008181526018602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610db2565b6000546001600160a01b031633146115bc5760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000610cec8284612722565b6000610cec82846126c8565b6000610cec8284612700565b6000818484111561162f5760405162461bcd60e51b8152600401610aee9190612387565b505050900390565b6001600160a01b0383166000908152601e602052604081205460ff161561168f5760405162461bcd60e51b815260206004820152600c60248201526b109bdd0819195d1958dd195960a21b6044820152606401610aee565b6001600160a01b0384166000908152601b602052604090205460ff161580156116d157506001600160a01b0383166000908152601b602052604090205460ff16155b15611845576014548211156117205760405162461bcd60e51b81526020600482015260156024820152744d61782074786e206c696d6974206578636565647360581b6044820152606401610aee565b602054610100900460ff1661179c576003546001600160a01b0385811691161480159061175b57506003546001600160a01b03848116911614155b61179c5760405162461bcd60e51b815260206004820152601260248201527154726164696e672069732064697361626c6560701b6044820152606401610aee565b6017546016546117ac9190612722565b421080156117c857506002546001600160a01b03858116911614155b15611845576003546001600160a01b038581169116141561180b576001600160a01b0383166000908152601e60205260409020805460ff19166001179055611845565b6003546001600160a01b0384811691161415611845576001600160a01b0384166000908152601e60205260409020805460ff191660011790555b6001600160a01b0383166000908152601c602052604090205460ff166118d95760155461188b83610b14866001600160a01b031660009081526018602052604090205490565b11156118d95760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206c696d6974206578636565647300000000000000006044820152606401610aee565b60205462010000900460ff16156118fc576118f5848484611c9a565b9050610cec565b611904611d80565b1561191157611911611dd5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526018909152919091205461196391849061160b565b6001600160a01b038516600090815260186020908152604080832093909355601a90529081205460ff16806119b057506001600160a01b0384166000908152601a602052604090205460ff165b806119e257506003546001600160a01b038681169116148015906119e257506003546001600160a01b03858116911614155b156119ee575081611a86565b6003546000906001600160a01b0387811691161415611a4857611a22601154610b32600f54876115f390919063ffffffff16565b9050611a2e8482612205565b9150611a3a8682612211565b611a4384612288565b611a84565b611a63601154610b32601054876115f390919063ffffffff16565b9050611a6f8482612205565b9150611a7b8682612211565b611a8484612314565b505b6001600160a01b038416600090815260186020526040902054611aa990826115e7565b6001600160a01b038086166000908152601860209081526040808320949094559188168152601d909152205460ff16611b4d576012546001600160a01b0386811660008181526018602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b3a57600080fd5b505af1925050508015611b4b575060015b505b6001600160a01b0384166000908152601d602052604090205460ff16611bde576012546001600160a01b0385811660008181526018602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bcb57600080fd5b505af1925050508015611bdc575060015b505b6012546013546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611c169160040190815260200190565b600060405180830381600087803b158015611c3057600080fd5b505af1925050508015611c41575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c8791815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601890915291822054611ceb91849061160b565b6001600160a01b038086166000908152601860205260408082209390935590851681522054611d1a90836115e7565b6001600160a01b0380851660008181526018602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d6e9086815260200190565b60405180910390a35060019392505050565b6003546000906001600160a01b03163314801590611da7575060205462010000900460ff16155b8015611db5575060205460ff165b8015610ba6575050601f5430600090815260186020526040902054101590565b6020805462ff0000191662010000179055600e54600c54600d54600092611e01929091610b14916115e7565b90506000611e256002610b3284610b32600d54601f546115f390919063ffffffff16565b90506000611e3e82601f5461220590919063ffffffff16565b9050611e4c6009600a6126b9565b611e5990620f42406126c8565b306000908152601960209081526040808320600280546001600160a01b03168552908352818420949094558051848152606081018252929391830190803683370190505090503081600081518110611eb357611eb361273a565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190612750565b81600181518110611f4357611f4361273a565b6001600160a01b03928316602091820292909201015260025460405163791ac94760e01b81524792919091169063791ac94790611f8d90869060009087903090429060040161276d565b600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050506000611fd4824761220590919063ffffffff16565b90506000611ff8611ff16002600d546115ff90919063ffffffff16565b8890612205565b9050600061201a6002610b3284610b32600d54886115f390919063ffffffff16565b905086156120f8576002546004805460405163f305d71960e01b81523092810192909252602482018a905260006044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015612096573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120bb91906127de565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600061211383610b32600c54876115f390919063ffffffff16565b9050801561217f57601260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561216b57600080fd5b505af19350505050801561217d575060015b505b600061219a84610b32600e54886115f390919063ffffffff16565b905080156121de576005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121dc573d6000803e3d6000fd5b505b50506000600d819055600c819055600e5550506020805462ff000019169055505050505050565b6000610cec828461280c565b3060009081526018602052604090205461222b90826115e7565b30600081815260186020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061227c9085815260200190565b60405180910390a35050565b6122a3601154610b32600754846115f390919063ffffffff16565b600d60008282546122b49190612722565b90915550506011546006546122cf9190610b329084906115f3565b600c60008282546122e09190612722565b90915550506011546008546122fb9190610b329084906115f3565b600e600082825461230c9190612722565b909155505050565b61232f601154610b32600a54846115f390919063ffffffff16565b600d60008282546123409190612722565b909155505060115460095461235b9190610b329084906115f3565b600c600082825461236c9190612722565b9091555050601154600b546122fb9190610b329084906115f3565b600060208083528351808285015260005b818110156123b457858101830151858201604001528201612398565b818111156123c6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146123f157600080fd5b50565b6000806040838503121561240757600080fd5b8235612412816123dc565b946020939093013593505050565b6000806000806080858703121561243657600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561246757600080fd5b8335612472816123dc565b92506020840135612482816123dc565b929592945050506040919091013590565b6000602082840312156124a557600080fd5b5035919050565b600080604083850312156124bf57600080fd5b50508035926020909101359150565b6000602082840312156124e057600080fd5b8135610cec816123dc565b803580151581146124fb57600080fd5b919050565b6000806040838503121561251357600080fd5b823561251e816123dc565b915061252c602084016124eb565b90509250929050565b6000806040838503121561254857600080fd5b8235612553816123dc565b91506020830135612563816123dc565b809150509250929050565b6000806040838503121561258157600080fd5b612412836124eb565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156126105781600019048211156125f6576125f66125bf565b8085161561260357918102915b93841c93908002906125da565b509250929050565b60008261262757506001610abe565b8161263457506000610abe565b816001811461264a576002811461265457612670565b6001915050610abe565b60ff841115612665576126656125bf565b50506001821b610abe565b5060208310610133831016604e8410600b8410161715612693575081810a610abe565b61269d83836125d5565b80600019048211156126b1576126b16125bf565b029392505050565b6000610cec60ff841683612618565b60008160001904831182151516156126e2576126e26125bf565b500290565b6000602082840312156126f957600080fd5b5051919050565b60008261271d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612735576127356125bf565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561276257600080fd5b8151610cec816123dc565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127bd5784516001600160a01b031683529383019391830191600101612798565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127f357600080fd5b8351925060208401519150604084015190509250925092565b60008282101561281e5761281e6125bf565b50039056fea2646970667358221220a34d47d0a75aa3805ee64d2e7060d0ebc48fee7d441523bd475554663c3b31d464736f6c634300080a003360806040819052600180546001600160a01b03191673912ce59144191c1204e64559fe8253a0e49e65489081179091556ec097ce7bc90715b34b9f1000000000600b55610e10600c5563313ce56760e01b82529063313ce56790608490602090600481865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d91906200011e565b620000aa90600a6200025f565b620000b790600162000270565b600d55348015620000c757600080fd5b50604051620011eb380380620011eb833981016040819052620000ea9162000292565b60008054336001600160a01b031991821617909155600280549091166001600160a01b0392909216919091179055620002bd565b6000602082840312156200013157600080fd5b815160ff811681146200014357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001a15781600019048211156200018557620001856200014a565b808516156200019357918102915b93841c939080029062000165565b509250929050565b600082620001ba5750600162000259565b81620001c95750600062000259565b8160018114620001e25760028114620001ed576200020d565b600191505062000259565b60ff8411156200020157620002016200014a565b50506001821b62000259565b5060208310610133831016604e8410600b841016171562000232575081810a62000259565b6200023e838362000160565b80600019048211156200025557620002556200014a565b0290505b92915050565b60006200014360ff841683620001a9565b60008160001904831182151516156200028d576200028d6200014a565b500290565b600060208284031215620002a557600080fd5b81516001600160a01b03811681146200014357600080fd5b610f1e80620002cd6000396000f3fe60806040526004361061012a5760003560e01c8063997664d7116100ab578063e2d2e2191161006f578063e2d2e21914610366578063efca2eed1461037c578063f887ea4014610392578063fc0c546a146103b2578063ffb2c479146103d2578063ffd49c84146103f257600080fd5b8063997664d7146102a4578063ab377daa146102ba578063ce7c2ac2146102da578063d0e30db014610331578063d4fda1f21461033957600080fd5b80633a98ef39116100f25780633a98ef39146101da5780634fab0ae8146101f057806352f481581461020657806366817df51461023f578063731f7ec01461026c57600080fd5b806311ce023d1461012f57806314b6ca961461015857806315f7e05e1461017a57806328fd31981461019a5780632d48e896146101ba575b600080fd5b34801561013b57600080fd5b50610145600b5481565b6040519081526020015b60405180910390f35b34801561016457600080fd5b50610178610173366004610cd5565b610408565b005b34801561018657600080fd5b50610178610195366004610d01565b610580565b3480156101a657600080fd5b506101456101b5366004610d01565b61058c565b3480156101c657600080fd5b506101786101d5366004610d1e565b610615565b3480156101e657600080fd5b5061014560075481565b3480156101fc57600080fd5b50610145600d5481565b34801561021257600080fd5b50610145610221366004610d01565b6001600160a01b031660009081526006602052604090206002015490565b34801561024b57600080fd5b5061014561025a366004610d01565b60056020526000908152604090205481565b34801561027857600080fd5b5060015461028c906001600160a01b031681565b6040516001600160a01b03909116815260200161014f565b3480156102b057600080fd5b5061014560085481565b3480156102c657600080fd5b5061028c6102d5366004610d40565b610637565b3480156102e657600080fd5b506103166102f5366004610d01565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161014f565b610178610661565b34801561034557600080fd5b50610145610354366004610d01565b60046020526000908152604090205481565b34801561037257600080fd5b50610145600a5481565b34801561038857600080fd5b5061014560095481565b34801561039e57600080fd5b5060025461028c906001600160a01b031681565b3480156103be57600080fd5b5060005461028c906001600160a01b031681565b3480156103de57600080fd5b506101786103ed366004610d40565b6108f0565b3480156103fe57600080fd5b50610145600c5481565b6000546001600160a01b0316331461041f57600080fd5b6001600160a01b0382166000908152600660205260409020541561044657610446826109f0565b60008111801561046c57506001600160a01b038216600090815260066020526040902054155b156104d257600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610505565b801580156104f757506001600160a01b03821660009081526006602052604090205415155b156105055761050582610b0c565b6001600160a01b03821660009081526006602052604090205460075461053691839161053091610c21565b90610c34565b6007556001600160a01b038216600090815260066020526040902081905561055d81610c40565b6001600160a01b0390921660009081526006602052604090206001019190915550565b610589816109f0565b50565b6001600160a01b0381166000908152600660205260408120546105b157506000919050565b6001600160a01b0382166000908152600660205260408120546105d390610c40565b6001600160a01b038416600090815260066020526040902060010154909150808211610603575060009392505050565b61060d8282610c21565b949350505050565b6000546001600160a01b0316331461062c57600080fd5b600c91909155600d55565b6003818154811061064757600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461067857600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e59190610d59565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190610d72565b8160008151811061078b5761078b610d8f565b6001600160a01b03928316602091820292909201015260018054835192169183919081106107bb576107bb610d8f565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de9590349061080190600090869030904290600401610da5565b6000604051808303818588803b15801561081a57600080fd5b505af115801561082e573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506108ae93508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a89190610d59565b90610c21565b6008549091506108be9082610c34565b600855600754600b546108e8916108df916108d99085610c63565b90610c6f565b600a5490610c34565b600a55505050565b6000546001600160a01b0316331461090757600080fd5b60035480610913575050565b6000805a905060005b848310801561092a57508381105b156109e95783600e541061093e576000600e555b6109706003600e548154811061095657610956610d8f565b6000918252602090912001546001600160a01b0316610c7b565b156109a7576109a76003600e548154811061098d5761098d610d8f565b6000918252602090912001546001600160a01b03166109f0565b6109bc6109b55a8490610c21565b8490610c34565b92505a600e805491935060006109d183610e25565b919050555080806109e190610e25565b91505061091c565b5050505050565b6001600160a01b038116600090815260066020526040902054610a105750565b6000610a1b8261058c565b90508015610b0857600954610a309082610c34565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190610e40565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610ade9082610c34565b6001600160a01b038316600090815260066020526040902060028101919091555461055d90610c40565b5050565b60038054610b1c90600190610e62565b81548110610b2c57610b2c610d8f565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b6a57610b6a610d8f565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610bb690600190610e62565b81548110610bc657610bc6610d8f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610bfc57610bfc610e79565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c2d8284610e62565b9392505050565b6000610c2d8284610e8f565b6000610c5d600b546108d9600a5485610c6390919063ffffffff16565b92915050565b6000610c2d8284610ea7565b6000610c2d8284610ec6565b600c546001600160a01b03821660009081526005602052604081205490914291610ca59190610e8f565b108015610c5d5750600d54610cb98361058c565b1192915050565b6001600160a01b038116811461058957600080fd5b60008060408385031215610ce857600080fd5b8235610cf381610cc0565b946020939093013593505050565b600060208284031215610d1357600080fd5b8135610c2d81610cc0565b60008060408385031215610d3157600080fd5b50508035926020909101359150565b600060208284031215610d5257600080fd5b5035919050565b600060208284031215610d6b57600080fd5b5051919050565b600060208284031215610d8457600080fd5b8151610c2d81610cc0565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610def5784516001600160a01b031683529383019391830191600101610dca565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610e3957610e39610e0f565b5060010190565b600060208284031215610e5257600080fd5b81518015158114610c2d57600080fd5b600082821015610e7457610e74610e0f565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610ea257610ea2610e0f565b500190565b6000816000190483118215151615610ec157610ec1610e0f565b500290565b600082610ee357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b178f06c0c9557c4c3c89267cad55ef98687547618c6db3edda2491d99cd74f464736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c806386cb8fb1116101ab578063bfe10928116100f7578063e96fada211610095578063f2fde38b1161006f578063f2fde38b146109d7578063f708a64f146109f7578063f887ea4014610a17578063fc899bdc14610a3757600080fd5b8063e96fada214610983578063ec44acf2146109a3578063f0fc6bca146109c257600080fd5b8063d962cf58116100d1578063d962cf58146108dd578063dd62ed3e146108fd578063df20fd4914610943578063e41f9efe1461096357600080fd5b8063bfe1092814610887578063ca33e64c146108a7578063cf46f24c146108c757600080fd5b80639d1944f511610164578063a8aa1b311161013e578063a8aa1b311461081b578063a9059cbb1461083b578063aa4bde281461085b578063bf56b3711461087157600080fd5b80639d1944f5146107c55780639d9241ec146107e5578063a4b45c00146107fb57600080fd5b806386cb8fb1146106f457806386db0c0514610724578063893c9f2b146107445780638a8c523c146107645780638da5cb5b1461077957806395d89b411461079757600080fd5b80634355855a116102855780636c5b285511610223578063715018a6116101fd578063715018a614610671578063731f7ec01461068657806374010ece146106be5780637d99c66d146106de57600080fd5b80636c5b2855146106015780636ddd17131461062157806370a082311461063b57600080fd5b8063571ac8b01161025f578063571ac8b01461059557806359b107b9146105b557806360e71962146105cb578063658d4b7f146105e157600080fd5b80634355855a1461051557806349bc3feb14610545578063540b8a271461056557600080fd5b80631961cee2116102f25780632d48e896116102cc5780632d48e89614610479578063313ce567146104995780633bbac579146104b55780633f4218e0146104e557600080fd5b80631961cee21461042457806323b872dd1461043957806327a14fc21461045957600080fd5b80630445b6671461034557806306fdde031461036e578063095ea7b3146103a7578063178d9b8e146103d7578063180b0d7e146103f957806318160ddd1461040f57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b601f5481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b5060408051808201909152600781526641726269616e7360c81b60208201525b6040516103659190612387565b3480156103b357600080fd5b506103c76103c23660046123f4565b610a57565b6040519015158152602001610365565b3480156103e357600080fd5b506103f76103f2366004612420565b610ac4565b005b34801561040557600080fd5b5061035b60115481565b34801561041b57600080fd5b5061035b610b8b565b34801561043057600080fd5b5061035b610bab565b34801561044557600080fd5b506103c7610454366004612452565b610c19565b34801561046557600080fd5b506103f7610474366004612493565b610cf3565b34801561048557600080fd5b506103f76104943660046124ac565b610d54565b3480156104a557600080fd5b5060405160098152602001610365565b3480156104c157600080fd5b506103c76104d03660046124ce565b601e6020526000908152604090205460ff1681565b3480156104f157600080fd5b506103c76105003660046124ce565b601a6020526000908152604090205460ff1681565b34801561052157600080fd5b506103c76105303660046124ce565b601d6020526000908152604090205460ff1681565b34801561055157600080fd5b5061035b6105603660046124ce565b610de8565b34801561057157600080fd5b506103c76105803660046124ce565b601b6020526000908152604090205460ff1681565b3480156105a157600080fd5b506103c76105b03660046124ce565b610e58565b3480156105c157600080fd5b5061035b600f5481565b3480156105d757600080fd5b5061035b60135481565b3480156105ed57600080fd5b506103f76105fc366004612500565b610e77565b34801561060d57600080fd5b506103f761061c366004612420565b610ecc565b34801561062d57600080fd5b506020546103c79060ff1681565b34801561064757600080fd5b5061035b6106563660046124ce565b6001600160a01b031660009081526018602052604090205490565b34801561067d57600080fd5b506103f7610f78565b34801561069257600080fd5b506001546106a6906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b3480156106ca57600080fd5b506103f76106d9366004612493565b610fec565b3480156106ea57600080fd5b5061035b60175481565b34801561070057600080fd5b506103c761070f3660046124ce565b601c6020526000908152604090205460ff1681565b34801561073057600080fd5b5061035b61073f3660046124ce565b61104d565b34801561075057600080fd5b506103f761075f366004612493565b611080565b34801561077057600080fd5b506103f76110e7565b34801561078557600080fd5b506000546001600160a01b03166106a6565b3480156107a357600080fd5b506040805180820190915260058152641220a9212760d91b602082015261039a565b3480156107d157600080fd5b506103f76107e0366004612493565b611170565b3480156107f157600080fd5b5061035b60105481565b34801561080757600080fd5b506103f7610816366004612535565b6111f1565b34801561082757600080fd5b506003546106a6906001600160a01b031681565b34801561084757600080fd5b506103c76108563660046123f4565b611249565b34801561086757600080fd5b5061035b60155481565b34801561087d57600080fd5b5061035b60165481565b34801561089357600080fd5b506012546106a6906001600160a01b031681565b3480156108b357600080fd5b506004546106a6906001600160a01b031681565b3480156108d357600080fd5b5061035b60145481565b3480156108e957600080fd5b506103f76108f8366004612500565b611256565b34801561090957600080fd5b5061035b610918366004612535565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b34801561094f57600080fd5b506103f761095e36600461256e565b6112ab565b34801561096f57600080fd5b506103f761097e3660046124ce565b6112fb565b34801561098f57600080fd5b506005546106a6906001600160a01b031681565b3480156109af57600080fd5b506020546103c790610100900460ff1681565b3480156109ce57600080fd5b506103f7611346565b3480156109e357600080fd5b506103f76109f23660046124ce565b61139f565b348015610a0357600080fd5b506103f7610a12366004612500565b611489565b348015610a2357600080fd5b506002546106a6906001600160a01b031681565b348015610a4357600080fd5b506103f7610a52366004612500565b611592565b3360008181526019602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab29086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610af75760405162461bcd60e51b8152600401610aee9061258a565b60405180910390fd5b600684905560078390556008829055610b1a82610b1485876115e7565b906115e7565b600f556011819055610b386064610b328360056115f3565b906115ff565b600f541115610b855760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031352560381b6044820152606401610aee565b50505050565b6000610b996009600a6126b9565b610ba690620f42406126c8565b905090565b6012546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba691906126e7565b6000610c276009600a6126b9565b610c3490620f42406126c8565b6001600160a01b038516600090815260196020908152604080832033845290915290205414610cde576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601982528381203382529091529190912054610cb991849061160b565b6001600160a01b03851660009081526019602090815260408083203384529091529020555b610ce9848484611637565b90505b9392505050565b6000546001600160a01b03163314610d1d5760405162461bcd60e51b8152600401610aee9061258a565b612710610d2c6009600a6126b9565b610d3990620f42406126c8565b610d439190612700565b811015610d4f57600080fd5b601555565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b8152600401610aee9061258a565b6012546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b505050505050565b601254604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abe91906126e7565b6000610abe82610e6a6009600a6126b9565b6103c290620f42406126c8565b6000546001600160a01b03163314610ea15760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ef65760405162461bcd60e51b8152600401610aee9061258a565b600a8490556009839055600b829055610f1382610b1486866115e7565b6010556011819055610f2b6064610b328360056115f3565b6010541115610b855760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031352560381b6044820152606401610aee565b6000546001600160a01b03163314610fa25760405162461bcd60e51b8152600401610aee9061258a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110165760405162461bcd60e51b8152600401610aee9061258a565b6127106110256009600a6126b9565b61103290620f42406126c8565b61103c9190612700565b81101561104857600080fd5b601455565b60125460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401610e17565b6000546001600160a01b031633146110aa5760405162461bcd60e51b8152600401610aee9061258a565b600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156110e3573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146111115760405162461bcd60e51b8152600401610aee9061258a565b602054610100900460ff161561115b5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610aee565b6020805461ffff191661010117905542601655565b6000546001600160a01b0316331461119a5760405162461bcd60e51b8152600401610aee9061258a565b620b71b081106111ec5760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e203735303030300000006044820152606401610aee565b601355565b6000546001600160a01b0316331461121b5760405162461bcd60e51b8152600401610aee9061258a565b600480546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055565b6000610cec338484611637565b6000546001600160a01b031633146112805760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d55760405162461bcd60e51b8152600401610aee9061258a565b6000601f54116112e457600080fd5b6020805460ff191692151592909217909155601f55565b6000546001600160a01b031633146113255760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b601254604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561138b57600080fd5b505af1158015610b85573d6000803e3d6000fd5b6000546001600160a01b031633146113c95760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03811661142e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aee565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114b35760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03821630148015906114da57506003546001600160a01b03838116911614155b6114e357600080fd5b6001600160a01b0382166000908152601d60205260409020805460ff1916821580159190911790915561154957601254604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610db2565b6012546001600160a01b0383811660008181526018602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610db2565b6000546001600160a01b031633146115bc5760405162461bcd60e51b8152600401610aee9061258a565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000610cec8284612722565b6000610cec82846126c8565b6000610cec8284612700565b6000818484111561162f5760405162461bcd60e51b8152600401610aee9190612387565b505050900390565b6001600160a01b0383166000908152601e602052604081205460ff161561168f5760405162461bcd60e51b815260206004820152600c60248201526b109bdd0819195d1958dd195960a21b6044820152606401610aee565b6001600160a01b0384166000908152601b602052604090205460ff161580156116d157506001600160a01b0383166000908152601b602052604090205460ff16155b15611845576014548211156117205760405162461bcd60e51b81526020600482015260156024820152744d61782074786e206c696d6974206578636565647360581b6044820152606401610aee565b602054610100900460ff1661179c576003546001600160a01b0385811691161480159061175b57506003546001600160a01b03848116911614155b61179c5760405162461bcd60e51b815260206004820152601260248201527154726164696e672069732064697361626c6560701b6044820152606401610aee565b6017546016546117ac9190612722565b421080156117c857506002546001600160a01b03858116911614155b15611845576003546001600160a01b038581169116141561180b576001600160a01b0383166000908152601e60205260409020805460ff19166001179055611845565b6003546001600160a01b0384811691161415611845576001600160a01b0384166000908152601e60205260409020805460ff191660011790555b6001600160a01b0383166000908152601c602052604090205460ff166118d95760155461188b83610b14866001600160a01b031660009081526018602052604090205490565b11156118d95760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206c696d6974206578636565647300000000000000006044820152606401610aee565b60205462010000900460ff16156118fc576118f5848484611c9a565b9050610cec565b611904611d80565b1561191157611911611dd5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526018909152919091205461196391849061160b565b6001600160a01b038516600090815260186020908152604080832093909355601a90529081205460ff16806119b057506001600160a01b0384166000908152601a602052604090205460ff165b806119e257506003546001600160a01b038681169116148015906119e257506003546001600160a01b03858116911614155b156119ee575081611a86565b6003546000906001600160a01b0387811691161415611a4857611a22601154610b32600f54876115f390919063ffffffff16565b9050611a2e8482612205565b9150611a3a8682612211565b611a4384612288565b611a84565b611a63601154610b32601054876115f390919063ffffffff16565b9050611a6f8482612205565b9150611a7b8682612211565b611a8484612314565b505b6001600160a01b038416600090815260186020526040902054611aa990826115e7565b6001600160a01b038086166000908152601860209081526040808320949094559188168152601d909152205460ff16611b4d576012546001600160a01b0386811660008181526018602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b3a57600080fd5b505af1925050508015611b4b575060015b505b6001600160a01b0384166000908152601d602052604090205460ff16611bde576012546001600160a01b0385811660008181526018602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611bcb57600080fd5b505af1925050508015611bdc575060015b505b6012546013546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611c169160040190815260200190565b600060405180830381600087803b158015611c3057600080fd5b505af1925050508015611c41575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c8791815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601890915291822054611ceb91849061160b565b6001600160a01b038086166000908152601860205260408082209390935590851681522054611d1a90836115e7565b6001600160a01b0380851660008181526018602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d6e9086815260200190565b60405180910390a35060019392505050565b6003546000906001600160a01b03163314801590611da7575060205462010000900460ff16155b8015611db5575060205460ff165b8015610ba6575050601f5430600090815260186020526040902054101590565b6020805462ff0000191662010000179055600e54600c54600d54600092611e01929091610b14916115e7565b90506000611e256002610b3284610b32600d54601f546115f390919063ffffffff16565b90506000611e3e82601f5461220590919063ffffffff16565b9050611e4c6009600a6126b9565b611e5990620f42406126c8565b306000908152601960209081526040808320600280546001600160a01b03168552908352818420949094558051848152606081018252929391830190803683370190505090503081600081518110611eb357611eb361273a565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190612750565b81600181518110611f4357611f4361273a565b6001600160a01b03928316602091820292909201015260025460405163791ac94760e01b81524792919091169063791ac94790611f8d90869060009087903090429060040161276d565b600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050506000611fd4824761220590919063ffffffff16565b90506000611ff8611ff16002600d546115ff90919063ffffffff16565b8890612205565b9050600061201a6002610b3284610b32600d54886115f390919063ffffffff16565b905086156120f8576002546004805460405163f305d71960e01b81523092810192909252602482018a905260006044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015612096573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120bb91906127de565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600061211383610b32600c54876115f390919063ffffffff16565b9050801561217f57601260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561216b57600080fd5b505af19350505050801561217d575060015b505b600061219a84610b32600e54886115f390919063ffffffff16565b905080156121de576005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121dc573d6000803e3d6000fd5b505b50506000600d819055600c819055600e5550506020805462ff000019169055505050505050565b6000610cec828461280c565b3060009081526018602052604090205461222b90826115e7565b30600081815260186020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061227c9085815260200190565b60405180910390a35050565b6122a3601154610b32600754846115f390919063ffffffff16565b600d60008282546122b49190612722565b90915550506011546006546122cf9190610b329084906115f3565b600c60008282546122e09190612722565b90915550506011546008546122fb9190610b329084906115f3565b600e600082825461230c9190612722565b909155505050565b61232f601154610b32600a54846115f390919063ffffffff16565b600d60008282546123409190612722565b909155505060115460095461235b9190610b329084906115f3565b600c600082825461236c9190612722565b9091555050601154600b546122fb9190610b329084906115f3565b600060208083528351808285015260005b818110156123b457858101830151858201604001528201612398565b818111156123c6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146123f157600080fd5b50565b6000806040838503121561240757600080fd5b8235612412816123dc565b946020939093013593505050565b6000806000806080858703121561243657600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561246757600080fd5b8335612472816123dc565b92506020840135612482816123dc565b929592945050506040919091013590565b6000602082840312156124a557600080fd5b5035919050565b600080604083850312156124bf57600080fd5b50508035926020909101359150565b6000602082840312156124e057600080fd5b8135610cec816123dc565b803580151581146124fb57600080fd5b919050565b6000806040838503121561251357600080fd5b823561251e816123dc565b915061252c602084016124eb565b90509250929050565b6000806040838503121561254857600080fd5b8235612553816123dc565b91506020830135612563816123dc565b809150509250929050565b6000806040838503121561258157600080fd5b612412836124eb565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156126105781600019048211156125f6576125f66125bf565b8085161561260357918102915b93841c93908002906125da565b509250929050565b60008261262757506001610abe565b8161263457506000610abe565b816001811461264a576002811461265457612670565b6001915050610abe565b60ff841115612665576126656125bf565b50506001821b610abe565b5060208310610133831016604e8410600b8410161715612693575081810a610abe565b61269d83836125d5565b80600019048211156126b1576126b16125bf565b029392505050565b6000610cec60ff841683612618565b60008160001904831182151516156126e2576126e26125bf565b500290565b6000602082840312156126f957600080fd5b5051919050565b60008261271d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612735576127356125bf565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561276257600080fd5b8151610cec816123dc565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127bd5784516001600160a01b031683529383019391830191600101612798565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127f357600080fd5b8351925060208401519150604084015190509250925092565b60008282101561281e5761281e6125bf565b50039056fea2646970667358221220a34d47d0a75aa3805ee64d2e7060d0ebc48fee7d441523bd475554663c3b31d464736f6c634300080a0033

Deployed ByteCode Sourcemap

13410:15964:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15173:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;15173:50:0;;;;;;;;17334:94;;;;;;;;;;-1:-1:-1;17415:5:0;;;;;;;;;;;;-1:-1:-1;;;17415:5:0;;;;17334:94;;;;;;;:::i;17759:248::-;;;;;;;;;;-1:-1:-1;17759:248:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;17759:248:0;1254:187:1;27353:565:0;;;;;;;;;;-1:-1:-1;27353:565:0;;;;;:::i;:::-;;:::i;:::-;;14453:38;;;;;;;;;;;;;;;;17016:102;;;;;;;;;;;;;:::i;25671:127::-;;;;;;;;;;;;;:::i;18336:419::-;;;;;;;;;;-1:-1:-1;18336:419:0;;;;;:::i;:::-;;:::i;26664:156::-;;;;;;;;;;-1:-1:-1;26664:156:0;;;;;:::i;:::-;;:::i;28988:207::-;;;;;;;;;;-1:-1:-1;28988:207:0;;;;;:::i;:::-;;:::i;17126:94::-;;;;;;;;;;-1:-1:-1;17126:94:0;;13627:1;2877:36:1;;2865:2;2850:18;17126:94:0;2735:184:1;15127:37:0;;;;;;;;;;-1:-1:-1;15127:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14919:43;;;;;;;;;;-1:-1:-1;14919:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15072:48;;;;;;;;;;-1:-1:-1;15072:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25301:174;;;;;;;;;;-1:-1:-1;25301:174:0;;;;;:::i;:::-;;:::i;14969:44::-;;;;;;;;;;-1:-1:-1;14969:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18015:117;;;;;;;;;;-1:-1:-1;18015:117:0;;;;;:::i;:::-;;:::i;14370:34::-;;;;;;;;;;;;;;;;14545:38;;;;;;;;;;;;;;;;26828:119;;;;;;;;;;-1:-1:-1;26828:119:0;;;;;:::i;:::-;;:::i;27926:571::-;;;;;;;;;;-1:-1:-1;27926:571:0;;;;;:::i;:::-;;:::i;15230:23::-;;;;;;;;;;-1:-1:-1;15230:23:0;;;;;;;;17436:119;;;;;;;;;;-1:-1:-1;17436:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;17529:18:0;17502:7;17529:18;;;:9;:18;;;;;;;17436:119;5982:157;;;;;;;;;;;;;:::i;13709:68::-;;;;;;;;;;-1:-1:-1;13709:68:0;;;;-1:-1:-1;;;;;13709:68:0;;;;;;-1:-1:-1;;;;;3825:32:1;;;3807:51;;3795:2;3780:18;13709:68:0;3661:203:1;26506:150:0;;;;;;;;;;-1:-1:-1;26506:150:0;;;;;:::i;:::-;;:::i;14745:39::-;;;;;;;;;;;;;;;;15020:45;;;;;;;;;;-1:-1:-1;15020:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25483:180;;;;;;;;;;-1:-1:-1;25483:180:0;;;;;:::i;:::-;;:::i;26387:111::-;;;;;;;;;;-1:-1:-1;26387:111:0;;;;;:::i;:::-;;:::i;26187:192::-;;;;;;;;;;;;;:::i;5768:79::-;;;;;;;;;;-1:-1:-1;5806:7:0;5833:6;-1:-1:-1;;;;;5833:6:0;5768:79;;17228:98;;;;;;;;;;-1:-1:-1;17311:7:0;;;;;;;;;;;;-1:-1:-1;;;17311:7:0;;;;17228:98;;29203:168;;;;;;;;;;-1:-1:-1;29203:168:0;;;;;:::i;:::-;;:::i;14411:35::-;;;;;;;;;;;;;;;;28505:252;;;;;;;;;;-1:-1:-1;28505:252:0;;;;;:::i;:::-;;:::i;13918:19::-;;;;;;;;;;-1:-1:-1;13918:19:0;;;;-1:-1:-1;;;;;13918:19:0;;;18140:188;;;;;;;;;;-1:-1:-1;18140:188:0;;;;;:::i;:::-;;:::i;14651:55::-;;;;;;;;;;;;;;;;14713:25;;;;;;;;;;;;;;;;14500:38;;;;;;;;;;-1:-1:-1;14500:38:0;;;;-1:-1:-1;;;;;14500:38:0;;;13944:36;;;;;;;;;;-1:-1:-1;13944:36:0;;;;-1:-1:-1;;;;;13944:36:0;;;14592:52;;;;;;;;;;;;;;;;26955:149;;;;;;;;;;-1:-1:-1;26955:149:0;;;;;:::i;:::-;;:::i;17563:188::-;;;;;;;;;;-1:-1:-1;17563:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;17715:19:0;;;17683:7;17715:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17563:188;28765:215;;;;;;;;;;-1:-1:-1;28765:215:0;;;;;:::i;:::-;;:::i;27244:101::-;;;;;;;;;;-1:-1:-1;27244:101:0;;;;;:::i;:::-;;:::i;13987:35::-;;;;;;;;;;-1:-1:-1;13987:35:0;;;;-1:-1:-1;;;;;13987:35:0;;;15260:19;;;;;;;;;;-1:-1:-1;15260:19:0;;;;;;;;;;;25203:90;;;;;;;;;;;;;:::i;6147:281::-;;;;;;;;;;-1:-1:-1;6147:281:0;;;;;:::i;:::-;;:::i;25806:373::-;;;;;;;;;;-1:-1:-1;25806:373:0;;;;;:::i;:::-;;:::i;13887:24::-;;;;;;;;;;-1:-1:-1;13887:24:0;;;;-1:-1:-1;;;;;13887:24:0;;;27112:124;;;;;;;;;;-1:-1:-1;27112:124:0;;;;;:::i;:::-;;:::i;17759:248::-;17895:10;17861:4;17883:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17883:32:0;;;;;;;;;;:41;;;17940:37;17861:4;;17883:32;;17940:37;;;;17918:6;160:25:1;;148:2;133:18;;14:177;17940:37:0;;;;;;;;-1:-1:-1;17995:4:0;17759:248;;;;;:::o;27353:565::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;;;;;;;;;27539:17:::1;:34:::0;;;27584:16:::1;:32:::0;;;27627:16:::1;:32:::0;;;27684:52:::1;27646:13:::0;27684:33:::1;27603:13:::0;27559:14;27684:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:::-;27670:11;:66:::0;27747:14:::1;:32:::0;;;27827:30:::1;27853:3;27827:21;27764:15:::0;27846:1:::1;27827:18;:21::i;:::-;:25:::0;::::1;:30::i;:::-;27812:11;;:45;;27790:120;;;::::0;-1:-1:-1;;;27790:120:0;;5540:2:1;27790:120:0::1;::::0;::::1;5522:21:1::0;5579:2;5559:18;;;5552:30;-1:-1:-1;;;5598:18:1;;;5591:55;5663:18;;27790:120:0::1;5338:349:1::0;27790:120:0::1;27353:565:::0;;;;:::o;17016:102::-;17071:7;13687:13;13627:1;13687:2;:13;:::i;:::-;13675:25;;:9;:25;:::i;:::-;17091:19;;17016:102;:::o;25671:127::-;25760:11;;:30;;;-1:-1:-1;;;25760:30:0;;;;25733:7;;-1:-1:-1;;;;;25760:11:0;;:28;;:30;;;;;;;;;;;;;;:11;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18336:419::-;18470:4;13687:13;13627:1;13687:2;:13;:::i;:::-;13675:25;;:9;:25;:::i;:::-;-1:-1:-1;;;;;18491:19:0;;;;;;:11;:19;;;;;;;;18511:10;18491:31;;;;;;;;:47;18487:201;;18589:87;;;;;;;;;;;-1:-1:-1;;;18589:87:0;;;;;;;;-1:-1:-1;;;;;18589:19:0;;-1:-1:-1;18589:19:0;;;:11;:19;;;;;18609:10;18589:31;;;;;;;;;;:87;;18643:6;;18589:53;:87::i;:::-;-1:-1:-1;;;;;18555:19:0;;;;;;:11;:19;;;;;;;;18575:10;18555:31;;;;;;;:121;18487:201;18707:40;18721:6;18729:9;18740:6;18707:13;:40::i;:::-;18700:47;;18336:419;;;;;;:::o;26664:156::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;26771:5:::1;13687:13;13627:1;13687:2;:13;:::i;:::-;13675:25;::::0;:9:::1;:25;:::i;:::-;26756:20;;;;:::i;:::-;26746:6;:30;;26738:39;;;::::0;::::1;;26788:15;:24:::0;26664:156::o;28988:207::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;29122:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;29122:65:0;;::::1;::::0;::::1;7965:25:1::0;;;8006:18;;;7999:34;;;-1:-1:-1;;;;;29122:11:0;;::::1;::::0;:35:::1;::::0;7938:18:1;;29122:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28988:207:::0;;:::o;25301:174::-;25427:11;;:40;;-1:-1:-1;;;25427:40:0;;-1:-1:-1;;;;;3825:32:1;;;25427:40:0;;;3807:51:1;25395:7:0;;25427:11;;:27;;3780:18:1;;25427:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18015:117::-;18070:4;18094:30;18102:7;13687:13;13627:1;13687:2;:13;:::i;:::-;13675:25;;:9;:25;:::i;26828:119::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26911:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;26911:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26828:119::o;27926:571::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;28113:17:::1;:33:::0;;;28157:18:::1;:35:::0;;;28203:17:::1;:33:::0;;;28262:52:::1;28223:13:::0;28262:33:::1;28133:13:::0;28178:14;28262:17:::1;:33::i;:52::-;28247:12;:67:::0;28325:14:::1;:32:::0;;;28406:30:::1;28432:3;28406:21;28342:15:::0;28425:1:::1;28406:18;:21::i;:30::-;28390:12;;:46;;28368:121;;;::::0;-1:-1:-1;;;28368:121:0;;5540:2:1;28368:121:0::1;::::0;::::1;5522:21:1::0;5579:2;5559:18;;;5552:30;-1:-1:-1;;;5598:18:1;;;5591:55;5663:18;;28368:121:0::1;5338:349:1::0;5982:157:0;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;6089:1:::1;6073:6:::0;;6052:40:::1;::::0;-1:-1:-1;;;;;6073:6:0;;::::1;::::0;6052:40:::1;::::0;6089:1;;6052:40:::1;6128:1;6103:28:::0;;-1:-1:-1;;;;;;6103:28:0::1;::::0;;5982:157::o;26506:150::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;26610:5:::1;13687:13;13627:1;13687:2;:13;:::i;:::-;13675:25;::::0;:9:::1;:25;:::i;:::-;26595:20;;;;:::i;:::-;26585:6;:30;;26577:39;;;::::0;::::1;;26627:12;:21:::0;26506:150::o;25483:180::-;25613:11;;:42;;-1:-1:-1;;;25613:42:0;;-1:-1:-1;;;;;3825:32:1;;;25613:42:0;;;3807:51:1;25581:7:0;;25613:11;;:29;;3780:18:1;;25613:42:0;3661:203:1;26387:111:0;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;5806:7;5833:6;;26457:33:::1;::::0;-1:-1:-1;;;;;5833:6:0;;;;26457:33;::::1;;;::::0;26483:6;;26457:33;5806:7;26457:33;26483:6;5833;26457:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26387:111:::0;:::o;26187:192::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;26251:7:::1;::::0;::::1;::::0;::::1;;;26250:8;26242:36;;;::::0;-1:-1:-1;;;26242:36:0;;8246:2:1;26242:36:0::1;::::0;::::1;8228:21:1::0;8285:2;8265:18;;;8258:30;-1:-1:-1;;;8304:18:1;;;8297:45;8359:18;;26242:36:0::1;8044:339:1::0;26242:36:0::1;26289:7;:14:::0;;-1:-1:-1;;26314:18:0;;;;;26356:15:::1;26343:10;:28:::0;26187:192::o;29203:168::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;29292:6:::1;29286:3;:12;29278:54;;;::::0;-1:-1:-1;;;29278:54:0;;8590:2:1;29278:54:0::1;::::0;::::1;8572:21:1::0;8629:2;8609:18;;;8602:30;8668:31;8648:18;;;8641:59;8717:18;;29278:54:0::1;8388:353:1::0;29278:54:0::1;29343:14;:20:::0;29203:168::o;28505:252::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;28648:21:::1;:46:::0;;-1:-1:-1;;;;;28648:46:0;;::::1;-1:-1:-1::0;;;;;;28648:46:0;;::::1;;::::0;;;28705:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;28505:252::o;18140:188::-;18247:4;18276:44;18290:10;18302:9;18313:6;18276:13;:44::i;26955:149::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27067:20:0;;;::::1;;::::0;;;:12:::1;:20;::::0;;;;:29;;-1:-1:-1;;27067:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26955:149::o;28765:215::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;28903:1:::1;28887:13;;:17;28879:26;;;::::0;::::1;;28916:11;:22:::0;;-1:-1:-1;;28916:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;28949:13:::1;:23:::0;28765:215::o;27244:101::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27315:14:0::1;27332:5;27315:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;27315:22:0::1;::::0;;27244:101::o;25203:90::-;25248:11;;:37;;-1:-1:-1;;;25248:37:0;;25274:10;25248:37;;;3807:51:1;-1:-1:-1;;;;;25248:11:0;;;;:25;;3780:18:1;;25248:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6147:281;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6250:22:0;::::1;6228:110;;;::::0;-1:-1:-1;;;6228:110:0;;8948:2:1;6228:110:0::1;::::0;::::1;8930:21:1::0;8987:2;8967:18;;;8960:30;9026:34;9006:18;;;8999:62;-1:-1:-1;;;9077:18:1;;;9070:36;9123:19;;6228:110:0::1;8746:402:1::0;6228:110:0::1;6375:6;::::0;;6354:38:::1;::::0;-1:-1:-1;;;;;6354:38:0;;::::1;::::0;6375:6;::::1;::::0;6354:38:::1;::::0;::::1;6403:6;:17:::0;;-1:-1:-1;;;;;;6403:17:0::1;-1:-1:-1::0;;;;;6403:17:0;;;::::1;::::0;;;::::1;::::0;;6147:281::o;25806:373::-;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25925:23:0;::::1;25943:4;25925:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;25962:4:0::1;::::0;-1:-1:-1;;;;;25952:14:0;;::::1;25962:4:::0;::::1;25952:14;;25925:41;25917:50;;;::::0;::::1;;-1:-1:-1::0;;;;;25978:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;25978:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;26022:150:::1;;26049:11;::::0;:31:::1;::::0;-1:-1:-1;;;26049:31:0;;-1:-1:-1;;;;;9353:32:1;;;26049:31:0::1;::::0;::::1;9335:51:1::0;26049:11:0::1;9402:18:1::0;;;9395:34;26049:11:0;;::::1;::::0;:20:::1;::::0;9308:18:1;;26049:31:0::1;9153:282:1::0;26022:150:0::1;26113:11;::::0;-1:-1:-1;;;;;26142:17:0;;::::1;26113:11;26142:17:::0;;;:9:::1;:17;::::0;;;;;;;26113:47;;-1:-1:-1;;;26113:47:0;;::::1;::::0;::::1;9335:51:1::0;;;;9402:18;;;9395:34;26113:11:0;::::1;::::0;:20:::1;::::0;9308:18:1;;26113:47:0::1;9153:282:1::0;27112:124:0;5895:6;;-1:-1:-1;;;;;5895:6:0;5200:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27198:21:0;;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:30;;-1:-1:-1;;27198:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27112:124::o;1721:98::-;1779:7;1806:5;1810:1;1806;:5;:::i;1933:98::-;1991:7;2018:5;2022:1;2018;:5;:::i;2039:98::-;2097:7;2124:5;2128:1;2124;:5;:::i;2251:240::-;2371:7;2432:12;2424:6;;;;2416:29;;;;-1:-1:-1;;;2416:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2467:5:0;;;2251:240::o;18763:2773::-;-1:-1:-1;;;;;18915:13:0;;18889:4;18915:13;;;:5;:13;;;;;;;;18914:14;18906:39;;;;-1:-1:-1;;;18906:39:0;;10054:2:1;18906:39:0;;;10036:21:1;10093:2;10073:18;;;10066:30;-1:-1:-1;;;10112:18:1;;;10105:42;10164:18;;18906:39:0;9852:336:1;18906:39:0;-1:-1:-1;;;;;18961:20:0;;;;;;:12;:20;;;;;;;;18960:21;:49;;;;-1:-1:-1;;;;;;18986:23:0;;;;;;:12;:23;;;;;;;;18985:24;18960:49;18956:759;;;19044:12;;19034:6;:22;;19026:56;;;;-1:-1:-1;;;19026:56:0;;10395:2:1;19026:56:0;;;10377:21:1;10434:2;10414:18;;;10407:30;-1:-1:-1;;;10453:18:1;;;10446:51;10514:18;;19026:56:0;10193:345:1;19026:56:0;19148:7;;;;;;;19143:176;;19206:4;;-1:-1:-1;;;;;19206:14:0;;;:4;;:14;;;;:35;;-1:-1:-1;19224:4:0;;-1:-1:-1;;;;;19224:17:0;;;:4;;:17;;19206:35;19176:127;;;;-1:-1:-1;;;19176:127:0;;10745:2:1;19176:127:0;;;10727:21:1;10784:2;10764:18;;;10757:30;-1:-1:-1;;;10803:18:1;;;10796:48;10861:18;;19176:127:0;10543:342:1;19176:127:0;19419:11;;19406:10;;:24;;;;:::i;:::-;19388:15;:42;:88;;;;-1:-1:-1;19469:6:0;;-1:-1:-1;;;;;19451:25:0;;;19469:6;;19451:25;;19388:88;19366:338;;;19515:4;;-1:-1:-1;;;;;19515:14:0;;;:4;;:14;19511:178;;;-1:-1:-1;;;;;19554:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;19554:23:0;19573:4;19554:23;;;19511:178;;;19607:4;;-1:-1:-1;;;;;19607:17:0;;;:4;;:17;19603:86;;;-1:-1:-1;;;;;19649:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;19649:20:0;19665:4;19649:20;;;19603:86;-1:-1:-1;;;;;19732:24:0;;;;;;:13;:24;;;;;;;;19727:195;;19835:15;;19799:32;19824:6;19799:20;19809:9;-1:-1:-1;;;;;17529:18:0;17502:7;17529:18;;;:9;:18;;;;;;;17436:119;19799:32;:51;;19773:137;;;;-1:-1:-1;;;19773:137:0;;11092:2:1;19773:137:0;;;11074:21:1;11131:2;11111:18;;;11104:30;11170:26;11150:18;;;11143:54;11214:18;;19773:137:0;10890:348:1;19773:137:0;19938:6;;;;;;;19934:87;;;19968:41;19983:6;19991:9;20002:6;19968:14;:41::i;:::-;19961:48;;;;19934:87;20037:16;:14;:16::i;:::-;20033:59;;;20070:10;:8;:10::i;:::-;20124:90;;;;;;;;;;;-1:-1:-1;;;20124:90:0;;;;;;;;-1:-1:-1;;;;;20124:17:0;;-1:-1:-1;20124:17:0;;;:9;:17;;;;;;;;:90;;20160:6;;20124:21;:90::i;:::-;-1:-1:-1;;;;;20104:17:0;;;;;;:9;:17;;;;;;;;:110;;;;20278:11;:19;;;;;;;;;:58;;-1:-1:-1;;;;;;20314:22:0;;;;;;:11;:22;;;;;;;;20278:58;:112;;;-1:-1:-1;20364:4:0;;-1:-1:-1;;;;;20354:14:0;;;20364:4;;20354:14;;;;:35;;-1:-1:-1;20385:4:0;;-1:-1:-1;;;;;20372:17:0;;;20385:4;;20372:17;;20354:35;20260:746;;;-1:-1:-1;20434:6:0;20260:746;;;20519:4;;20473:17;;-1:-1:-1;;;;;20509:14:0;;;20519:4;;20509:14;20505:490;;;20556:43;20584:14;;20556:23;20567:11;;20556:6;:10;;:23;;;;:::i;:43::-;20544:55;-1:-1:-1;20635:21:0;:6;20544:55;20635:10;:21::i;:::-;20618:38;;20675:26;20683:6;20691:9;20675:7;:26::i;:::-;20720:20;20733:6;20720:12;:20::i;:::-;20505:490;;;20793:44;20822:14;;20793:24;20804:12;;20793:6;:10;;:24;;;;:::i;:44::-;20781:56;-1:-1:-1;20873:21:0;:6;20781:56;20873:10;:21::i;:::-;20856:38;;20913:26;20921:6;20929:9;20913:7;:26::i;:::-;20958:21;20972:6;20958:13;:21::i;:::-;20458:548;20260:746;-1:-1:-1;;;;;21041:20:0;;;;;;:9;:20;;;;;;:40;;21066:14;21041:24;:40::i;:::-;-1:-1:-1;;;;;21018:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;21099:24;;;;;:16;:24;;;;;;;21094:120;;21144:11;;-1:-1:-1;;;;;21173:17:0;;;21144:11;21173:17;;;:9;:17;;;;;;;;21144:47;;-1:-1:-1;;;21144:47:0;;;;;9335:51:1;;;;9402:18;;;9395:34;21144:11:0;;;:20;;9308:18:1;;21144:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21140:63;;-1:-1:-1;;;;;21229:27:0;;;;;;:16;:27;;;;;;;;21224:159;;21294:11;;-1:-1:-1;;;;;21326:20:0;;;21294:11;21326:20;;;:9;:20;;;;;;;;21294:53;;-1:-1:-1;;;21294:53:0;;;;;9335:51:1;;;;9402:18;;;9395:34;21294:11:0;;;:20;;9308:18:1;;21294:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21273:99;;21399:11;;21419:14;;21399:35;;-1:-1:-1;;;;;;21399:35:0;;-1:-1:-1;;;;;21399:11:0;;;;:19;;:35;;;;160:25:1;;;148:2;133:18;;14:177;21399:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21395:51;21480:9;-1:-1:-1;;;;;21463:43:0;21472:6;-1:-1:-1;;;;;21463:43:0;;21491:14;21463:43;;;;160:25:1;;148:2;133:18;;14:177;21463:43:0;;;;;;;;-1:-1:-1;21524:4:0;;18763:2773;-1:-1:-1;;;;18763:2773:0:o;21544:401::-;21708:90;;;;;;;;;;;-1:-1:-1;;;21708:90:0;;;;;;;;-1:-1:-1;;;;;21708:17:0;;21671:4;21708:17;;;:9;:17;;;;;;;:90;;21744:6;;21708:21;:90::i;:::-;-1:-1:-1;;;;;21688:17:0;;;;;;;:9;:17;;;;;;:110;;;;21832:20;;;;;;;:32;;21857:6;21832:24;:32::i;:::-;-1:-1:-1;;;;;21809:20:0;;;;;;;:9;:20;;;;;;;:55;;;;21880:35;;;;;;;;;;21908:6;160:25:1;;148:2;133:18;;14:177;21880:35:0;;;;;;;;-1:-1:-1;21933:4:0;21544:401;;;;;:::o;22889:222::-;22989:4;;22938;;-1:-1:-1;;;;;22989:4:0;22975:10;:18;;;;:42;;-1:-1:-1;23011:6:0;;;;;;;23010:7;22975:42;:70;;;;-1:-1:-1;23034:11:0;;;;22975:70;:128;;;;-1:-1:-1;;23090:13:0;;23080:4;23062:24;;;;:9;:24;;;;;;:41;;;22889:222::o;23119:2076::-;15335:6;:13;;-1:-1:-1;;15335:13:0;;;;;23249:18:::1;::::0;23210:19:::1;::::0;23187:18:::1;::::0;15335:13;;23187:91:::1;::::0;23249:18;;23187:43:::1;::::0;:22:::1;:43::i;:91::-;23168:110;;23291:23;23317:100;23415:1;23317:79;23387:8;23317:51;23349:18;;23317:13;;:31;;:51;;;;:::i;:100::-;23291:126;;23430:20;23453:34;23471:15;23453:13;;:17;;:34;;;;:::i;:::-;23430:57:::0;-1:-1:-1;13687:13:0::1;13627:1;13687:2;:13;:::i;:::-;13675:25;::::0;:9:::1;:25;:::i;:::-;23518:4;23498:26;::::0;;;:11:::1;:26;::::0;;;;;;;23533:6:::1;::::0;;-1:-1:-1;;;;;23533:6:0::1;23498:43:::0;;;;;;;;:58;;;;23591:16;;;;;;;::::1;::::0;;23498:26;;23533:6;23591:16;::::1;::::0;23498:26;23591:16:::1;::::0;::::1;;::::0;-1:-1:-1;23591:16:0::1;23567:40;;23636:4;23618;23623:1;23618:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23618:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23662:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23662:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;23618:7;;23662:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23652:4;23657:1;23652:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23652:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23744:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;23744:188:0;;23710:21:::1;::::0;23744:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;23816:12;;23686:21:::1;::::0;23859:4;;23886::::1;::::0;23906:15:::1;::::0;23744:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23945:17;23965:40;23991:13;23965:21;:25;;:40;;;;:::i;:::-;23945:60;;24018:19;24040:39;24053:25;24076:1;24053:18;;:22;;:25;;;;:::i;:::-;24040:8:::0;;:12:::1;:39::i;:::-;24018:61;;24092:26;24121:99;24218:1;24121:78;24187:11;24121:47;24149:18;;24121:9;:27;;:47;;;;:::i;:99::-;24092:128:::0;-1:-1:-1;24237:19:0;;24233:364:::1;;24273:6;::::0;24447:21:::1;::::0;;24273:244:::1;::::0;-1:-1:-1;;;24273:244:0;;24349:4:::1;24273:244:::0;;::::1;13089:34:1::0;;;;13139:18;;;13132:34;;;24273:6:0::1;13182:18:1::0;;;13175:34;;;13225:18;;;13218:34;-1:-1:-1;;;;;24447:21:0;;::::1;13268:19:1::0;;;13261:44;24487:15:0::1;13321:19:1::0;;;13314:35;24273:6:0;;::::1;::::0;:22:::1;::::0;24303:18;;13023:19:1;;24273:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24537:48:0::1;::::0;;7965:25:1;;;8021:2;8006:18;;7999:34;;;24537:48:0::1;::::0;-1:-1:-1;7938:18:1;24537:48:0::1;;;;;;;24233:364;24609:27;24639:75;24692:11;24639:34;24653:19;;24639:9;:13;;:34;;;;:::i;:75::-;24609:105:::0;-1:-1:-1;24729:23:0;;24725:120:::1;;24773:11;;;;;;;;;-1:-1:-1::0;;;;;24773:11:0::1;-1:-1:-1::0;;;;;24773:19:0::1;;24800;24773:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24769:65:::0;::::1;24857:26;24886:74;24938:11;24886:33;24900:18;;24886:9;:13;;:33;;;;:::i;:74::-;24857:103:::0;-1:-1:-1;24977:22:0;;24973:113:::1;;25024:20;::::0;25016:58:::1;::::0;-1:-1:-1;;;;;25024:20:0;;::::1;::::0;25016:58;::::1;;;::::0;25055:18;;25024:20:::1;25016:58:::0;25024:20;25016:58;25055:18;25024:20;25016:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24973:113;-1:-1:-1::0;;25119:1:0::1;25098:18;:22:::0;;;25131:19:::1;:23:::0;;;25165:18:::1;:22:::0;-1:-1:-1;;15371:6:0;:14;;-1:-1:-1;;15371:14:0;;;-1:-1:-1;;;;;;23119:2076:0:o;1827:98::-;1885:7;1912:5;1916:1;1912;:5;:::i;21953:204::-;22070:4;22052:24;;;;:9;:24;;;;;;:39;;22081:9;22052:28;:39::i;:::-;22043:4;22025:24;;;;:9;:24;;;;;;;:66;;;;22107:42;;-1:-1:-1;;;;;22107:42:0;;;;;;;22139:9;160:25:1;;148:2;133:18;;14:177;22107:42:0;;;;;;;;21953:204;;:::o;22165:328::-;22246:49;22280:14;;22246:29;22258:16;;22246:7;:11;;:29;;;;:::i;:49::-;22224:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;22378:14:0;;22341:17;;22329:74;;22378:14;22329:30;;:7;;:11;:30::i;:74::-;22306:19;;:97;;;;;;;:::i;:::-;;;;-1:-1:-1;;22470:14:0;;22448:16;;22436:49;;22470:14;22436:29;;:7;;:11;:29::i;:49::-;22414:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;;22165:328:0:o;22501:380::-;22583:74;22632:14;;22583:30;22595:17;;22583:7;:11;;:30;;;;:::i;:74::-;22561:18;;:96;;;;;;;:::i;:::-;;;;-1:-1:-1;;22741:14:0;;22703:18;;22691:75;;22741:14;22691:31;;:7;;:11;:31::i;:75::-;22668:19;;:98;;;;;;;:::i;:::-;;;;-1:-1:-1;;22848:14:0;;22811:17;;22799:74;;22848:14;22799:30;;:7;;:11;:30::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:385::-;1532:6;1540;1548;1556;1609:3;1597:9;1588:7;1584:23;1580:33;1577:53;;;1626:1;1623;1616:12;1577:53;-1:-1:-1;;1649:23:1;;;1719:2;1704:18;;1691:32;;-1:-1:-1;1770:2:1;1755:18;;1742:32;;1821:2;1806:18;1793:32;;-1:-1:-1;1446:385:1;-1:-1:-1;1446:385:1:o;1836:456::-;1913:6;1921;1929;1982:2;1970:9;1961:7;1957:23;1953:32;1950:52;;;1998:1;1995;1988:12;1950:52;2037:9;2024:23;2056:31;2081:5;2056:31;:::i;:::-;2106:5;-1:-1:-1;2163:2:1;2148:18;;2135:32;2176:33;2135:32;2176:33;:::i;:::-;1836:456;;2228:7;;-1:-1:-1;;;2282:2:1;2267:18;;;;2254:32;;1836:456::o;2297:180::-;2356:6;2409:2;2397:9;2388:7;2384:23;2380:32;2377:52;;;2425:1;2422;2415:12;2377:52;-1:-1:-1;2448:23:1;;2297:180;-1:-1:-1;2297:180:1:o;2482:248::-;2550:6;2558;2611:2;2599:9;2590:7;2586:23;2582:32;2579:52;;;2627:1;2624;2617:12;2579:52;-1:-1:-1;;2650:23:1;;;2720:2;2705:18;;;2692:32;;-1:-1:-1;2482:248:1:o;2924:247::-;2983:6;3036:2;3024:9;3015:7;3011:23;3007:32;3004:52;;;3052:1;3049;3042:12;3004:52;3091:9;3078:23;3110:31;3135:5;3110:31;:::i;3176:160::-;3241:20;;3297:13;;3290:21;3280:32;;3270:60;;3326:1;3323;3316:12;3270:60;3176:160;;;:::o;3341:315::-;3406:6;3414;3467:2;3455:9;3446:7;3442:23;3438:32;3435:52;;;3483:1;3480;3473:12;3435:52;3522:9;3509:23;3541:31;3566:5;3541:31;:::i;:::-;3591:5;-1:-1:-1;3615:35:1;3646:2;3631:18;;3615:35;:::i;:::-;3605:45;;3341:315;;;;;:::o;3869:388::-;3937:6;3945;3998:2;3986:9;3977:7;3973:23;3969:32;3966:52;;;4014:1;4011;4004:12;3966:52;4053:9;4040:23;4072:31;4097:5;4072:31;:::i;:::-;4122:5;-1:-1:-1;4179:2:1;4164:18;;4151:32;4192:33;4151:32;4192:33;:::i;:::-;4244:7;4234:17;;;3869:388;;;;;:::o;4498:248::-;4563:6;4571;4624:2;4612:9;4603:7;4599:23;4595:32;4592:52;;;4640:1;4637;4630:12;4592:52;4663:26;4679:9;4663:26;:::i;4977:356::-;5179:2;5161:21;;;5198:18;;;5191:30;5257:34;5252:2;5237:18;;5230:62;5324:2;5309:18;;4977:356::o;5692:127::-;5753:10;5748:3;5744:20;5741:1;5734:31;5784:4;5781:1;5774:15;5808:4;5805:1;5798:15;5824:422;5913:1;5956:5;5913:1;5970:270;5991:7;5981:8;5978:21;5970:270;;;6050:4;6046:1;6042:6;6038:17;6032:4;6029:27;6026:53;;;6059:18;;:::i;:::-;6109:7;6099:8;6095:22;6092:55;;;6129:16;;;;6092:55;6208:22;;;;6168:15;;;;5970:270;;;5974:3;5824:422;;;;;:::o;6251:806::-;6300:5;6330:8;6320:80;;-1:-1:-1;6371:1:1;6385:5;;6320:80;6419:4;6409:76;;-1:-1:-1;6456:1:1;6470:5;;6409:76;6501:4;6519:1;6514:59;;;;6587:1;6582:130;;;;6494:218;;6514:59;6544:1;6535:10;;6558:5;;;6582:130;6619:3;6609:8;6606:17;6603:43;;;6626:18;;:::i;:::-;-1:-1:-1;;6682:1:1;6668:16;;6697:5;;6494:218;;6796:2;6786:8;6783:16;6777:3;6771:4;6768:13;6764:36;6758:2;6748:8;6745:16;6740:2;6734:4;6731:12;6727:35;6724:77;6721:159;;;-1:-1:-1;6833:19:1;;;6865:5;;6721:159;6912:34;6937:8;6931:4;6912:34;:::i;:::-;6982:6;6978:1;6974:6;6970:19;6961:7;6958:32;6955:58;;;6993:18;;:::i;:::-;7031:20;;6251:806;-1:-1:-1;;;6251:806:1:o;7062:140::-;7120:5;7149:47;7190:4;7180:8;7176:19;7170:4;7149:47;:::i;7207:168::-;7247:7;7313:1;7309;7305:6;7301:14;7298:1;7295:21;7290:1;7283:9;7276:17;7272:45;7269:71;;;7320:18;;:::i;:::-;-1:-1:-1;7360:9:1;;7207:168::o;7380:184::-;7450:6;7503:2;7491:9;7482:7;7478:23;7474:32;7471:52;;;7519:1;7516;7509:12;7471:52;-1:-1:-1;7542:16:1;;7380:184;-1:-1:-1;7380:184:1:o;7569:217::-;7609:1;7635;7625:132;;7679:10;7674:3;7670:20;7667:1;7660:31;7714:4;7711:1;7704:15;7742:4;7739:1;7732:15;7625:132;-1:-1:-1;7771:9:1;;7569:217::o;9719:128::-;9759:3;9790:1;9786:6;9783:1;9780:13;9777:39;;;9796:18;;:::i;:::-;-1:-1:-1;9832:9:1;;9719:128::o;11375:127::-;11436:10;11431:3;11427:20;11424:1;11417:31;11467:4;11464:1;11457:15;11491:4;11488:1;11481:15;11507:251;11577:6;11630:2;11618:9;11609:7;11605:23;11601:32;11598:52;;;11646:1;11643;11636:12;11598:52;11678:9;11672:16;11697:31;11722:5;11697:31;:::i;11763:980::-;12025:4;12073:3;12062:9;12058:19;12104:6;12093:9;12086:25;12130:2;12168:6;12163:2;12152:9;12148:18;12141:34;12211:3;12206:2;12195:9;12191:18;12184:31;12235:6;12270;12264:13;12301:6;12293;12286:22;12339:3;12328:9;12324:19;12317:26;;12378:2;12370:6;12366:15;12352:29;;12399:1;12409:195;12423:6;12420:1;12417:13;12409:195;;;12488:13;;-1:-1:-1;;;;;12484:39:1;12472:52;;12579:15;;;;12544:12;;;;12520:1;12438:9;12409:195;;;-1:-1:-1;;;;;;;12660:32:1;;;;12655:2;12640:18;;12633:60;-1:-1:-1;;;12724:3:1;12709:19;12702:35;12621:3;11763:980;-1:-1:-1;;;11763:980:1:o;13360:306::-;13448:6;13456;13464;13517:2;13505:9;13496:7;13492:23;13488:32;13485:52;;;13533:1;13530;13523:12;13485:52;13562:9;13556:16;13546:26;;13612:2;13601:9;13597:18;13591:25;13581:35;;13656:2;13645:9;13641:18;13635:25;13625:35;;13360:306;;;;;:::o;13671:125::-;13711:4;13739:1;13736;13733:8;13730:34;;;13744:18;;:::i;:::-;-1:-1:-1;13781:9:1;;13671:125::o

Metadata Hash

b178f06c0c9557c4c3c89267cad55ef98687547618c6db3edda2491d99cd74f4
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.