Contract 0xf00598af0ccf2d43613414f36f40123337f56e71

 
Txn Hash
Block
From
To
Value [Txn Fee]
0xb659c93a9ba810f5345c162a6fc485c420d9f6754c30df0a7617e1dba49c29ad95839552021-07-29 20:57:599 mins ago0x20e51ffcb9829efac5e5887fea552a98d39ba8c4 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000433025
0x1a80f33e11fa801a6d9790be4ecbb86f7066f01ad473da947c8129e7ab58f17395834682021-07-29 20:33:1933 mins ago0xad9787544014385651434afb46d6e132ea9eb08a IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0xe655f682167f8bc577dc75643484b3aed244d36f01be5e522a7d9f9a9947daee95834462021-07-29 20:32:1334 mins ago0xb4f96f7ada9957ca2c8eb6875dbbf0a692c30ddf IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000433025
0xf4ebc3c8454f9f71c7b21143313fa770488930d9a37e46a0b1b6a053f1ca2bd995818862021-07-29 19:10:271 hr 56 mins ago0x9f311d8c0a257954a57fb1006939a76da68a763e IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0xdbbc7f1809726a7a58b24500047b4b9702d6f9bb7ab38f988f8d7cc59800c57d95808442021-07-29 18:14:372 hrs 52 mins ago0xd450b95ff83b0055966370979eda806888d37bae IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000433025
0x8b7572008a1e5a70b7a42ab843c6ee493e2b1943f6768081120fe2414a0e36b795805362021-07-29 17:58:293 hrs 8 mins ago0x64e13d037349d6f2b65b79501e09b97fc4c3a57d IN  0xf00598af0ccf2d43613414f36f40123337f56e710.01 BNB0.000276770343
0x7b0eb4ba620a9e1fda3c36503f4af76d3ed6e7ff683df5b0290245cad820527795805352021-07-29 17:58:263 hrs 8 mins ago0x64e13d037349d6f2b65b79501e09b97fc4c3a57d IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000412107405
0x0ff36b724df09b99d3d2196e97d4a7080fabb9f1ce81b6bb67d9b239552b03dc95804962021-07-29 17:56:213 hrs 10 mins ago0x81304864a29f9213bd1241611d870200c33dbdae IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000225965184
0x06d68d70e53a9f37fd0c35729718245588ed1873e21c118face17fae1d47d29695804212021-07-29 17:51:533 hrs 15 mins ago0x32794b9b75364fa302b57b5f964c8764abf2eb85 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000412107405
0xf9b1dd1a4095c12a5a38bb97bd60096331eb884117e3d064ba28c0fbfa05f67695801542021-07-29 17:38:053 hrs 28 mins ago0xee9f9155ecded1fd96b532baafe90cc25a7f47ae IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000225965184
0xbf412f61cf324ed499d20a39e9d6eea0555eb31abfae14f0458acffd3043c60395799182021-07-29 17:25:523 hrs 41 mins ago0xbef4ea72577789fce65b40ebbc6676109628646f IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000412107405
0xd7b65f61d9fb025fc46ede728e9cecb16fed1b00668ceb1762b85514384b470b95794282021-07-29 16:58:284 hrs 8 mins ago0xd24a0a8bcf2a14866b63761b45f88280cdc9b624 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000116283252
0x032e87c05119546936f04ea210657f11eb2831378031030be3ddf9dc4cd14c7195785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0xb4a0eefbc67c3cdfc0f6dac90a1301c00fd4a40e1f3a7ac0e6bab524167119bb95785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x6f48aa3eb2a12cb280fe326755cc80b37a6acbb980e6d4d4b1f4f764d502f95a95785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x4d3d8c8513420ecacb4913bc55d9b4e8538b35dfefa6cba063cd00e52d4eec0e95785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x3811871ab188df50075aa319983f468c1e61618f7a7be2fe1ef351e78eff7f2395785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0xfc8f7e1cf0b35115aa4676c7c783f1fffb576f48441e46784a7a6f33f4815bf295785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x1bb72ccaef4993557d1bbbba212781a0716cd057c10fca129467e39b95605b8e95785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x6a7592c3a3d9aa330228915f839d3e0c9ef32ce0cf51909b8cab69370f405f9995785232021-07-29 16:07:044 hrs 59 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x0774b8bbaef94e73eb456b2f9ee75f3475e9d86d42204871fb72a53782710c0595785212021-07-29 16:06:585 hrs ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0xa037702183a32d07bc88c6302ab4198f3682a6e181e61c59a9079ceb4acfe62395785212021-07-29 16:06:585 hrs ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x27bf7a6da3107aba21e5c297b6cd8fb1496a3ea7968f843e38da9a33d36cde5c95784132021-07-29 16:01:165 hrs 5 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00011626
0x87e258e3c7729aedf8d49f6a479908e4d79cdc088ffd1bc582f12a6bbeb20ee195784092021-07-29 16:01:045 hrs 5 mins ago0xf51a41fa0cf25bf705bd4624ed41dbc6e19a2701 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000433025
0x9ed3933eb68a1dfb745a2dcc91ade11f12700a5b44ed0e50c295a233ea859cd795783552021-07-29 15:58:105 hrs 8 mins ago0x036b1bb8325b3822580a9185c0fec06c61d78fac IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00035284
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4227dc0d27c87eb05b24910ed3f544f2aec4c93d809b07dfa075692b69ab4e8495835132021-07-29 20:35:3431 mins ago PancakeSwap: Router v2 0xf00598af0ccf2d43613414f36f40123337f56e710.000064978464897185 BNB
0x4227dc0d27c87eb05b24910ed3f544f2aec4c93d809b07dfa075692b69ab4e8495835132021-07-29 20:35:3431 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e71 PancakeSwap: Router v20.047475937002839805 BNB
0x4227dc0d27c87eb05b24910ed3f544f2aec4c93d809b07dfa075692b69ab4e8495835132021-07-29 20:35:3431 mins ago PancakeSwap: Router v2 0xf00598af0ccf2d43613414f36f40123337f56e710.047475937002839805 BNB
0x8b7572008a1e5a70b7a42ab843c6ee493e2b1943f6768081120fe2414a0e36b795805362021-07-29 17:58:293 hrs 8 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xc34d91e6ae74538e4b52c9d4cebdc70e603ee0ca67d43bbbe9550ef174c34dee95770872021-07-29 14:45:166 hrs 21 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0xf114c16224abb5c49e4253abd58c08aa09c88441cd0f828f580830421a55e88495761902021-07-29 13:51:057 hrs 15 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x4d1d42cb7f28ef74977fe4fab6833e0b49594072fcd975021f18fa0f227c9b5a95747792021-07-29 12:30:598 hrs 36 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0x44bc770d294a79382808b7b44fa20963fb57900d7a9435dfd8974d9a9e10b7f695741312021-07-29 11:56:229 hrs 10 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xa746e9580ded038ddce2f4b44b504cb74da834b6f43052d5cb263ce3dd00cf5095733722021-07-29 11:16:369 hrs 50 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.02 BNB
0xbe7328ae4d9acf3524576a202e7bca3b06094ceb9d69bff7f8e3c451b1735c2595725482021-07-29 10:33:1010 hrs 33 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.02 BNB
0x44326bd5d4cf3456ecbed0ecbd4707e6da9c3451a54816e04bf73902dea9b85a95721952021-07-29 10:14:2610 hrs 52 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.0005 BNB
0x94f73be517db825b4f83a84ea6364caabd684761cde7ccf1023005618237b18a95702652021-07-29 8:31:4112 hrs 35 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0xc4c72135c2a2255003571bd1987ee813c2436c2c4db80858ec91a1a95bae526895700902021-07-29 8:22:5612 hrs 44 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.0001 BNB
0x68ecb6cf2a72e9cfd8bc7406f70413124ad4b9ec05a20173795e9d0829184fed95504292021-07-28 15:08:201 day 5 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x00e043ac73e9ba6cdcca28121ee133446a05965883f2eb582e6a77585fe484b295408062021-07-28 6:09:541 day 14 hrs ago PancakeSwap: Router v2 0xf00598af0ccf2d43613414f36f40123337f56e710.00005310248668159 BNB
0x00e043ac73e9ba6cdcca28121ee133446a05965883f2eb582e6a77585fe484b295408062021-07-28 6:09:541 day 14 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e71 PancakeSwap: Router v20.043535704152383049 BNB
0x00e043ac73e9ba6cdcca28121ee133446a05965883f2eb582e6a77585fe484b295408062021-07-28 6:09:541 day 14 hrs ago PancakeSwap: Router v2 0xf00598af0ccf2d43613414f36f40123337f56e710.043535704152383049 BNB
0x1155d796a6372cd7af5416f6f7653bf438476af9f2c6d5170046fd9161ebb61d95385062021-07-28 4:08:091 day 16 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.005 BNB
0xa6f9933d1e0587c258c0e7e322545156beff1d030ab93e50b4b56bf324e6836d95305052021-07-27 21:08:381 day 23 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x10bf1e0f8ddd09ea4ccb516bb971d7c963d1861a47299174666f28d91a064e6a95288122021-07-27 19:37:342 days 1 hr ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x717279d090db864f818ec3d48b74de39d3fa9f0c2c1cbec0c2647547a895723d95113912021-07-27 3:32:422 days 17 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xa3e7a7f932aa6deba577b17cc26c4eaab990e678b64a788bdedd93cd35cfa6ba94680402021-07-25 14:40:144 days 6 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x3a78af01265cd48c5bf1a9ada0a94fc3de5b92c384d16d514663254a26da99a794320892021-07-24 8:25:495 days 12 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x228e6595d9157f24c6ee7bc66c8b87d2edfe2b087c184934f4c13981b1780b9994311362021-07-24 7:37:405 days 13 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xd8cb84761092a82e57857bb0903b7cef679aedba1c7fa5e322399502fd75364394173792021-07-23 20:07:426 days 59 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.02 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AntfToken

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-06-15
*/

pragma solidity ^0.8.0;

/*
    GMEB
*/

// SPDX-License-Identifier: MIT
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}


contract Tax {

    event SetBurnRatio(uint _newBurnRatio);
    event SetLiquidRatio(uint _newLiquidRatio);
    event SetCharityRatio(uint _newCharityRatio);
    event SetCharityAddress(address _newCharityAddress);

    event SetMinAutoLiquid(uint _newMinAutoLiquid);

    uint private _burnRatio;
    uint private _liquidRatio;
    uint private _charityRatio;

    uint constant denominator = 10000;

    uint private _minAutoLiquid;

    address private _charityAddress;

    uint internal _totalTax;

    function _setBurnRatio(
        uint _newBurnRatio
    )
        internal
    {
        _burnRatio = _newBurnRatio;
        emit SetBurnRatio(_newBurnRatio);
    }

    function _setLiquidRatio(
        uint _newLiquidRatio
    )
        internal
    {
        _liquidRatio = _newLiquidRatio;
        emit SetLiquidRatio(_newLiquidRatio);
    }

    function _setCharityRatio(
        uint _newCharityRatio
    )
        internal
    {
        _charityRatio = _newCharityRatio;
        emit SetCharityRatio(_newCharityRatio);
    }

    function _setCharityAddress(
        address _newCharityAddress
    )
        internal
    {
        _charityAddress = _newCharityAddress;
        emit SetCharityAddress(_newCharityAddress);
    }

    function _setMinAutoLiquid(
        uint _newMinAutoLiquid
    )
        internal
    {
        _minAutoLiquid = _newMinAutoLiquid;
        emit SetMinAutoLiquid(_newMinAutoLiquid);
    }

    function burnRatio()
        public
        view
        returns(uint)
    {
        return _burnRatio;
    }

    function liquidRatio()
        public
        view
        returns(uint)
    {
        return _liquidRatio;
    }

    function charityRatio()
        public
        view
        returns(uint)
    {
        return _charityRatio;
    }

    function charityAddress()
        public
        view
        returns(address)
    {
        return _charityAddress;
    }

    function minAutoLiquid()
        public
        view
        returns(uint)
    {
        return _minAutoLiquid;
    }

    function getFeeAmounts(
        uint _amount
    )
        public
        view
        returns(uint burnA, uint taxA)
    {
        uint tmp = _amount / denominator;
        burnA = tmp * _burnRatio;
        taxA = tmp * (_liquidRatio + _charityRatio);
    }

    function _splitLiquidCharityFromTax(
        uint _maxAmount
    )
        internal
        returns(uint liquidA, uint charityA)
    {
        uint _amount = _maxAmount > _totalTax ? _totalTax : _maxAmount;
        uint tmp = _amount / (_liquidRatio + _charityRatio);
        liquidA = tmp * _liquidRatio;
        charityA = _amount - liquidA;
        // reset
        _totalTax -= _amount;
    }
}


// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


contract Sale {
    using SafeMath for uint;

    event SetPrice(uint _newPrice);
    event SetSaleAmount(uint _oldSaleAmount, uint _newSaleAmount);
    event SetSaleOwner(address payable _newSaleOwner);

    event Buy(uint _tokenAmount);

    uint private _price;
    uint private _saleAmount;

    address payable private _saleOwner;

    function _setPrice(
        uint _newPrice
    )
        internal
    {
        _price = _newPrice;
        emit SetPrice(_newPrice);
    }

    function _setSaleAmount(
        uint _newSaleAmount
    )
        internal
    {
        emit SetSaleAmount(_saleAmount, _newSaleAmount);
        _saleAmount = _newSaleAmount;
    }

    function _setSaleOwner(
        address payable _newSaleOwner
    )
        internal
    {
        _saleOwner = _newSaleOwner;
        emit SetSaleOwner(_newSaleOwner);
    }

    function _saleStop()
        internal
    {
        _setSaleAmount(0);
    }

    function _buy(
        uint value
    )
        internal
        returns(uint)
    {
        uint tokenAmount = value.mul(1 ether).div(_price);
        _saleAmount = _saleAmount.sub(tokenAmount);
        emit Buy(tokenAmount);
        _saleOwner.transfer(value);
        return tokenAmount;
    }

    function saleOwner()
        public
        view
        returns(address payable)
    {
        return _saleOwner;
    }

    function price()
        public
        view
        returns(uint)
    {
        return _price;
    }

    function saleAmount()
        public
        view
        returns(uint)
    {
        return _saleAmount;
    }
}


contract Referral {
    event AddRef(address _address, address _ref);
    event SetRefPercents(uint _newF1Percent, uint _newF2Percent, uint _newF3Percent);

    mapping(address => address) private _refOf;

    uint private _f1Percent;
    uint private _f2Percent;
    uint private _f3Percent;

    function _setRefPercents(
        uint _newF1Percent,
        uint _newF2Percent,
        uint _newF3Percent
    )
        internal
    {
        _f1Percent = _newF1Percent;
        _f2Percent = _newF2Percent;
        _f3Percent = _newF3Percent;
        emit SetRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
    }

    function _addRef(
        address _address,
        address _ref
    )
        internal
    {
        if (_refOf[_address] == address(0x0) && _address != _ref) {
            _refOf[_address] = _ref;
            emit AddRef(_address, _ref);
        }
    }

    function refOf(
        address _address
    )
        public
        view
        returns(address)
    {
        return _refOf[_address];
    }

    function f1Percent()
        public
        view
        returns(uint)
    {
        return _f1Percent;
    }

    function f2Percent()
        public
        view
        returns(uint)
    {
        return _f2Percent;
    }

    function f3Percent()
        public
        view
        returns(uint)
    {
        return _f3Percent;
    }
}


contract Claim {
    modifier onlyNotClaimed(address _claimer) {
        require(!_isClaimed[_claimer], "already claimed!");
        _;
    }

    mapping(address => bool) private _isClaimed;

    uint private _claimCost;
    uint private _claimAmount;
    uint private _refClaimAmount;

    bool private _isClaimStopped;

    function _stopClaim()
        internal
    {
        _isClaimStopped = true;
    }

    function _startClaim()
        internal
    {
        _isClaimStopped = false;
    }

    function _setClaimCost(
        uint _newClaimCost
    )
        internal
    {
        _claimCost = _newClaimCost;
    }

    function _setClaimAmount(
        uint _newClaimAmount
    )
        internal
    {
        _claimAmount = _newClaimAmount;
    }

    function _setRefClaimAmount(
        uint _newRefClaimAmount
    )
        internal
    {
        _refClaimAmount = _newRefClaimAmount;
    }

    function _claim(
        address _claimer
    )
        internal
        onlyNotClaimed(_claimer)
        returns(uint, uint)
    {
        require(!_isClaimStopped, "Claimming programm has been stopped!");
        _isClaimed[_claimer] = true;
        if (_claimCost > 0) {
            require(msg.value >= _claimCost, "claim cost a bit bnb!");
        }
        return (_claimAmount, _refClaimAmount);
    }

    function isClaimed(
        address _claimer
    )
        public
        view
        returns(bool)
    {
        return _isClaimed[_claimer];
    }

    function isClaimStopped()
        public
        view
        returns(bool)
    {
        return _isClaimStopped;
    }

    function claimCost()
        public
        view
        returns(uint)
    {
        return _claimCost;
    }

    function claimAmount()
        public
        view
        returns(uint)
    {
        return _claimAmount;
    }

    function refClaimAmount()
        public
        view
        returns(uint)
    {
        return _refClaimAmount;
    }
}


contract Admin {
    modifier onlyAdmin() {
        require(msg.sender == _admin, "is not admin!");
        _;
    }

    address private _admin;

    constructor (
        address _initAdmin
    )
    {
        _admin = _initAdmin;
    }

    function setAdmin(
        address _newAdmin
    )
        public
        onlyAdmin
    {
        _admin = _newAdmin;
    }

    function admin()
        public
        view
        returns(address)
    {
        return _admin;
    }
}


contract Whitelist {
    event AddToWhitelist(address _address);
    event RemoveFromWhitelist(address _address);

    mapping(address => bool) private _isWhitelisted;

    function _addToWhitelist(
        address _address
    )
        internal
    {
        if (_isWhitelisted[_address]) {
            return;
        }
        _isWhitelisted[_address] = true;
        emit AddToWhitelist(_address);
    }

    function _removeFromWhitelist(
        address _address
    )
        internal
    {
        if (!_isWhitelisted[_address]) {
            return;
        }
        _isWhitelisted[_address] = false;
        emit RemoveFromWhitelist(_address);
    }

    function isWhitelisted(
        address _address
    )
        public
        view
        returns(bool)
    {
        return _isWhitelisted[_address];
    }
}


contract Settings is Admin, Tax, Sale, Referral, Claim, Whitelist {
    constructor (
        address _initAdmin
    )
        Admin(_initAdmin)
    {
    }

    /*
        REFERRAL
    */

    function setRefPercents(
        uint _newF1Percent,
        uint _newF2Percent,
        uint _newF3Percent
    )
        public
        onlyAdmin
    {
        _setRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
    }

    /*
        SALE
    */

    function setPrice(
        uint _newPrice
    )
        public
        onlyAdmin
    {
        _setPrice(_newPrice);
    }

    function setSaleAmount(
        uint _newSaleAmount
    )
        public
        onlyAdmin
    {
        _setSaleAmount(_newSaleAmount);
    }

    function setSaleOwner(
        address payable _newSaleOwner
    )
        public
        onlyAdmin
    {
        _setSaleOwner(_newSaleOwner);
    }

    function saleStop()
        public
        onlyAdmin
    {
        _saleStop();
    }

    /*
        TAX
    */

    function setBurnRatio(
        uint _newBurnRatio
    )
        public
        onlyAdmin
    {
        _setBurnRatio(_newBurnRatio);
    }

    function setLiquidRatio(
        uint _newLiquidRatio
    )
        public
        onlyAdmin
    {
        _setLiquidRatio(_newLiquidRatio);
    }

    function setCharityRatio(
        uint _newCharityRatio
    )
        public
        onlyAdmin
    {
        _setCharityRatio(_newCharityRatio);
    }

    function setCharityAddress(
        address _newCharityAddress
    )
        public
        onlyAdmin
    {
        _setCharityAddress(_newCharityAddress);
    }

    function setMinAutoLiquid(
        uint _newMinAutoLiquid
    )
        public
        onlyAdmin
    {
        _setMinAutoLiquid(_newMinAutoLiquid);
    }

    /*
        WHITELIST
    */

    function addToWhitelist(
        address _address
    )
        public
        onlyAdmin
    {
        _addToWhitelist(_address);
    }

    function removeFromWhitelist(
        address _address
    )
        public
        onlyAdmin
    {
        _removeFromWhitelist(_address);
    }

    /*
        CLAIM
    */
    function setClaimCost(
        uint _newClaimCost
    )
        public
        onlyAdmin
    {
        _setClaimCost(_newClaimCost);
    }

    function setClaimAmount(
        uint _newClaimAmount
    )
        public
        onlyAdmin
    {
        _setClaimAmount(_newClaimAmount);
    }

    function setRefClaimAmount(
        uint _newRefClaimAmount
    )
        public
        onlyAdmin
    {
        _setRefClaimAmount(_newRefClaimAmount);
    }

    function stopClaim()
        public
        onlyAdmin
    {
        _stopClaim();
    }

    function startClaim()
        public
        onlyAdmin
    {
        _startClaim();
    }
}


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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

contract AntfToken is ERC20, Settings {
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    address constant public uniswapV2FactoryAddr = address(0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73);
    address constant public uniswapV2RouterAddr = address(0x10ED43C718714eb63d5aA57B78B54704E256024E);
    address constant public WBNBAddr = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    address constant private ZERO_ADDRESS = address(0x0);

    uint private _lastAutoSwapLiquidBlock;

    constructor (string memory name, string memory symbol, address _initAdmin)
        ERC20(name, symbol)
        Settings(_initAdmin)
    {
        uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAddr);
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2FactoryAddr)
            .createPair(address(this), WBNBAddr);
        uniswapV2Pair = _uniswapV2Pair;

        _addToWhitelist(address(this));

        uint initTotal = 1e6 * 1e9 ether;
        uint initContractBalance = 275000 * 1e9 ether;
        _mint(address(this), initContractBalance);
        _mint(_initAdmin, initTotal - initContractBalance);
        // Init
        _setSaleAmount(initTotal);
        _setMinAutoLiquid(totalSupply() * 5 / 10000);

        _setSaleOwner(payable(0x5eD06B57A82dDdf9A5328e5035253EDb247d65ff));
        _setCharityAddress(payable(0xDf2dF79841a1cc0eddA5fd20C5a2fd67406d6cBf));

        // denominator = 10000
        _setBurnRatio(200);
        _setLiquidRatio(300);
        _setCharityRatio(300);

        _setClaimAmount(100 * 1e6 ether);
        _setRefClaimAmount(50 * 1e6 ether);

        // 1 bnb = 300 bil tokens
        uint oneBnb = 320 * 1e9;
        _setPrice(1 ether / oneBnb);

        _setRefPercents(30, 15, 5);
    }

    receive() external payable {}

    function _autoSwapAndLiquify(address _from) internal {
        if (_totalTax >= minAutoLiquid() && _from != uniswapV2Pair) {
            if (block.number != _lastAutoSwapLiquidBlock) {
                _lastAutoSwapLiquidBlock = block.number;
                swapAndLiquify();
            }
        }
    }

    function swapAndLiquify() public {
        (uint liquidA, uint charityA) = _splitLiquidCharityFromTax(minAutoLiquid());
        swapTokensForEth(charityA, charityAddress());
        // split the contract balance into halves
        uint256 half = liquidA / 2;
        uint256 otherHalf = liquidA - half;
        // swap tokens for ETH
        uint initCoinBalance = address(this).balance;
        swapTokensForEth(half, address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 addedCoinBalance = address(this).balance - initCoinBalance;

        // add liquidity to uniswap
        addLiquidity(otherHalf, addedCoinBalance, charityAddress());
        
        emit SwapAndLiquify(half, addedCoinBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount, address to) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            to,
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount, address lpOwner) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpOwner,
            block.timestamp
        );
    }

    function _tax(
        address sender,
        address recipient,
        uint amount
    )
        internal
        returns(uint)
    {
        if (isWhitelisted(sender) || isWhitelisted(recipient)) {
            return amount;
        }
        (uint burnA, uint taxA) = getFeeAmounts(amount);
        _burn(sender, burnA);
        _transfer(sender, address(this), taxA);
        _totalTax += taxA;

        require(taxA + burnA < amount, "invalid tax amount");
        return amount - taxA - burnA;
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _autoSwapAndLiquify(_msgSender());
        uint afterTaxAmount = _tax(_msgSender(), recipient, amount);
        _transfer(_msgSender(), recipient, afterTaxAmount);

        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _autoSwapAndLiquify(sender);
        uint afterTaxAmount = _tax(sender, recipient, amount);
        _transfer(sender, recipient, afterTaxAmount);

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

        return true;
    }

    /*
        Sale
    */

    function buy(
        address _ref
    )
        public
        payable
    {
        uint tokenAmount = _buy(msg.value);
        _transfer(address(this), _msgSender(), tokenAmount);
        _addRef(_msgSender(), _ref);

        address f1 = refOf(_msgSender());
        // stop if F1 not found
        if (f1 == ZERO_ADDRESS) {
            return;
        }
        uint onePercent = tokenAmount / 100;
        _transfer(address(this), f1, onePercent * f1Percent());

        address f2 = refOf(f1);
        // stop if F2 not found
        if (f2 == ZERO_ADDRESS) {
            return;
        }
        _transfer(address(this), f2, onePercent * f2Percent());

        address f3 = refOf(f2);
        // stop if F3 not found
        if (f3 == ZERO_ADDRESS) {
            return;
        }
        _transfer(address(this), f3, onePercent * f3Percent());
    }

    /*
        CLAIM
    */

    function claim(
        address _ref
    )
        public
        payable
    {
        require(tx.origin == msg.sender, "spammer go away!");
        (uint claimAmount, uint refClaimAmount) = _claim(msg.sender);
        _transfer(address(this), _msgSender(), claimAmount);
        _transfer(address(this), _ref, refClaimAmount);
    }

    /*
        SaleOwner
    */

    function withdraw(
        uint _amount
    )
        public
        onlyAdmin
    {
        _transfer(address(this), saleOwner(), _amount);
        require(balanceOf(address(this)) >= _totalTax, "withdraw too much!");
    }
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_initAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"address","name":"_ref","type":"address"}],"name":"AddRef","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddToWhitelist","type":"event"},{"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":"_tokenAmount","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"RemoveFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"SetBurnRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"SetCharityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"SetCharityRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"SetLiquidRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"SetMinAutoLiquid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"SetPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"SetRefPercents","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_oldSaleAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"SetSaleAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"SetSaleOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"WBNBAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"f1Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f2Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f3Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getFeeAmounts","outputs":[{"internalType":"uint256","name":"burnA","type":"uint256"},{"internalType":"uint256","name":"taxA","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isClaimStopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_claimer","type":"address"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAutoLiquid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"refOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"setBurnRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"setCharityRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimAmount","type":"uint256"}],"name":"setClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimCost","type":"uint256"}],"name":"setClaimCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"setLiquidRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"setMinAutoLiquid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRefClaimAmount","type":"uint256"}],"name":"setRefClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"setRefPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"setSaleAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"setSaleOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"uniswapV2FactoryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2RouterAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b5060405162005aea38038062005aea833981810160405281019062000037919062000a78565b8080848481600390805190602001906200005392919062000913565b5080600490805190602001906200006c92919062000913565b50505080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050507310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600073ca143ce32fe78f1f7019d7d551a6402fc5350c7373ffffffffffffffffffffffffffffffffffffffff1663c9c653963073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6040518363ffffffff1660e01b81526004016200016492919062000b94565b602060405180830381600087803b1580156200017f57600080fd5b505af115801562000194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000a4c565b90508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200020430620003b660201b60201c565b60006d314dc6448d9338c15b0a00000000905060006d0d8efcec73bbaf9b92a2c000000090506200023c3082620004a460201b60201c565b6200025b8482846200024f919062000dd0565b620004a460201b60201c565b6200026c826200060960201b60201c565b620002a96127106005620002856200065060201b60201c565b62000291919062000d6f565b6200029d919062000d37565b6200065a60201b60201c565b620002ce735ed06b57a82dddf9a5328e5035253edb247d65ff6200069d60201b60201c565b620002f373df2df79841a1cc0edda5fd20c5a2fd67406d6cbf6200071a60201b60201c565b6200030560c86200079760201b60201c565b6200031861012c620007da60201b60201c565b6200032b61012c6200081d60201b60201c565b620003476a52b7d2dcc80cd2e40000006200086060201b60201c565b620003636a295be96e640669720000006200086a60201b60201c565b6000644a817c800090506200039381670de0b6b3a764000062000387919062000d37565b6200087460201b60201c565b620003a9601e600f6005620008b760201b60201c565b505050505050506200100f565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200040f57620004a1565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405162000498919062000b5a565b60405180910390a15b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200050e9062000bc1565b60405180910390fd5b6200052b600083836200090e60201b60201c565b80600260008282546200053f919062000cda565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000596919062000cda565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005fd919062000be3565b60405180910390a35050565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d54826040516200063e92919062000c00565b60405180910390a180600d8190555050565b6000600254905090565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd8160405162000692919062000be3565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd816040516200070f919062000b77565b60405180910390a150565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516200078c919062000b5a565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051620007cf919062000be3565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c28160405162000812919062000be3565b60405180910390a150565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405162000855919062000be3565b60405180910390a150565b8060158190555050565b8060168190555050565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051620008ac919062000be3565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051620009019392919062000c2d565b60405180910390a1505050565b505050565b828054620009219062000e93565b90600052602060002090601f01602090048101928262000945576000855562000991565b82601f106200096057805160ff191683800117855562000991565b8280016001018555821562000991579182015b828111156200099057825182559160200191906001019062000973565b5b509050620009a09190620009a4565b5090565b5b80821115620009bf576000816000905550600101620009a5565b5090565b6000620009da620009d48462000c93565b62000c6a565b905082815260208101848484011115620009f357600080fd5b62000a0084828562000e5d565b509392505050565b60008151905062000a198162000ff5565b92915050565b600082601f83011262000a3157600080fd5b815162000a43848260208601620009c3565b91505092915050565b60006020828403121562000a5f57600080fd5b600062000a6f8482850162000a08565b91505092915050565b60008060006060848603121562000a8e57600080fd5b600084015167ffffffffffffffff81111562000aa957600080fd5b62000ab78682870162000a1f565b935050602084015167ffffffffffffffff81111562000ad557600080fd5b62000ae38682870162000a1f565b925050604062000af68682870162000a08565b9150509250925092565b62000b0b8162000e1f565b82525050565b62000b1c8162000e0b565b82525050565b600062000b31601f8362000cc9565b915062000b3e8262000fcc565b602082019050919050565b62000b548162000e53565b82525050565b600060208201905062000b71600083018462000b11565b92915050565b600060208201905062000b8e600083018462000b00565b92915050565b600060408201905062000bab600083018562000b11565b62000bba602083018462000b11565b9392505050565b6000602082019050818103600083015262000bdc8162000b22565b9050919050565b600060208201905062000bfa600083018462000b49565b92915050565b600060408201905062000c17600083018562000b49565b62000c26602083018462000b49565b9392505050565b600060608201905062000c44600083018662000b49565b62000c53602083018562000b49565b62000c62604083018462000b49565b949350505050565b600062000c7662000c89565b905062000c84828262000ec9565b919050565b6000604051905090565b600067ffffffffffffffff82111562000cb15762000cb062000f8c565b5b62000cbc8262000fbb565b9050602081019050919050565b600082825260208201905092915050565b600062000ce78262000e53565b915062000cf48362000e53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d2c5762000d2b62000eff565b5b828201905092915050565b600062000d448262000e53565b915062000d518362000e53565b92508262000d645762000d6362000f2e565b5b828204905092915050565b600062000d7c8262000e53565b915062000d898362000e53565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dc55762000dc462000eff565b5b828202905092915050565b600062000ddd8262000e53565b915062000dea8362000e53565b92508282101562000e005762000dff62000eff565b5b828203905092915050565b600062000e188262000e33565b9050919050565b600062000e2c8262000e33565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e7d57808201518184015260208101905062000e60565b8381111562000e8d576000848401525b50505050565b6000600282049050600182168062000eac57607f821691505b6020821081141562000ec35762000ec262000f5d565b5b50919050565b62000ed48262000fbb565b810181811067ffffffffffffffff8211171562000ef65762000ef562000f8c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620010008162000e0b565b81146200100c57600080fd5b50565b60805160601c60a05160601c614a8562001065600039600081816113950152612ada015260008181610eea015281816130640152818161317a015281816131a10152818161323e01526132650152614a856000f3fe6080604052600436106103855760003560e01c806391b7f5ed116101d1578063bbf1746111610102578063e43252d7116100a0578063f088d5471161006f578063f088d54714610cff578063f851a44014610d1b578063ff142f9714610d46578063ff6c9bc914610d715761038c565b8063e43252d714610c6b578063e7847a4b14610c94578063e7cbbe7314610cbf578063ecbfc07714610ce85761038c565b8063cedfe42f116100dc578063cedfe42f14610bad578063d4e66bef14610bd8578063dd62ed3e14610c03578063e416d63214610c405761038c565b8063bbf1746114610b1a578063c6c28fd014610b45578063cea2085114610b825761038c565b8063a6cee3ae1161016f578063b1c7ef0c11610149578063b1c7ef0c14610a86578063b29ad50a14610aaf578063b3890faf14610ac6578063bbe15f8214610af15761038c565b8063a6cee3ae146109f5578063a9059cbb14610a1e578063afcf2fc414610a5b5761038c565b80639a18553b116101ab5780639a18553b146109395780639a2bcd2714610964578063a035b1fe1461098d578063a457c2d7146109b85761038c565b806391b7f5ed146108bc5780639370131f146108e557806395d89b411461090e5761038c565b80633af32abf116102b657806370a0823111610254578063882f414d11610223578063882f414d146108005780638aae995a1461082b5780638ab1d681146108565780638cc080251461087f5761038c565b806370a0823114610758578063729d5591146107955780638078059c146107be578063830953ab146107d55761038c565b8063510db7ca11610290578063510db7ca1461069d5780635192c82c146106db5780635294d01114610706578063704b6c021461072f5761038c565b80633af32abf1461060c5780634974c1db1461064957806349bd5a5e146106725761038c565b80631a7140631161032357806323b872dd116102fd57806323b872dd1461053e5780632e1a7d4d1461057b578063313ce567146105a457806339509351146105cf5761038c565b80631a714063146104ce5780631e83409a146104f7578063216eff87146105135761038c565b80630c9be46d1161035f5780630c9be46d146104245780630fb8184b1461044d5780631694505e1461047857806318160ddd146104a35761038c565b806306fdde03146103915780630880f58b146103bc578063095ea7b3146103e75761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d88565b6040516103b39190613fe2565b60405180910390f35b3480156103c857600080fd5b506103d1610e1a565b6040516103de9190614204565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190613a92565b610e24565b60405161041b9190613fac565b60405180910390f35b34801561043057600080fd5b5061044b6004803603810190610446919061398c565b610e42565b005b34801561045957600080fd5b50610462610ede565b60405161046f9190614204565b60405180910390f35b34801561048457600080fd5b5061048d610ee8565b60405161049a9190613fc7565b60405180910390f35b3480156104af57600080fd5b506104b8610f0c565b6040516104c59190614204565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ace565b610f16565b005b610511600480360381019061050c919061398c565b610fb2565b005b34801561051f57600080fd5b50610528611052565b6040516105359190614204565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a43565b61105c565b6040516105729190613fac565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613ace565b6110fa565b005b3480156105b057600080fd5b506105b96111ec565b6040516105c691906142d9565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190613a92565b6111f5565b6040516106039190613fac565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061398c565b6112a1565b6040516106409190613fac565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613ace565b6112f7565b005b34801561067e57600080fd5b50610687611393565b6040516106949190613eec565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613ace565b6113b7565b6040516106d2929190614279565b60405180910390f35b3480156106e757600080fd5b506106f06113ff565b6040516106fd9190614204565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906139de565b611409565b005b34801561073b57600080fd5b506107566004803603810190610751919061398c565b6114a5565b005b34801561076457600080fd5b5061077f600480360381019061077a919061398c565b611579565b60405161078c9190614204565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613af7565b6115c1565b005b3480156107ca57600080fd5b506107d3611661565b005b3480156107e157600080fd5b506107ea6116fb565b6040516107f79190614204565b60405180910390f35b34801561080c57600080fd5b50610815611705565b6040516108229190614204565b60405180910390f35b34801561083757600080fd5b5061084061170f565b60405161084d9190614204565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061398c565b611719565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061398c565b6117b5565b6040516108b39190613fac565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613ace565b61180b565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613ace565b6118a7565b005b34801561091a57600080fd5b50610923611943565b6040516109309190613fe2565b60405180910390f35b34801561094557600080fd5b5061094e6119d5565b60405161095b9190614204565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613ace565b6119df565b005b34801561099957600080fd5b506109a2611a7b565b6040516109af9190614204565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190613a92565b611a85565b6040516109ec9190613fac565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190613ace565b611b70565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613a92565b611c0c565b604051610a529190613fac565b60405180910390f35b348015610a6757600080fd5b50610a70611c51565b604051610a7d9190613eec565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa89190613ace565b611c7b565b005b348015610abb57600080fd5b50610ac4611d17565b005b348015610ad257600080fd5b50610adb611dd4565b604051610ae89190613f07565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190613ace565b611dfe565b005b348015610b2657600080fd5b50610b2f611e9a565b604051610b3c9190614204565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061398c565b611ea4565b604051610b799190613eec565b60405180910390f35b348015610b8e57600080fd5b50610b97611f0d565b604051610ba49190613eec565b60405180910390f35b348015610bb957600080fd5b50610bc2611f25565b604051610bcf9190613eec565b60405180910390f35b348015610be457600080fd5b50610bed611f3d565b604051610bfa9190613fac565b60405180910390f35b348015610c0f57600080fd5b50610c2a6004803603810190610c259190613a07565b611f54565b604051610c379190614204565b60405180910390f35b348015610c4c57600080fd5b50610c55611fdb565b604051610c629190614204565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d919061398c565b611fe5565b005b348015610ca057600080fd5b50610ca9612081565b604051610cb69190614204565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190613ace565b61208b565b005b348015610cf457600080fd5b50610cfd612127565b005b610d196004803603810190610d14919061398c565b6121c1565b005b348015610d2757600080fd5b50610d30612349565b604051610d3d9190613eec565b60405180910390f35b348015610d5257600080fd5b50610d5b612373565b604051610d689190613eec565b60405180910390f35b348015610d7d57600080fd5b50610d8661238b565b005b606060038054610d979061452e565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc39061452e565b8015610e105780601f10610de557610100808354040283529160200191610e10565b820191906000526020600020905b815481529060010190602001808311610df357829003601f168201915b5050505050905090565b6000601154905090565b6000610e38610e31612425565b848461242d565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906140c4565b60405180910390fd5b610edb816125f8565b50565b6000601454905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906140c4565b60405180910390fd5b610faf81612673565b50565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790614124565b60405180910390fd5b60008061102c336126b4565b915091506110423061103c612425565b8461284e565b61104d30848361284e565b505050565b6000600854905090565b600061106784612ac4565b6000611074858585612b4b565b905061108185858361284e565b60006110948661108f612425565b611f54565b9050838110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614104565b60405180910390fd5b6110ed866110e5612425565b86840361242d565b6001925050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906140c4565b60405180910390fd5b61119c30611196611dd4565b8361284e565b600b546111a830611579565b10156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090614044565b60405180910390fd5b50565b60006012905090565b6000611297611202612425565b848460016000611210612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112929190614349565b61242d565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906140c4565b60405180910390fd5b61139081612c21565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000612710846113ca919061439f565b9050600654816113da91906143d0565b92506008546007546113ec9190614349565b816113f791906143d0565b915050915091565b6000600654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611490906140c4565b60405180910390fd5b6114a281612c62565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906140c4565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906140c4565b60405180910390fd5b61165c838383612cdd565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906140c4565b60405180910390fd5b6116f9612d32565b565b6000601554905090565b6000600954905090565b6000600d54905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906140c4565b60405180910390fd5b6117b281612d3e565b50565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906140c4565b60405180910390fd5b6118a481612e27565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906140c4565b60405180910390fd5b61194081612e68565b50565b6060600480546119529061452e565b80601f016020809104026020016040519081016040528092919081815260200182805461197e9061452e565b80156119cb5780601f106119a0576101008083540402835291602001916119cb565b820191906000526020600020905b8154815290600101906020018083116119ae57829003601f168201915b5050505050905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a66906140c4565b60405180910390fd5b611a7881612ea9565b50565b6000600c54905090565b60008060016000611a94612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b48906141e4565b60405180910390fd5b611b65611b5c612425565b8585840361242d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906140c4565b60405180910390fd5b611c0981612eee565b50565b6000611c1e611c19612425565b612ac4565b6000611c32611c2b612425565b8585612b4b565b9050611c46611c3f612425565b858361284e565b600191505092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906140c4565b60405180910390fd5b611d1481612ef8565b50565b600080611d2a611d25611705565b612f02565b91509150611d3f81611d3a611c51565b612f79565b6000600283611d4e919061439f565b905060008184611d5e919061442a565b90506000479050611d6f8330612f79565b60008147611d7d919061442a565b9050611d918382611d8c611c51565b613238565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611dc4939291906142a2565b60405180910390a1505050505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e85906140c4565b60405180910390fd5b611e9781613322565b50565b6000601254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b73bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6000601760009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140c4565b60405180910390fd5b61207e8161332c565b50565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612112906140c4565b60405180910390fd5b61212481613416565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ae906140c4565b60405180910390fd5b6121bf613457565b565b60006121cc34613474565b90506121e0306121da612425565b8361284e565b6121f16121eb612425565b8361356c565b60006122036121fe612425565b611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612241575050612346565b6000606483612250919061439f565b905061226f308361225f6119d5565b8461226a91906143d0565b61284e565b600061227a83611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ba5750505050612346565b6122d730826122c7610e1a565b856122d291906143d0565b61284e565b60006122e282611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612323575050505050612346565b6123403082612330611e9a565b8661233b91906143d0565b61284e565b50505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73ca143ce32fe78f1f7019d7d551a6402fc5350c7381565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906140c4565b60405180910390fd5b6124236136f4565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906141a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614084565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125eb9190614204565b60405180910390a3505050565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516126689190613eec565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c2816040516126a99190614204565b60405180910390a150565b60008082601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614024565b60405180910390fd5b601760009054906101000a900460ff1615612795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278c906140e4565b60405180910390fd5b6001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601454111561283e5760145434101561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614164565b60405180910390fd5b5b6015546016549250925050915091565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292590614004565b60405180910390fd5b612939838383613711565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b6906140a4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a529190614349565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab69190614204565b60405180910390a350505050565b612acc611705565b600b5410158015612b2957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612b48576019544314612b475743601981905550612b46611d17565b5b5b50565b6000612b56846112a1565b80612b665750612b65836112a1565b5b15612b7357819050612c1a565b600080612b7f846113b7565b91509150612b8d8683613716565b612b9886308361284e565b80600b6000828254612baa9190614349565b92505081905550838282612bbe9190614349565b10612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906141c4565b60405180910390fd5b818185612c0b919061442a565b612c15919061442a565b925050505b9392505050565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd81604051612c579190614204565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd81604051612cd29190613f07565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051612d25939291906142a2565b60405180910390a1505050565b612d3c6000612ea9565b565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9457612e24565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c281604051612e1b9190613eec565b60405180910390a15b50565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051612e5d9190614204565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051612e9e9190614204565b60405180910390a150565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d5482604051612edc929190614279565b60405180910390a180600d8190555050565b8060168190555050565b8060158190555050565b6000806000600b548411612f165783612f1a565b600b545b90506000600854600754612f2e9190614349565b82612f39919061439f565b905060075481612f4991906143d0565b93508382612f57919061442a565b925081600b6000828254612f6b919061442a565b925050819055505050915091565b6000600267ffffffffffffffff811115612fbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fea5781602001602082028036833780820191505090505b5090503081600081518110613028577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c857600080fd5b505afa1580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906139b5565b8160018151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319f307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b815260040161320195949392919061421f565b600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b613263307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016132c896959493929190613f4b565b6060604051808303818588803b1580156132e157600080fd5b505af11580156132f5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061331a9190613b46565b505050505050565b8060148190555050565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338357613413565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405161340a9190613eec565b60405180910390a15b50565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405161344c9190614204565b60405180910390a150565b6000601760006101000a81548160ff021916908315150217905550565b6000806134a6600c54613498670de0b6b3a7640000866138e190919063ffffffff16565b6138f790919063ffffffff16565b90506134bd81600d5461390d90919063ffffffff16565b600d819055507f3e32821836f4caf5b64b2c8c6b460049a9797526960d31502f7575b8da39d5ae816040516134f29190614204565b60405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613562573d6000803e3d6000fd5b5080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561363357508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136f05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4b5a65160b65ceef3b5428df4099f8a83aa7b36ca454012f42958b372510d9f782826040516136e7929190613f22565b60405180910390a15b5050565b6001601760006101000a81548160ff021916908315150217905550565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d90614144565b60405180910390fd5b61379282600083613711565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90614064565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461386f919061442a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d49190614204565b60405180910390a3505050565b600081836138ef91906143d0565b905092915050565b60008183613905919061439f565b905092915050565b6000818361391b919061442a565b905092915050565b60008135905061393281614a0a565b92915050565b60008151905061394781614a0a565b92915050565b60008135905061395c81614a21565b92915050565b60008135905061397181614a38565b92915050565b60008151905061398681614a38565b92915050565b60006020828403121561399e57600080fd5b60006139ac84828501613923565b91505092915050565b6000602082840312156139c757600080fd5b60006139d584828501613938565b91505092915050565b6000602082840312156139f057600080fd5b60006139fe8482850161394d565b91505092915050565b60008060408385031215613a1a57600080fd5b6000613a2885828601613923565b9250506020613a3985828601613923565b9150509250929050565b600080600060608486031215613a5857600080fd5b6000613a6686828701613923565b9350506020613a7786828701613923565b9250506040613a8886828701613962565b9150509250925092565b60008060408385031215613aa557600080fd5b6000613ab385828601613923565b9250506020613ac485828601613962565b9150509250929050565b600060208284031215613ae057600080fd5b6000613aee84828501613962565b91505092915050565b600080600060608486031215613b0c57600080fd5b6000613b1a86828701613962565b9350506020613b2b86828701613962565b9250506040613b3c86828701613962565b9150509250925092565b600080600060608486031215613b5b57600080fd5b6000613b6986828701613977565b9350506020613b7a86828701613977565b9250506040613b8b86828701613977565b9150509250925092565b6000613ba18383613bbc565b60208301905092915050565b613bb681614470565b82525050565b613bc58161445e565b82525050565b613bd48161445e565b82525050565b6000613be582614304565b613bef8185614327565b9350613bfa836142f4565b8060005b83811015613c2b578151613c128882613b95565b9750613c1d8361431a565b925050600181019050613bfe565b5085935050505092915050565b613c4181614482565b82525050565b613c50816144c5565b82525050565b613c5f816144e9565b82525050565b6000613c708261430f565b613c7a8185614338565b9350613c8a8185602086016144fb565b613c93816145ed565b840191505092915050565b6000613cab602383614338565b9150613cb6826145fe565b604082019050919050565b6000613cce601083614338565b9150613cd98261464d565b602082019050919050565b6000613cf1601283614338565b9150613cfc82614676565b602082019050919050565b6000613d14602283614338565b9150613d1f8261469f565b604082019050919050565b6000613d37602283614338565b9150613d42826146ee565b604082019050919050565b6000613d5a602683614338565b9150613d658261473d565b604082019050919050565b6000613d7d600d83614338565b9150613d888261478c565b602082019050919050565b6000613da0602483614338565b9150613dab826147b5565b604082019050919050565b6000613dc3602883614338565b9150613dce82614804565b604082019050919050565b6000613de6601083614338565b9150613df182614853565b602082019050919050565b6000613e09602183614338565b9150613e148261487c565b604082019050919050565b6000613e2c601583614338565b9150613e37826148cb565b602082019050919050565b6000613e4f602583614338565b9150613e5a826148f4565b604082019050919050565b6000613e72602483614338565b9150613e7d82614943565b604082019050919050565b6000613e95601283614338565b9150613ea082614992565b602082019050919050565b6000613eb8602583614338565b9150613ec3826149bb565b604082019050919050565b613ed7816144ae565b82525050565b613ee6816144b8565b82525050565b6000602082019050613f016000830184613bcb565b92915050565b6000602082019050613f1c6000830184613bad565b92915050565b6000604082019050613f376000830185613bcb565b613f446020830184613bcb565b9392505050565b600060c082019050613f606000830189613bcb565b613f6d6020830188613ece565b613f7a6040830187613c56565b613f876060830186613c56565b613f946080830185613bcb565b613fa160a0830184613ece565b979650505050505050565b6000602082019050613fc16000830184613c38565b92915050565b6000602082019050613fdc6000830184613c47565b92915050565b60006020820190508181036000830152613ffc8184613c65565b905092915050565b6000602082019050818103600083015261401d81613c9e565b9050919050565b6000602082019050818103600083015261403d81613cc1565b9050919050565b6000602082019050818103600083015261405d81613ce4565b9050919050565b6000602082019050818103600083015261407d81613d07565b9050919050565b6000602082019050818103600083015261409d81613d2a565b9050919050565b600060208201905081810360008301526140bd81613d4d565b9050919050565b600060208201905081810360008301526140dd81613d70565b9050919050565b600060208201905081810360008301526140fd81613d93565b9050919050565b6000602082019050818103600083015261411d81613db6565b9050919050565b6000602082019050818103600083015261413d81613dd9565b9050919050565b6000602082019050818103600083015261415d81613dfc565b9050919050565b6000602082019050818103600083015261417d81613e1f565b9050919050565b6000602082019050818103600083015261419d81613e42565b9050919050565b600060208201905081810360008301526141bd81613e65565b9050919050565b600060208201905081810360008301526141dd81613e88565b9050919050565b600060208201905081810360008301526141fd81613eab565b9050919050565b60006020820190506142196000830184613ece565b92915050565b600060a0820190506142346000830188613ece565b6142416020830187613c56565b81810360408301526142538186613bda565b90506142626060830185613bcb565b61426f6080830184613ece565b9695505050505050565b600060408201905061428e6000830185613ece565b61429b6020830184613ece565b9392505050565b60006060820190506142b76000830186613ece565b6142c46020830185613ece565b6142d16040830184613ece565b949350505050565b60006020820190506142ee6000830184613edd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614354826144ae565b915061435f836144ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561439457614393614560565b5b828201905092915050565b60006143aa826144ae565b91506143b5836144ae565b9250826143c5576143c461458f565b5b828204905092915050565b60006143db826144ae565b91506143e6836144ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561441f5761441e614560565b5b828202905092915050565b6000614435826144ae565b9150614440836144ae565b92508282101561445357614452614560565b5b828203905092915050565b60006144698261448e565b9050919050565b600061447b8261448e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006144d0826144d7565b9050919050565b60006144e28261448e565b9050919050565b60006144f4826144ae565b9050919050565b60005b838110156145195780820151818401526020810190506144fe565b83811115614528576000848401525b50505050565b6000600282049050600182168061454657607f821691505b6020821081141561455a576145596145be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f616c726561647920636c61696d65642100000000000000000000000000000000600082015250565b7f776974686472617720746f6f206d756368210000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f6973206e6f742061646d696e2100000000000000000000000000000000000000600082015250565b7f436c61696d6d696e672070726f6772616d6d20686173206265656e2073746f7060008201527f7065642100000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f7370616d6d657220676f20617761792100000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f636c61696d20636f737420612062697420626e62210000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f696e76616c69642074617820616d6f756e740000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614a138161445e565b8114614a1e57600080fd5b50565b614a2a81614470565b8114614a3557600080fd5b50565b614a41816144ae565b8114614a4c57600080fd5b5056fea2646970667358221220f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a64736f6c63430008010033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [4] : 616e74732e66696e616e63650000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 414e544600000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

35052:7362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27615:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8370:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32873:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29553:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35536:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7323:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32547:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41790:344;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16881:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40253:566;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42179:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7165:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9888:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31150:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33049:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35594:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17277:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16631:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32101:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30196:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7494:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31530:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32265:90;;;;;;;;;;;;;:::i;:::-;;29676:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17146:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26281:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33405:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29255:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31807:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32394:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6422:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27492:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31944:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26166:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10606:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33910:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39946:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17010:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33749:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37438:831;;;;;;;;;;;;;:::i;:::-;;26032:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33596:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27738:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27332:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35337:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35441:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29420:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8072:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29803:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33255:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16754:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32708:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34183:94;;;;;;;;;;;;;:::i;:::-;;40859:890;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30334:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35232:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34083:92;;;;;;;;;;;;;:::i;:::-;;6203:100;6257:13;6290:5;6283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;:::o;27615:115::-;27683:4;27712:10;;27705:17;;27615:115;:::o;8370:169::-;8453:4;8470:39;8479:12;:10;:12::i;:::-;8493:7;8502:6;8470:8;:39::i;:::-;8527:4;8520:11;;8370:169;;;;:::o;32873:168::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32995:38:::1;33014:18;32995;:38::i;:::-;32873:168:::0;:::o;29553:115::-;29621:4;29650:10;;29643:17;;29553:115;:::o;35536:51::-;;;:::o;7323:108::-;7384:7;7411:12;;7404:19;;7323:108;:::o;32547:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32660:32:::1;32676:15;32660;:32::i;:::-;32547:153:::0;:::o;41790:344::-;41905:10;41892:23;;:9;:23;;;41884:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;41948:16;41966:19;41989:18;41996:10;41989:6;:18::i;:::-;41947:60;;;;42018:51;42036:4;42043:12;:10;:12::i;:::-;42057:11;42018:9;:51::i;:::-;42080:46;42098:4;42105;42111:14;42080:9;:46::i;:::-;41790:344;;;:::o;16881:121::-;16952:4;16981:13;;16974:20;;16881:121;:::o;40253:566::-;40359:4;40376:27;40396:6;40376:19;:27::i;:::-;40414:19;40436:31;40441:6;40449:9;40460:6;40436:4;:31::i;:::-;40414:53;;40478:44;40488:6;40496:9;40507:14;40478:9;:44::i;:::-;40535:24;40562:31;40572:6;40580:12;:10;:12::i;:::-;40562:9;:31::i;:::-;40535:58;;40632:6;40612:16;:26;;40604:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;40719:57;40728:6;40736:12;:10;:12::i;:::-;40769:6;40750:16;:25;40719:8;:57::i;:::-;40807:4;40800:11;;;;40253:566;;;;;:::o;42179:232::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;42278::::1;42296:4;42303:11;:9;:11::i;:::-;42316:7;42278:9;:46::i;:::-;42371:9;;42343:24;42361:4;42343:9;:24::i;:::-;:37;;42335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42179:232:::0;:::o;7165:93::-;7223:5;7248:2;7241:9;;7165:93;:::o;9888:215::-;9976:4;9993:80;10002:12;:10;:12::i;:::-;10016:7;10062:10;10025:11;:25;10037:12;:10;:12::i;:::-;10025:25;;;;;;;;;;;;;;;:34;10051:7;10025:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9993:8;:80::i;:::-;10091:4;10084:11;;9888:215;;;;:::o;31150:165::-;31254:4;31283:14;:24;31298:8;31283:24;;;;;;;;;;;;;;;;;;;;;;;;;31276:31;;31150:165;;;:::o;33049:161::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33166:36:::1;33184:17;33166;:36::i;:::-;33049:161:::0;:::o;35594:38::-;;;:::o;17277:268::-;17377:10;17389:9;17416:8;15532:5;17427:7;:21;;;;:::i;:::-;17416:32;;17473:10;;17467:3;:16;;;;:::i;:::-;17459:24;;17523:13;;17508:12;;:28;;;;:::i;:::-;17501:3;:36;;;;:::i;:::-;17494:43;;17277:268;;;;:::o;16631:115::-;16699:4;16728:10;;16721:17;;16631:115;:::o;32101:156::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32221:28:::1;32235:13;32221;:28::i;:::-;32101:156:::0;:::o;30196:130::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;30309:9:::1;30300:6;;:18;;;;;;;;;;;;;;;;;;30196:130:::0;:::o;7494:127::-;7568:7;7595:9;:18;7605:7;7595:18;;;;;;;;;;;;;;;;7588:25;;7494:127;;;:::o;31530:237::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31699:60:::1;31715:13;31730;31745;31699:15;:60::i;:::-;31530:237:::0;;;:::o;32265:90::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32336:11:::1;:9;:11::i;:::-;32265:90::o:0;29676:119::-;29746:4;29775:12;;29768:19;;29676:119;:::o;17146:123::-;17218:4;17247:14;;17240:21;;17146:123;:::o;26281:117::-;26350:4;26379:11;;26372:18;;26281:117;:::o;33405:152::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33519:30:::1;33540:8;33519:20;:30::i;:::-;33405:152:::0;:::o;29255:157::-;29355:4;29384:10;:20;29395:8;29384:20;;;;;;;;;;;;;;;;;;;;;;;;;29377:27;;29255:157;;;:::o;31807:129::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31908:20:::1;31918:9;31908;:20::i;:::-;31807:129:::0;:::o;32394:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32503:28:::1;32517:13;32503;:28::i;:::-;32394:145:::0;:::o;6422:104::-;6478:13;6511:7;6504:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:104;:::o;27492:115::-;27560:4;27589:10;;27582:17;;27492:115;:::o;31944:149::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32055:30:::1;32070:14;32055;:30::i;:::-;31944:149:::0;:::o;26166:107::-;26230:4;26259:6;;26252:13;;26166:107;:::o;10606:413::-;10699:4;10716:24;10743:11;:25;10755:12;:10;:12::i;:::-;10743:25;;;;;;;;;;;;;;;:34;10769:7;10743:34;;;;;;;;;;;;;;;;10716:61;;10816:15;10796:16;:35;;10788:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10909:67;10918:12;:10;:12::i;:::-;10932:7;10960:15;10941:16;:34;10909:8;:67::i;:::-;11007:4;11000:11;;;10606:413;;;;:::o;33910:165::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34029:38:::1;34048:18;34029;:38::i;:::-;33910:165:::0;:::o;39946:299::-;40032:4;40049:33;40069:12;:10;:12::i;:::-;40049:19;:33::i;:::-;40093:19;40115:37;40120:12;:10;:12::i;:::-;40134:9;40145:6;40115:4;:37::i;:::-;40093:59;;40163:50;40173:12;:10;:12::i;:::-;40187:9;40198:14;40163:9;:50::i;:::-;40233:4;40226:11;;;39946:299;;;;:::o;17010:128::-;17083:7;17115:15;;;;;;;;;;;17108:22;;17010:128;:::o;33749:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33862:32:::1;33878:15;33862;:32::i;:::-;33749:153:::0;:::o;37438:831::-;37483:12;37497:13;37514:43;37541:15;:13;:15::i;:::-;37514:26;:43::i;:::-;37482:75;;;;37568:44;37585:8;37595:16;:14;:16::i;:::-;37568;:44::i;:::-;37674:12;37699:1;37689:7;:11;;;;:::i;:::-;37674:26;;37711:17;37741:4;37731:7;:14;;;;:::i;:::-;37711:34;;37788:20;37811:21;37788:44;;37843:37;37860:4;37874;37843:16;:37::i;:::-;38011:24;38062:15;38038:21;:39;;;;:::i;:::-;38011:66;;38127:59;38140:9;38151:16;38169;:14;:16::i;:::-;38127:12;:59::i;:::-;38212:49;38227:4;38233:16;38251:9;38212:49;;;;;;;;:::i;:::-;;;;;;;;37438:831;;;;;;:::o;26032:126::-;26100:15;26140:10;;;;;;;;;;;26133:17;;26032:126;:::o;33596:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33705:28:::1;33719:13;33705;:28::i;:::-;33596:145:::0;:::o;27738:115::-;27806:4;27835:10;;27828:17;;27738:115;:::o;27332:152::-;27428:7;27460:6;:16;27467:8;27460:16;;;;;;;;;;;;;;;;;;;;;;;;;27453:23;;27332:152;;;:::o;35337:97::-;35391:42;35337:97;:::o;35441:86::-;35484:42;35441:86;:::o;29420:125::-;29493:4;29522:15;;;;;;;;;;;29515:22;;29420:125;:::o;8072:151::-;8161:7;8188:11;:18;8200:5;8188:18;;;;;;;;;;;;;;;:27;8207:7;8188:27;;;;;;;;;;;;;;;;8181:34;;8072:151;;;;:::o;29803:125::-;29876:4;29905:15;;29898:22;;29803:125;:::o;33255:142::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33364:25:::1;33380:8;33364:15;:25::i;:::-;33255:142:::0;:::o;16754:119::-;16824:4;16853:12;;16846:19;;16754:119;:::o;32708:157::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32823:34:::1;32840:16;32823;:34::i;:::-;32708:157:::0;:::o;34183:94::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34256:13:::1;:11;:13::i;:::-;34183:94::o:0;40859:890::-;40951:16;40970:15;40975:9;40970:4;:15::i;:::-;40951:34;;40996:51;41014:4;41021:12;:10;:12::i;:::-;41035:11;40996:9;:51::i;:::-;41058:27;41066:12;:10;:12::i;:::-;41080:4;41058:7;:27::i;:::-;41098:10;41111:19;41117:12;:10;:12::i;:::-;41111:5;:19::i;:::-;41098:32;;35689:3;41178:18;;:2;:18;;;41174:57;;;41213:7;;;;41174:57;41241:15;41273:3;41259:11;:17;;;;:::i;:::-;41241:35;;41287:54;41305:4;41312:2;41329:11;:9;:11::i;:::-;41316:10;:24;;;;:::i;:::-;41287:9;:54::i;:::-;41354:10;41367:9;41373:2;41367:5;:9::i;:::-;41354:22;;35689:3;41424:18;;:2;:18;;;41420:57;;;41459:7;;;;;;41420:57;41487:54;41505:4;41512:2;41529:11;:9;:11::i;:::-;41516:10;:24;;;;:::i;:::-;41487:9;:54::i;:::-;41554:10;41567:9;41573:2;41567:5;:9::i;:::-;41554:22;;35689:3;41624:18;;:2;:18;;;41620:57;;;41659:7;;;;;;;41620:57;41687:54;41705:4;41712:2;41729:11;:9;:11::i;:::-;41716:10;:24;;;;:::i;:::-;41687:9;:54::i;:::-;40859:890;;;;;;;:::o;30334:110::-;30398:7;30430:6;;;;;;;;;;;30423:13;;30334:110;:::o;35232:98::-;35287:42;35232:98;:::o;34083:92::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34155:12:::1;:10;:12::i;:::-;34083:92::o:0;3882:98::-;3935:7;3962:10;3955:17;;3882:98;:::o;14075:346::-;14194:1;14177:19;;:5;:19;;;;14169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14275:1;14256:21;;:7;:21;;;;14248:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14359:6;14329:11;:18;14341:5;14329:18;;;;;;;;;;;;;;;:27;14348:7;14329:27;;;;;;;;;;;;;;;:36;;;;14397:7;14381:32;;14390:5;14381:32;;;14406:6;14381:32;;;;;;:::i;:::-;;;;;;;;14075:346;;;:::o;16218:203::-;16342:18;16324:15;;:36;;;;;;;;;;;;;;;;;;16376:37;16394:18;16376:37;;;;;;:::i;:::-;;;;;;;;16218:203;:::o;15832:182::-;15944:15;15929:12;:30;;;;15975:31;15990:15;15975:31;;;;;;:::i;:::-;;;;;;;;15832:182;:::o;28826:421::-;28945:4;28951;28918:8;27946:10;:20;27957:8;27946:20;;;;;;;;;;;;;;;;;;;;;;;;;27945:21;27937:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28982:15:::1;;;;;;;;;;;28981:16;28973:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29072:4;29049:10;:20;29060:8;29049:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;29104:1;29091:10;;:14;29087:104;;;29143:10;;29130:9;:23;;29122:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29087:104;29209:12;;29223:15;;29201:38;;;;28826:421:::0;;;;:::o;11509:640::-;11633:1;11615:20;;:6;:20;;;;11607:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11717:1;11696:23;;:9;:23;;;;11688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11772:47;11793:6;11801:9;11812:6;11772:20;:47::i;:::-;11832:21;11856:9;:17;11866:6;11856:17;;;;;;;;;;;;;;;;11832:41;;11909:6;11892:13;:23;;11884:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12030:6;12014:13;:22;11994:9;:17;12004:6;11994:17;;;;;;;;;;;;;;;:42;;;;12082:6;12058:9;:20;12068:9;12058:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12123:9;12106:35;;12115:6;12106:35;;;12134:6;12106:35;;;;;;:::i;:::-;;;;;;;;11509:640;;;;:::o;37118:312::-;37199:15;:13;:15::i;:::-;37186:9;;:28;;:54;;;;;37227:13;37218:22;;:5;:22;;;;37186:54;37182:241;;;37277:24;;37261:12;:40;37257:155;;37349:12;37322:24;:39;;;;37380:16;:14;:16::i;:::-;37257:155;37182:241;37118:312;:::o;39413:525::-;39544:4;39570:21;39584:6;39570:13;:21::i;:::-;:49;;;;39595:24;39609:9;39595:13;:24::i;:::-;39570:49;39566:95;;;39643:6;39636:13;;;;39566:95;39672:10;39684:9;39697:21;39711:6;39697:13;:21::i;:::-;39671:47;;;;39729:20;39735:6;39743:5;39729;:20::i;:::-;39760:38;39770:6;39786:4;39793;39760:9;:38::i;:::-;39822:4;39809:9;;:17;;;;;;;:::i;:::-;;;;;;;;39862:6;39854:5;39847:4;:12;;;;:::i;:::-;:21;39839:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;39925:5;39918:4;39909:6;:13;;;;:::i;:::-;:21;;;;:::i;:::-;39902:28;;;;39413:525;;;;;;:::o;16429:194::-;16547:17;16530:14;:34;;;;16580:35;16597:17;16580:35;;;;;;:::i;:::-;;;;;;;;16429:194;:::o;25440:181::-;25557:13;25544:10;;:26;;;;;;;;;;;;;;;;;;25586:27;25599:13;25586:27;;;;;;:::i;:::-;;;;;;;;25440:181;:::o;26715:336::-;26881:13;26868:10;:26;;;;26918:13;26905:10;:26;;;;26955:13;26942:10;:26;;;;26984:59;26999:13;27014;27029;26984:59;;;;;;;;:::i;:::-;;;;;;;;26715:336;;;:::o;25629:80::-;25684:17;25699:1;25684:14;:17::i;:::-;25629:80::o;30885:257::-;30988:14;:24;31003:8;30988:24;;;;;;;;;;;;;;;;;;;;;;;;;30983:64;;31029:7;;30983:64;31084:5;31057:14;:24;31072:8;31057:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;31105:29;31125:8;31105:29;;;;;;:::i;:::-;;;;;;;;30885:257;;:::o;25089:146::-;25183:9;25174:6;:18;;;;25208:19;25217:9;25208:19;;;;;;:::i;:::-;;;;;;;;25089:146;:::o;15654:170::-;15760:13;15747:10;:26;;;;15789:27;15802:13;15789:27;;;;;;:::i;:::-;;;;;;;;15654:170;:::o;25243:189::-;25343:42;25357:11;;25370:14;25343:42;;;;;;;:::i;:::-;;;;;;;;25410:14;25396:11;:28;;;;25243:189;:::o;28671:147::-;28792:18;28774:15;:36;;;;28671:147;:::o;28528:135::-;28640:15;28625:12;:30;;;;28528:135;:::o;17553:408::-;17657:12;17671:13;17702:12;17730:9;;17717:10;:22;:47;;17754:10;17717:47;;;17742:9;;17717:47;17702:62;;17775:8;17812:13;;17797:12;;:28;;;;:::i;:::-;17786:7;:40;;;;:::i;:::-;17775:51;;17853:12;;17847:3;:18;;;;:::i;:::-;17837:28;;17897:7;17887;:17;;;;:::i;:::-;17876:28;;17946:7;17933:9;;:20;;;;;;;:::i;:::-;;;;;;;;17553:408;;;;;:::o;38277:590::-;38415:21;38453:1;38439:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38415:40;;38484:4;38466;38471:1;38466:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;38510:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38500:4;38505:1;38500:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;38545:62;38562:4;38577:15;38595:11;38545:8;:62::i;:::-;38646:15;:66;;;38727:11;38753:1;38797:4;38816:2;38833:15;38646:213;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38277:590;;;:::o;38875:530::-;39040:62;39057:4;39072:15;39090:11;39040:8;:62::i;:::-;39145:15;:31;;;39184:9;39217:4;39237:11;39263:1;39306;39349:7;39371:15;39145:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38875:530;;;:::o;28393:127::-;28499:13;28486:10;:26;;;;28393:127;:::o;30632:245::-;30729:14;:24;30744:8;30729:24;;;;;;;;;;;;;;;;;;;;;;;;;30725:63;;;30770:7;;30725:63;30825:4;30798:14;:24;30813:8;30798:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;30845:24;30860:8;30845:24;;;;;;:::i;:::-;;;;;;;;30632:245;;:::o;16022:188::-;16137:16;16121:13;:32;;;;16169:33;16185:16;16169:33;;;;;;:::i;:::-;;;;;;;;16022:188;:::o;28297:88::-;28372:5;28354:15;;:23;;;;;;;;;;;;;;;;;;28297:88::o;25717:307::-;25794:4;25816:16;25835:30;25858:6;;25835:18;25845:7;25835:5;:9;;:18;;;;:::i;:::-;:22;;:30;;;;:::i;:::-;25816:49;;25890:28;25906:11;25890;;:15;;:28;;;;:::i;:::-;25876:11;:42;;;;25934:16;25938:11;25934:16;;;;;;:::i;:::-;;;;;;;;25961:10;;;;;;;;;;;:19;;:26;25981:5;25961:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26005:11;25998:18;;;25717:307;;;:::o;27059:265::-;27199:3;27171:32;;:6;:16;27178:8;27171:16;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:52;;;;;27219:4;27207:16;;:8;:16;;;;27171:52;27167:150;;;27259:4;27240:6;:16;27247:8;27240:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;27283:22;27290:8;27300:4;27283:22;;;;;;;:::i;:::-;;;;;;;;27167:150;27059:265;;:::o;28203:86::-;28277:4;28259:15;;:22;;;;;;;;;;;;;;;;;;28203:86::o;15024:92::-;;;;:::o;13107:530::-;13210:1;13191:21;;:7;:21;;;;13183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13263:49;13284:7;13301:1;13305:6;13263:20;:49::i;:::-;13325:22;13350:9;:18;13360:7;13350:18;;;;;;;;;;;;;;;;13325:43;;13405:6;13387:14;:24;;13379:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13524:6;13507:14;:23;13486:9;:18;13496:7;13486:18;;;;;;;;;;;;;;;:44;;;;13568:6;13552:12;;:22;;;;;;;:::i;:::-;;;;;;;;13618:1;13592:37;;13601:7;13592:37;;;13622:6;13592:37;;;;;;:::i;:::-;;;;;;;;13107:530;;;:::o;21407:98::-;21465:7;21496:1;21492;:5;;;;:::i;:::-;21485:12;;21407:98;;;;:::o;21806:::-;21864:7;21895:1;21891;:5;;;;:::i;:::-;21884:12;;21806:98;;;;:::o;21050:::-;21108:7;21139:1;21135;:5;;;;:::i;:::-;21128:12;;21050:98;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:139::-;;546:6;533:20;524:29;;562:33;589:5;562:33;:::i;:::-;514:87;;;;:::o;607:143::-;;695:6;689:13;680:22;;711:33;738:5;711:33;:::i;:::-;670:80;;;;:::o;756:262::-;;864:2;852:9;843:7;839:23;835:32;832:2;;;880:1;877;870:12;832:2;923:1;948:53;993:7;984:6;973:9;969:22;948:53;:::i;:::-;938:63;;894:117;822:196;;;;:::o;1024:284::-;;1143:2;1131:9;1122:7;1118:23;1114:32;1111:2;;;1159:1;1156;1149:12;1111:2;1202:1;1227:64;1283:7;1274:6;1263:9;1259:22;1227:64;:::i;:::-;1217:74;;1173:128;1101:207;;;;:::o;1314:278::-;;1430:2;1418:9;1409:7;1405:23;1401:32;1398:2;;;1446:1;1443;1436:12;1398:2;1489:1;1514:61;1567:7;1558:6;1547:9;1543:22;1514:61;:::i;:::-;1504:71;;1460:125;1388:204;;;;:::o;1598:407::-;;;1723:2;1711:9;1702:7;1698:23;1694:32;1691:2;;;1739:1;1736;1729:12;1691:2;1782:1;1807:53;1852:7;1843:6;1832:9;1828:22;1807:53;:::i;:::-;1797:63;;1753:117;1909:2;1935:53;1980:7;1971:6;1960:9;1956:22;1935:53;:::i;:::-;1925:63;;1880:118;1681:324;;;;;:::o;2011:552::-;;;;2153:2;2141:9;2132:7;2128:23;2124:32;2121:2;;;2169:1;2166;2159:12;2121:2;2212:1;2237:53;2282:7;2273:6;2262:9;2258:22;2237:53;:::i;:::-;2227:63;;2183:117;2339:2;2365:53;2410:7;2401:6;2390:9;2386:22;2365:53;:::i;:::-;2355:63;;2310:118;2467:2;2493:53;2538:7;2529:6;2518:9;2514:22;2493:53;:::i;:::-;2483:63;;2438:118;2111:452;;;;;:::o;2569:407::-;;;2694:2;2682:9;2673:7;2669:23;2665:32;2662:2;;;2710:1;2707;2700:12;2662:2;2753:1;2778:53;2823:7;2814:6;2803:9;2799:22;2778:53;:::i;:::-;2768:63;;2724:117;2880:2;2906:53;2951:7;2942:6;2931:9;2927:22;2906:53;:::i;:::-;2896:63;;2851:118;2652:324;;;;;:::o;2982:262::-;;3090:2;3078:9;3069:7;3065:23;3061:32;3058:2;;;3106:1;3103;3096:12;3058:2;3149:1;3174:53;3219:7;3210:6;3199:9;3195:22;3174:53;:::i;:::-;3164:63;;3120:117;3048:196;;;;:::o;3250:552::-;;;;3392:2;3380:9;3371:7;3367:23;3363:32;3360:2;;;3408:1;3405;3398:12;3360:2;3451:1;3476:53;3521:7;3512:6;3501:9;3497:22;3476:53;:::i;:::-;3466:63;;3422:117;3578:2;3604:53;3649:7;3640:6;3629:9;3625:22;3604:53;:::i;:::-;3594:63;;3549:118;3706:2;3732:53;3777:7;3768:6;3757:9;3753:22;3732:53;:::i;:::-;3722:63;;3677:118;3350:452;;;;;:::o;3808:596::-;;;;3961:2;3949:9;3940:7;3936:23;3932:32;3929:2;;;3977:1;3974;3967:12;3929:2;4020:1;4045:64;4101:7;4092:6;4081:9;4077:22;4045:64;:::i;:::-;4035:74;;3991:128;4158:2;4184:64;4240:7;4231:6;4220:9;4216:22;4184:64;:::i;:::-;4174:74;;4129:129;4297:2;4323:64;4379:7;4370:6;4359:9;4355:22;4323:64;:::i;:::-;4313:74;;4268:129;3919:485;;;;;:::o;4410:179::-;;4500:46;4542:3;4534:6;4500:46;:::i;:::-;4578:4;4573:3;4569:14;4555:28;;4490:99;;;;:::o;4595:142::-;4698:32;4724:5;4698:32;:::i;:::-;4693:3;4686:45;4676:61;;:::o;4743:108::-;4820:24;4838:5;4820:24;:::i;:::-;4815:3;4808:37;4798:53;;:::o;4857:118::-;4944:24;4962:5;4944:24;:::i;:::-;4939:3;4932:37;4922:53;;:::o;5011:732::-;;5159:54;5207:5;5159:54;:::i;:::-;5229:86;5308:6;5303:3;5229:86;:::i;:::-;5222:93;;5339:56;5389:5;5339:56;:::i;:::-;5418:7;5449:1;5434:284;5459:6;5456:1;5453:13;5434:284;;;5535:6;5529:13;5562:63;5621:3;5606:13;5562:63;:::i;:::-;5555:70;;5648:60;5701:6;5648:60;:::i;:::-;5638:70;;5494:224;5481:1;5478;5474:9;5469:14;;5434:284;;;5438:14;5734:3;5727:10;;5135:608;;;;;;;:::o;5749:109::-;5830:21;5845:5;5830:21;:::i;:::-;5825:3;5818:34;5808:50;;:::o;5864:185::-;5978:64;6036:5;5978:64;:::i;:::-;5973:3;5966:77;5956:93;;:::o;6055:147::-;6150:45;6189:5;6150:45;:::i;:::-;6145:3;6138:58;6128:74;;:::o;6208:364::-;;6324:39;6357:5;6324:39;:::i;:::-;6379:71;6443:6;6438:3;6379:71;:::i;:::-;6372:78;;6459:52;6504:6;6499:3;6492:4;6485:5;6481:16;6459:52;:::i;:::-;6536:29;6558:6;6536:29;:::i;:::-;6531:3;6527:39;6520:46;;6300:272;;;;;:::o;6578:366::-;;6741:67;6805:2;6800:3;6741:67;:::i;:::-;6734:74;;6817:93;6906:3;6817:93;:::i;:::-;6935:2;6930:3;6926:12;6919:19;;6724:220;;;:::o;6950:366::-;;7113:67;7177:2;7172:3;7113:67;:::i;:::-;7106:74;;7189:93;7278:3;7189:93;:::i;:::-;7307:2;7302:3;7298:12;7291:19;;7096:220;;;:::o;7322:366::-;;7485:67;7549:2;7544:3;7485:67;:::i;:::-;7478:74;;7561:93;7650:3;7561:93;:::i;:::-;7679:2;7674:3;7670:12;7663:19;;7468:220;;;:::o;7694:366::-;;7857:67;7921:2;7916:3;7857:67;:::i;:::-;7850:74;;7933:93;8022:3;7933:93;:::i;:::-;8051:2;8046:3;8042:12;8035:19;;7840:220;;;:::o;8066:366::-;;8229:67;8293:2;8288:3;8229:67;:::i;:::-;8222:74;;8305:93;8394:3;8305:93;:::i;:::-;8423:2;8418:3;8414:12;8407:19;;8212:220;;;:::o;8438:366::-;;8601:67;8665:2;8660:3;8601:67;:::i;:::-;8594:74;;8677:93;8766:3;8677:93;:::i;:::-;8795:2;8790:3;8786:12;8779:19;;8584:220;;;:::o;8810:366::-;;8973:67;9037:2;9032:3;8973:67;:::i;:::-;8966:74;;9049:93;9138:3;9049:93;:::i;:::-;9167:2;9162:3;9158:12;9151:19;;8956:220;;;:::o;9182:366::-;;9345:67;9409:2;9404:3;9345:67;:::i;:::-;9338:74;;9421:93;9510:3;9421:93;:::i;:::-;9539:2;9534:3;9530:12;9523:19;;9328:220;;;:::o;9554:366::-;;9717:67;9781:2;9776:3;9717:67;:::i;:::-;9710:74;;9793:93;9882:3;9793:93;:::i;:::-;9911:2;9906:3;9902:12;9895:19;;9700:220;;;:::o;9926:366::-;;10089:67;10153:2;10148:3;10089:67;:::i;:::-;10082:74;;10165:93;10254:3;10165:93;:::i;:::-;10283:2;10278:3;10274:12;10267:19;;10072:220;;;:::o;10298:366::-;;10461:67;10525:2;10520:3;10461:67;:::i;:::-;10454:74;;10537:93;10626:3;10537:93;:::i;:::-;10655:2;10650:3;10646:12;10639:19;;10444:220;;;:::o;10670:366::-;;10833:67;10897:2;10892:3;10833:67;:::i;:::-;10826:74;;10909:93;10998:3;10909:93;:::i;:::-;11027:2;11022:3;11018:12;11011:19;;10816:220;;;:::o;11042:366::-;;11205:67;11269:2;11264:3;11205:67;:::i;:::-;11198:74;;11281:93;11370:3;11281:93;:::i;:::-;11399:2;11394:3;11390:12;11383:19;;11188:220;;;:::o;11414:366::-;;11577:67;11641:2;11636:3;11577:67;:::i;:::-;11570:74;;11653:93;11742:3;11653:93;:::i;:::-;11771:2;11766:3;11762:12;11755:19;;11560:220;;;:::o;11786:366::-;;11949:67;12013:2;12008:3;11949:67;:::i;:::-;11942:74;;12025:93;12114:3;12025:93;:::i;:::-;12143:2;12138:3;12134:12;12127:19;;11932:220;;;:::o;12158:366::-;;12321:67;12385:2;12380:3;12321:67;:::i;:::-;12314:74;;12397:93;12486:3;12397:93;:::i;:::-;12515:2;12510:3;12506:12;12499:19;;12304:220;;;:::o;12530:118::-;12617:24;12635:5;12617:24;:::i;:::-;12612:3;12605:37;12595:53;;:::o;12654:112::-;12737:22;12753:5;12737:22;:::i;:::-;12732:3;12725:35;12715:51;;:::o;12772:222::-;;12903:2;12892:9;12888:18;12880:26;;12916:71;12984:1;12973:9;12969:17;12960:6;12916:71;:::i;:::-;12870:124;;;;:::o;13000:254::-;;13147:2;13136:9;13132:18;13124:26;;13160:87;13244:1;13233:9;13229:17;13220:6;13160:87;:::i;:::-;13114:140;;;;:::o;13260:332::-;;13419:2;13408:9;13404:18;13396:26;;13432:71;13500:1;13489:9;13485:17;13476:6;13432:71;:::i;:::-;13513:72;13581:2;13570:9;13566:18;13557:6;13513:72;:::i;:::-;13386:206;;;;;:::o;13598:807::-;;13885:3;13874:9;13870:19;13862:27;;13899:71;13967:1;13956:9;13952:17;13943:6;13899:71;:::i;:::-;13980:72;14048:2;14037:9;14033:18;14024:6;13980:72;:::i;:::-;14062:80;14138:2;14127:9;14123:18;14114:6;14062:80;:::i;:::-;14152;14228:2;14217:9;14213:18;14204:6;14152:80;:::i;:::-;14242:73;14310:3;14299:9;14295:19;14286:6;14242:73;:::i;:::-;14325;14393:3;14382:9;14378:19;14369:6;14325:73;:::i;:::-;13852:553;;;;;;;;;:::o;14411:210::-;;14536:2;14525:9;14521:18;14513:26;;14549:65;14611:1;14600:9;14596:17;14587:6;14549:65;:::i;:::-;14503:118;;;;:::o;14627:276::-;;14785:2;14774:9;14770:18;14762:26;;14798:98;14893:1;14882:9;14878:17;14869:6;14798:98;:::i;:::-;14752:151;;;;:::o;14909:313::-;;15060:2;15049:9;15045:18;15037:26;;15109:9;15103:4;15099:20;15095:1;15084:9;15080:17;15073:47;15137:78;15210:4;15201:6;15137:78;:::i;:::-;15129:86;;15027:195;;;;:::o;15228:419::-;;15432:2;15421:9;15417:18;15409:26;;15481:9;15475:4;15471:20;15467:1;15456:9;15452:17;15445:47;15509:131;15635:4;15509:131;:::i;:::-;15501:139;;15399:248;;;:::o;15653:419::-;;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:131;16060:4;15934:131;:::i;:::-;15926:139;;15824:248;;;:::o;16078:419::-;;16282:2;16271:9;16267:18;16259:26;;16331:9;16325:4;16321:20;16317:1;16306:9;16302:17;16295:47;16359:131;16485:4;16359:131;:::i;:::-;16351:139;;16249:248;;;:::o;16503:419::-;;16707:2;16696:9;16692:18;16684:26;;16756:9;16750:4;16746:20;16742:1;16731:9;16727:17;16720:47;16784:131;16910:4;16784:131;:::i;:::-;16776:139;;16674:248;;;:::o;16928:419::-;;17132:2;17121:9;17117:18;17109:26;;17181:9;17175:4;17171:20;17167:1;17156:9;17152:17;17145:47;17209:131;17335:4;17209:131;:::i;:::-;17201:139;;17099:248;;;:::o;17353:419::-;;17557:2;17546:9;17542:18;17534:26;;17606:9;17600:4;17596:20;17592:1;17581:9;17577:17;17570:47;17634:131;17760:4;17634:131;:::i;:::-;17626:139;;17524:248;;;:::o;17778:419::-;;17982:2;17971:9;17967:18;17959:26;;18031:9;18025:4;18021:20;18017:1;18006:9;18002:17;17995:47;18059:131;18185:4;18059:131;:::i;:::-;18051:139;;17949:248;;;:::o;18203:419::-;;18407:2;18396:9;18392:18;18384:26;;18456:9;18450:4;18446:20;18442:1;18431:9;18427:17;18420:47;18484:131;18610:4;18484:131;:::i;:::-;18476:139;;18374:248;;;:::o;18628:419::-;;18832:2;18821:9;18817:18;18809:26;;18881:9;18875:4;18871:20;18867:1;18856:9;18852:17;18845:47;18909:131;19035:4;18909:131;:::i;:::-;18901:139;;18799:248;;;:::o;19053:419::-;;19257:2;19246:9;19242:18;19234:26;;19306:9;19300:4;19296:20;19292:1;19281:9;19277:17;19270:47;19334:131;19460:4;19334:131;:::i;:::-;19326:139;;19224:248;;;:::o;19478:419::-;;19682:2;19671:9;19667:18;19659:26;;19731:9;19725:4;19721:20;19717:1;19706:9;19702:17;19695:47;19759:131;19885:4;19759:131;:::i;:::-;19751:139;;19649:248;;;:::o;19903:419::-;;20107:2;20096:9;20092:18;20084:26;;20156:9;20150:4;20146:20;20142:1;20131:9;20127:17;20120:47;20184:131;20310:4;20184:131;:::i;:::-;20176:139;;20074:248;;;:::o;20328:419::-;;20532:2;20521:9;20517:18;20509:26;;20581:9;20575:4;20571:20;20567:1;20556:9;20552:17;20545:47;20609:131;20735:4;20609:131;:::i;:::-;20601:139;;20499:248;;;:::o;20753:419::-;;20957:2;20946:9;20942:18;20934:26;;21006:9;21000:4;20996:20;20992:1;20981:9;20977:17;20970:47;21034:131;21160:4;21034:131;:::i;:::-;21026:139;;20924:248;;;:::o;21178:419::-;;21382:2;21371:9;21367:18;21359:26;;21431:9;21425:4;21421:20;21417:1;21406:9;21402:17;21395:47;21459:131;21585:4;21459:131;:::i;:::-;21451:139;;21349:248;;;:::o;21603:419::-;;21807:2;21796:9;21792:18;21784:26;;21856:9;21850:4;21846:20;21842:1;21831:9;21827:17;21820:47;21884:131;22010:4;21884:131;:::i;:::-;21876:139;;21774:248;;;:::o;22028:222::-;;22159:2;22148:9;22144:18;22136:26;;22172:71;22240:1;22229:9;22225:17;22216:6;22172:71;:::i;:::-;22126:124;;;;:::o;22256:831::-;;22557:3;22546:9;22542:19;22534:27;;22571:71;22639:1;22628:9;22624:17;22615:6;22571:71;:::i;:::-;22652:80;22728:2;22717:9;22713:18;22704:6;22652:80;:::i;:::-;22779:9;22773:4;22769:20;22764:2;22753:9;22749:18;22742:48;22807:108;22910:4;22901:6;22807:108;:::i;:::-;22799:116;;22925:72;22993:2;22982:9;22978:18;22969:6;22925:72;:::i;:::-;23007:73;23075:3;23064:9;23060:19;23051:6;23007:73;:::i;:::-;22524:563;;;;;;;;:::o;23093:332::-;;23252:2;23241:9;23237:18;23229:26;;23265:71;23333:1;23322:9;23318:17;23309:6;23265:71;:::i;:::-;23346:72;23414:2;23403:9;23399:18;23390:6;23346:72;:::i;:::-;23219:206;;;;;:::o;23431:442::-;;23618:2;23607:9;23603:18;23595:26;;23631:71;23699:1;23688:9;23684:17;23675:6;23631:71;:::i;:::-;23712:72;23780:2;23769:9;23765:18;23756:6;23712:72;:::i;:::-;23794;23862:2;23851:9;23847:18;23838:6;23794:72;:::i;:::-;23585:288;;;;;;:::o;23879:214::-;;24006:2;23995:9;23991:18;23983:26;;24019:67;24083:1;24072:9;24068:17;24059:6;24019:67;:::i;:::-;23973:120;;;;:::o;24099:132::-;;24189:3;24181:11;;24219:4;24214:3;24210:14;24202:22;;24171:60;;;:::o;24237:114::-;;24338:5;24332:12;24322:22;;24311:40;;;:::o;24357:99::-;;24443:5;24437:12;24427:22;;24416:40;;;:::o;24462:113::-;;24564:4;24559:3;24555:14;24547:22;;24537:38;;;:::o;24581:184::-;;24714:6;24709:3;24702:19;24754:4;24749:3;24745:14;24730:29;;24692:73;;;;:::o;24771:169::-;;24889:6;24884:3;24877:19;24929:4;24924:3;24920:14;24905:29;;24867:73;;;;:::o;24946:305::-;;25005:20;25023:1;25005:20;:::i;:::-;25000:25;;25039:20;25057:1;25039:20;:::i;:::-;25034:25;;25193:1;25125:66;25121:74;25118:1;25115:81;25112:2;;;25199:18;;:::i;:::-;25112:2;25243:1;25240;25236:9;25229:16;;24990:261;;;;:::o;25257:185::-;;25314:20;25332:1;25314:20;:::i;:::-;25309:25;;25348:20;25366:1;25348:20;:::i;:::-;25343:25;;25387:1;25377:2;;25392:18;;:::i;:::-;25377:2;25434:1;25431;25427:9;25422:14;;25299:143;;;;:::o;25448:348::-;;25511:20;25529:1;25511:20;:::i;:::-;25506:25;;25545:20;25563:1;25545:20;:::i;:::-;25540:25;;25733:1;25665:66;25661:74;25658:1;25655:81;25650:1;25643:9;25636:17;25632:105;25629:2;;;25740:18;;:::i;:::-;25629:2;25788:1;25785;25781:9;25770:20;;25496:300;;;;:::o;25802:191::-;;25862:20;25880:1;25862:20;:::i;:::-;25857:25;;25896:20;25914:1;25896:20;:::i;:::-;25891:25;;25935:1;25932;25929:8;25926:2;;;25940:18;;:::i;:::-;25926:2;25985:1;25982;25978:9;25970:17;;25847:146;;;;:::o;25999:96::-;;26065:24;26083:5;26065:24;:::i;:::-;26054:35;;26044:51;;;:::o;26101:104::-;;26175:24;26193:5;26175:24;:::i;:::-;26164:35;;26154:51;;;:::o;26211:90::-;;26288:5;26281:13;26274:21;26263:32;;26253:48;;;:::o;26307:126::-;;26384:42;26377:5;26373:54;26362:65;;26352:81;;;:::o;26439:77::-;;26505:5;26494:16;;26484:32;;;:::o;26522:86::-;;26597:4;26590:5;26586:16;26575:27;;26565:43;;;:::o;26614:180::-;;26724:64;26782:5;26724:64;:::i;:::-;26711:77;;26701:93;;;:::o;26800:140::-;;26910:24;26928:5;26910:24;:::i;:::-;26897:37;;26887:53;;;:::o;26946:121::-;;27037:24;27055:5;27037:24;:::i;:::-;27024:37;;27014:53;;;:::o;27073:307::-;27141:1;27151:113;27165:6;27162:1;27159:13;27151:113;;;27250:1;27245:3;27241:11;27235:18;27231:1;27226:3;27222:11;27215:39;27187:2;27184:1;27180:10;27175:15;;27151:113;;;27282:6;27279:1;27276:13;27273:2;;;27362:1;27353:6;27348:3;27344:16;27337:27;27273:2;27122:258;;;;:::o;27386:320::-;;27467:1;27461:4;27457:12;27447:22;;27514:1;27508:4;27504:12;27535:18;27525:2;;27591:4;27583:6;27579:17;27569:27;;27525:2;27653;27645:6;27642:14;27622:18;27619:38;27616:2;;;27672:18;;:::i;:::-;27616:2;27437:269;;;;:::o;27712:180::-;27760:77;27757:1;27750:88;27857:4;27854:1;27847:15;27881:4;27878:1;27871:15;27898:180;27946:77;27943:1;27936:88;28043:4;28040:1;28033:15;28067:4;28064:1;28057:15;28084:180;28132:77;28129:1;28122:88;28229:4;28226:1;28219:15;28253:4;28250:1;28243:15;28270:102;;28362:2;28358:7;28353:2;28346:5;28342:14;28338:28;28328:38;;28318:54;;;:::o;28378:222::-;28518:34;28514:1;28506:6;28502:14;28495:58;28587:5;28582:2;28574:6;28570:15;28563:30;28484:116;:::o;28606:166::-;28746:18;28742:1;28734:6;28730:14;28723:42;28712:60;:::o;28778:168::-;28918:20;28914:1;28906:6;28902:14;28895:44;28884:62;:::o;28952:221::-;29092:34;29088:1;29080:6;29076:14;29069:58;29161:4;29156:2;29148:6;29144:15;29137:29;29058:115;:::o;29179:221::-;29319:34;29315:1;29307:6;29303:14;29296:58;29388:4;29383:2;29375:6;29371:15;29364:29;29285:115;:::o;29406:225::-;29546:34;29542:1;29534:6;29530:14;29523:58;29615:8;29610:2;29602:6;29598:15;29591:33;29512:119;:::o;29637:163::-;29777:15;29773:1;29765:6;29761:14;29754:39;29743:57;:::o;29806:223::-;29946:34;29942:1;29934:6;29930:14;29923:58;30015:6;30010:2;30002:6;29998:15;29991:31;29912:117;:::o;30035:227::-;30175:34;30171:1;30163:6;30159:14;30152:58;30244:10;30239:2;30231:6;30227:15;30220:35;30141:121;:::o;30268:166::-;30408:18;30404:1;30396:6;30392:14;30385:42;30374:60;:::o;30440:220::-;30580:34;30576:1;30568:6;30564:14;30557:58;30649:3;30644:2;30636:6;30632:15;30625:28;30546:114;:::o;30666:171::-;30806:23;30802:1;30794:6;30790:14;30783:47;30772:65;:::o;30843:224::-;30983:34;30979:1;30971:6;30967:14;30960:58;31052:7;31047:2;31039:6;31035:15;31028:32;30949:118;:::o;31073:223::-;31213:34;31209:1;31201:6;31197:14;31190:58;31282:6;31277:2;31269:6;31265:15;31258:31;31179:117;:::o;31302:168::-;31442:20;31438:1;31430:6;31426:14;31419:44;31408:62;:::o;31476:224::-;31616:34;31612:1;31604:6;31600:14;31593:58;31685:7;31680:2;31672:6;31668:15;31661:32;31582:118;:::o;31706:122::-;31779:24;31797:5;31779:24;:::i;:::-;31772:5;31769:35;31759:2;;31818:1;31815;31808:12;31759:2;31749:79;:::o;31834:138::-;31915:32;31941:5;31915:32;:::i;:::-;31908:5;31905:43;31895:2;;31962:1;31959;31952:12;31895:2;31885:87;:::o;31978:122::-;32051:24;32069:5;32051:24;:::i;:::-;32044:5;32041:35;32031:2;;32090:1;32087;32080:12;32031:2;32021:79;:::o

Swarm Source

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