Contract 0x958e030E5937414B8B54e4647fb513E348Ed90E5

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1a16d32c938c02a8454efd9396932f1f02953a291f2cd2c115a3e251bf21cca2Approve130578202021-11-29 19:46:4319 mins ago0x87d6f972a0f56a069c23410b6fb429d9f6abd419 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0x41c28f96be260be773a637d5de1b33d15f8ee73cd789690b14a6592ba6166240Transfer130576522021-11-29 19:37:3828 mins ago0x502add392a90e61135c70a4f667d9cf362788114 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.0031105
0x079ded087601fa63b92da079d5e83364d20406823e6ba3bfd1089563514972a4S02_exclude From...130576212021-11-29 19:36:0530 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.0002181
0xe7254d747d6749d6f8bf8cdbe55031cb58b91aaf85a0cb89b58d54e71d73dbcbS02_exclude From...130576012021-11-29 19:35:0331 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00021816
0xb25e2ec2cfa19c0a81c77a273fc3e998b81879b68ad54dfe46edf099987a73faS02_exclude From...130575752021-11-29 19:33:4432 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00021816
0xc3e552326081555e2783b18ca2ff66e21a88556de746497fa5bc49839e2b4be5S02_exclude From...130575472021-11-29 19:32:2033 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00021816
0x927c36d2dd3bd8facca510aed7470e8ee779b652e1da26021d77c7220b678dd5S02_exclude From...130575152021-11-29 19:30:3035 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.0002181
0x24c73c59870a65840e6548baa24bbb73abc2f302c0763dafbc47edc440afd633S02_exclude From...130574672021-11-29 19:27:5438 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00021816
0x4f0d228fc9135754a974a308ebe8573ee0dc94f69713c125d27a50b8b0b4cf60S02_exclude From...130574362021-11-29 19:26:1639 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00021816
0xa8b400001126ed94da9b50fc74db3f5be068e5d9b450adfda1ae3d16208ecd6dApprove130550762021-11-29 17:16:382 hrs 49 mins ago0x40efcce678ea244aeba5170b8fd22c64ebd76c3e IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0xb41be8f7705b417e2ca33a6b8f5bd131803e94b8e91e6ff44e8f84b3d8d661c9Approve130531842021-11-29 15:33:464 hrs 32 mins ago0x90ccf60f378d076f4af39cc2e876a2023ce3e99b IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0x2a071b08c7836ec0423246a5c78e7bef7c8d50c2ecf3e33da1cd0f14fdbf333bApprove130530522021-11-29 15:26:174 hrs 39 mins ago0xc02c1ca9cc9fd64154fd8024d6a4cdbc80a9d606 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0x96e2455c50d4b780ac13509419fc7e6fdc368f4ca5bbb3ed3d4e8f1dcc786e8eS02_exclude From...130521022021-11-29 14:35:195 hrs 30 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00012216
0xf4efd88198f86ff7b2aa7f641b9be4bf9de6032cd6b2badc23eb52d85ec23a75S02_exclude From...130520952021-11-29 14:34:525 hrs 31 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00021816
0x4bc7f0813a120d378e94e5bba276f2c39d8bf2d7f3ea091a473661ab760cb320S02_exclude From...130520552021-11-29 14:32:295 hrs 33 mins ago0xf03e4b5ddc3a55846a2d3f8f395b31238386df97 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00021816
0xf35e314eb084f91be2471f8f68bef2263ed65be63de71f5a7a9afd62ab2063baApprove130512962021-11-29 13:50:566 hrs 15 mins ago0x36ce3fe3573b4ff3ac41c7434d8cd991b2e31da2 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0x3512b5283bb7798ca2ab23717a80700bd39895ff649d83fcdb2184b32e4ede85Approve130506952021-11-29 13:17:376 hrs 48 mins ago0x4dbf163cfcf1a98b48c7c6d4e3bd40d4ca35a5e6 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0x6171e363608afeeb74ea9f793a56d6f9c1b9c194c810bd1be818f814a86a8665Approve130497322021-11-29 12:18:497 hrs 47 mins ago0x4b520ad4048b739e1d869c4032d0d960ca98ac85 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0xab441d4219bbfff0aa80d097c5f67eb97e00614636c3ed3e4931ac01b731289dApprove130493972021-11-29 12:00:338 hrs 5 mins ago0x04974c99f18d0ebea829aff7c77890f7f030c287 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0x58ad28352c0104dad9d68c989998f16e872d8ab8d1363ff2e8bdefe21f260f41Approve130492062021-11-29 11:49:338 hrs 16 mins ago0x1382561d7b0572ce5b457f0d23310649602e9ccc IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0xfddab1c1b47fff32142b5c7a3bd3bac778ccb7ead87612e87134c4ba9e3cb9a4Approve130485022021-11-29 11:10:078 hrs 56 mins ago0xb54ac7fe68ff6f0890c443ba5fb28df36e5d9d5f IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0xe3b2306820e50ea8e23f7245897a09d2126eb6c8f5e9ea7cf2dd650b017c6693Approve130483072021-11-29 10:59:069 hrs 7 mins ago0x0e823b8f195e13ef94922024c6f8451216253123 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0xc27690d88f793649697b61e385bf87bd55a52bb9a38c2454f1a6a511859619e5Transfer130460212021-11-29 8:48:5911 hrs 17 mins ago0xa6d14dadf73190a417ffab1a173559abd8f6ebe1 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00012400038
0xf331b64aa1f4be9d80340d3a7d62e09aa8c16485a3e4c3bd29bfef210dece5d7Approve130427572021-11-29 5:45:2214 hrs 20 mins ago0xfa6f16b0292188d18885422e90678f87403633e5 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00022252
0xfe296b0f9223b8f85f88c6a949c7218f659eca803e9901630dc9c6a75a2f0fc9Transfer130339422021-11-28 21:46:2822 hrs 19 mins ago0x5be535ad457b963589673ec69fb4f59e13528cd6 IN  0x958e030e5937414b8b54e4647fb513e348ed90e50 BNB0.00103011
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x41c28f96be260be773a637d5de1b33d15f8ee73cd789690b14a6592ba6166240130576522021-11-29 19:37:3828 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x84945916a009f7e811531e207d69be1ddb4a026b0.031564893935187428 BNB
0x41c28f96be260be773a637d5de1b33d15f8ee73cd789690b14a6592ba6166240130576522021-11-29 19:37:3828 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x5be535ad457b963589673ec69fb4f59e13528cd60.030192507242353192 BNB
0x41c28f96be260be773a637d5de1b33d15f8ee73cd789690b14a6592ba6166240130576522021-11-29 19:37:3828 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x251f6c59ee3b3a878704fbb6e0bbf254cd6601c50.07548126810588298 BNB
0x41c28f96be260be773a637d5de1b33d15f8ee73cd789690b14a6592ba6166240130576522021-11-29 19:37:3828 mins ago PancakeSwap: Router v2 0x958e030e5937414b8b54e4647fb513e348ed90e50.137238669283423616 BNB
0x0880194fe8d00ecb3c9cddd5bb1f3842b93373fc94eff6c8bf7b096b049c0a23130530972021-11-29 15:28:484 hrs 37 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x84945916a009f7e811531e207d69be1ddb4a026b0.025859537568233885 BNB
0x0880194fe8d00ecb3c9cddd5bb1f3842b93373fc94eff6c8bf7b096b049c0a23130530972021-11-29 15:28:484 hrs 37 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x5be535ad457b963589673ec69fb4f59e13528cd60.02473520984787589 BNB
0x0880194fe8d00ecb3c9cddd5bb1f3842b93373fc94eff6c8bf7b096b049c0a23130530972021-11-29 15:28:484 hrs 37 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x251f6c59ee3b3a878704fbb6e0bbf254cd6601c50.061838024619689725 BNB
0x0880194fe8d00ecb3c9cddd5bb1f3842b93373fc94eff6c8bf7b096b049c0a23130530972021-11-29 15:28:484 hrs 37 mins ago PancakeSwap: Router v2 0x958e030e5937414b8b54e4647fb513e348ed90e50.11243277203579946 BNB
0xc0541ce5a46fcdbb6918cc1fd03552c52b04f0bdc56eebe7745128cf787b9798130483672021-11-29 11:02:139 hrs 3 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x84945916a009f7e811531e207d69be1ddb4a026b0.034247347230935761 BNB
0xc0541ce5a46fcdbb6918cc1fd03552c52b04f0bdc56eebe7745128cf787b9798130483672021-11-29 11:02:139 hrs 3 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x5be535ad457b963589673ec69fb4f59e13528cd60.032758332133938554 BNB
0xc0541ce5a46fcdbb6918cc1fd03552c52b04f0bdc56eebe7745128cf787b9798130483672021-11-29 11:02:139 hrs 3 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x251f6c59ee3b3a878704fbb6e0bbf254cd6601c50.081895830334846385 BNB
0xc0541ce5a46fcdbb6918cc1fd03552c52b04f0bdc56eebe7745128cf787b9798130483672021-11-29 11:02:139 hrs 3 mins ago PancakeSwap: Router v2 0x958e030e5937414b8b54e4647fb513e348ed90e50.148901509699720697 BNB
0xaae1971b53b8652d6125f87e9923e3b9a4880ef1776dd5d925019af0d323f0ae130329352021-11-28 20:53:2523 hrs 12 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x84945916a009f7e811531e207d69be1ddb4a026b0.029079984030844458 BNB
0xaae1971b53b8652d6125f87e9923e3b9a4880ef1776dd5d925019af0d323f0ae130329352021-11-28 20:53:2523 hrs 12 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x5be535ad457b963589673ec69fb4f59e13528cd60.027815636899068612 BNB
0xaae1971b53b8652d6125f87e9923e3b9a4880ef1776dd5d925019af0d323f0ae130329352021-11-28 20:53:2523 hrs 12 mins ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x251f6c59ee3b3a878704fbb6e0bbf254cd6601c50.06953909224767153 BNB
0xaae1971b53b8652d6125f87e9923e3b9a4880ef1776dd5d925019af0d323f0ae130329352021-11-28 20:53:2523 hrs 12 mins ago PancakeSwap: Router v2 0x958e030e5937414b8b54e4647fb513e348ed90e50.126434713177584559 BNB
0x6dc526f872c1209ee053e11de49771aa498569898269088939266488cdf2a0e0130275252021-11-28 16:00:181 day 4 hrs ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x84945916a009f7e811531e207d69be1ddb4a026b0.031385746183897925 BNB
0x6dc526f872c1209ee053e11de49771aa498569898269088939266488cdf2a0e0130275252021-11-28 16:00:181 day 4 hrs ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x5be535ad457b963589673ec69fb4f59e13528cd60.03002114852372845 BNB
0x6dc526f872c1209ee053e11de49771aa498569898269088939266488cdf2a0e0130275252021-11-28 16:00:181 day 4 hrs ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x251f6c59ee3b3a878704fbb6e0bbf254cd6601c50.075052871309321125 BNB
0x6dc526f872c1209ee053e11de49771aa498569898269088939266488cdf2a0e0130275252021-11-28 16:00:181 day 4 hrs ago PancakeSwap: Router v2 0x958e030e5937414b8b54e4647fb513e348ed90e50.136459766016947532 BNB
0xad9a8403de39ea71804b16508cd51bfd53a947c077843c9731e526cd5ab94147130194382021-11-28 8:45:401 day 11 hrs ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x84945916a009f7e811531e207d69be1ddb4a026b0.080873657649716463 BNB
0xad9a8403de39ea71804b16508cd51bfd53a947c077843c9731e526cd5ab94147130194382021-11-28 8:45:401 day 11 hrs ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x5be535ad457b963589673ec69fb4f59e13528cd60.077357411664946182 BNB
0xad9a8403de39ea71804b16508cd51bfd53a947c077843c9731e526cd5ab94147130194382021-11-28 8:45:401 day 11 hrs ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x251f6c59ee3b3a878704fbb6e0bbf254cd6601c50.193393529162365455 BNB
0xad9a8403de39ea71804b16508cd51bfd53a947c077843c9731e526cd5ab94147130194382021-11-28 8:45:401 day 11 hrs ago PancakeSwap: Router v2 0x958e030e5937414b8b54e4647fb513e348ed90e50.351624598477028099 BNB
0x023bd7558aa983db0409e888005a62529d4fd17ff2917cb2512da166f316a956130069082021-11-27 21:37:241 day 22 hrs ago 0x958e030e5937414b8b54e4647fb513e348ed90e50x84945916a009f7e811531e207d69be1ddb4a026b0.064015649615533504 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Zatcoin

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-11-10
*/

/**
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
█████╗█████╗█████╗█████╗█████╗█████╗█████╗█████╗█████╗
╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

███████╗░█████╗░████████╗░█████╗░░█████╗░██╗███╗░░██╗
╚════██║██╔══██╗╚══██╔══╝██╔══██╗██╔══██╗██║████╗░██║
░░███╔═╝███████║░░░██║░░░██║░░╚═╝██║░░██║██║██╔██╗██║
██╔══╝░░██╔══██║░░░██║░░░██║░░██╗██║░░██║██║██║╚████║
███████╗██║░░██║░░░██║░░░╚█████╔╝╚█████╔╝██║██║░╚███║
╚══════╝╚═╝░░╚═╝░░░╚═╝░░░░╚════╝░░╚════╝░╚═╝╚═╝░░╚══╝

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
█████╗█████╗█████╗█████╗█████╗█████╗█████╗█████╗█████╗
╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝╚════╝
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

WEBSITE: https://zatcoin.io
TG: https://t.me/Zatcointools
TWITTER: https://twitter.com/zatcoin

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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


/**
 * @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 Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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 sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // 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 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function Z_transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
}

// pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


// pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}



// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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


contract Zatcoin is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    address public _marketingWallet;
    address public _buybackWallet;
    address public _liquidityWallet;

   
    uint8 private _decimals = 7;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 2000000000 * 10**_decimals; // 2 Billion
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Zatcoin";
    string private _symbol = "ZATCOIN";
  

    uint256 public _taxFee = 100000; // will change according to sell or buy function
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _liquidityFee = 900000; // will change according to sell or buy function
    uint256 private _previousLiquidityFee = _liquidityFee;

    uint256 public _buyLiquidityFee = 900000; // 9%
    uint256 public _buyTaxFee = 100000; // 1%
    uint256 public _sellLiquidityFee = 900000;
    uint256 public _sellTaxFee = 100000;
    uint256 public _transferLiquidityFee = 0;
    uint256 public _transferTaxFee = 100000;
    uint256 public _exchangeLiquidityFee = 0;
    uint256 public _exchangeTaxFee = 0;
    uint256 public _marketingFee = 45; // % of liquidityFee
    uint256 public _buybackFee = 10; // % of liquidityFee
    uint256 public _liqFee = 45; // % of liquidityFee



    mapping(address => bool) private _isBlacklisted;
    mapping(address => bool) private AllowedExchanges;
    mapping(address => uint256) private BridgeLiquidityFee;
    mapping(address => uint256) private BridgeTaxFee;
    mapping(address => bool) private AllowedBridges;

    uint256 public _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
                
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    

    bool public feesEnabled = false;
    
    bool inSwapAndLiquify;
    bool public ProjectFundingEnabled = false;
    bool public tradingEnabled = false;
    uint256 private minTokensBeforeSwap = 200000 * 10**_decimals; // 200k, 0.01%

    uint256 startDate;

    event ProjectFundingEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        address indexed address01,
		uint256 amount01,
		address indexed address02,
		uint256 amount02


    );
    event TokensSentToLiquidityWallet (
			address indexed recipient,
			uint256  amount
	);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        
         IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // Pancake

         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        startDate = block.timestamp + 20700;

        _marketingWallet = msg.sender;
        _liquidityWallet = msg.sender;
        _buybackWallet = msg.sender;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee, address to) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount, to);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount, to);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlacklisted[from], "Sender address is blacklisted");
		require(!_isBlacklisted[to], "Recipient address is blacklisted");
        

        if (from != owner() && !tradingEnabled) {
            require(tradingEnabled, "Trading is not enabled yet");
        }
        if (from != owner() && to != owner() && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            
            if (from != address(this) && to != address(this) && from != address(uniswapV2Router) && to != address(uniswapV2Router)) {
                require(amount <= _maxTxAmount, "Token amount exceeds the max amount.");
            }
            if (to != address(uniswapV2Router)) {
                require(amount <= _maxTxAmount, "Token amount exceeds the max amount.");
                _liquidityFee = _buyLiquidityFee; 
                _taxFee = _buyTaxFee;
            }
            if (from != uniswapV2Pair && to != address(uniswapV2Pair)) {
                require(amount <= _maxTxAmount, "Token amount exceeds the max amount.");

                if (AllowedExchanges[from] || AllowedExchanges[to]) {
                    _liquidityFee = _exchangeLiquidityFee; 
                    _taxFee = _exchangeTaxFee;
                }
                else if (AllowedBridges[from]) {
                        _liquidityFee = BridgeLiquidityFee[from];
                        _taxFee = BridgeTaxFee[from];
                }
                else if (AllowedBridges[to]) {
                        _liquidityFee = BridgeLiquidityFee[to];
                        _taxFee = BridgeTaxFee[to];
                }
                else {
                        _liquidityFee = _transferLiquidityFee; 
                        _taxFee = _transferTaxFee;
                }
            
            }
            if (from != uniswapV2Pair && to == address(uniswapV2Pair)) {
                require(amount <= _maxTxAmount, "Token amount exceeds the max amount.");
                _liquidityFee = _sellLiquidityFee;
                _taxFee = _sellTaxFee;
                }
            
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        
        if (contractTokenBalance >= _maxTxAmount)
        {
           contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= minTokensBeforeSwap;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            ProjectFundingEnabled
        ) {
            swapAndLiquify(contractTokenBalance);
        }
        
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || !feesEnabled){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
        restoreAllFee;
    }
        function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        
        // check tokens in contract
        uint256 tokensbeforeSwap = contractTokenBalance;
        
        // swap tokens for BNB
        swapTokensForBNB(tokensbeforeSwap); // <- this breaks the BNB -> swap when swap+liquify is triggered
        
        uint256 BalanceBNB = address(this).balance;

        // calculate the percentages
        uint256 marketingBNB = BalanceBNB.div(100).mul(_marketingFee);
        uint256 buybackBNB = BalanceBNB.div(100).mul(_buybackFee);
        uint256 liquidityBNB = BalanceBNB.div(100).mul(_liqFee);    

        //pay the marketing wallet
        payable(_marketingWallet).transfer(marketingBNB);

        //pay the buyback wallet
        payable(_buybackWallet).transfer(buybackBNB);

        //pay the buyback wallet
        payable(_liquidityWallet).transfer(liquidityBNB);

        emit SwapAndLiquify(tokensbeforeSwap, _marketingWallet, marketingBNB, _buybackWallet, buybackBNB);  

    }
    function swapTokensForBNB(uint256 tokenAmount) 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,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) 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
            owner(),
            block.timestamp
        );
    }
    
    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount, recipient);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount, recipient);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount, recipient);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount, recipient);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount, address to) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount, to);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount, address to) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount, to);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount, address to) private view returns (uint256) {
        if (startDate > block.timestamp || _taxFee == 0 || to != address(uniswapV2Pair)) {
            return _amount.mul(_taxFee).div(
                10**_decimals
            );
        }
        return _amount.mul(_taxFee).div(
            10**_decimals
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**_decimals
        );
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        
        _taxFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    function A_setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { 
    _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**_decimals);
    emit MaxTxAmountUpdated(_maxTxAmount);
    }
    function E1_enableFees(bool truefalse) external onlyOwner() {
        feesEnabled = truefalse;
    }
    function E2_enable_ProjectFunding(bool truefalse) public onlyOwner {
        ProjectFundingEnabled = truefalse;
        emit ProjectFundingEnabledUpdated(truefalse);
    }
    function E4_enableTrading(bool truefalse) external onlyOwner() {
        tradingEnabled = truefalse;
    }
    function F01_setMarketingFee(uint256 marketingfee) external onlyOwner() {
        _marketingFee = marketingfee;
    }
    function F02_setBuyBackfee(uint256 buybackfee) external onlyOwner() {
        _buybackFee = buybackfee;
    }
    function F06_setBuyTaxfee(uint256 buyTaxFee) external onlyOwner() {
        _buyTaxFee = buyTaxFee;
    }
    function F02_setLiqfee(uint256 liqfee) external onlyOwner() {
        _liqFee = liqfee;
    }
    function F07_setTaxFee(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }
    function F08_setProjectFee(uint256 ProjectFee) external onlyOwner() {
        _liquidityFee = ProjectFee;
    }
    function F09_setSellTaxFee(uint256 sellTaxFee) external onlyOwner() {
        _sellTaxFee = sellTaxFee;
    }
    function F11_setTransferTaxFee(uint256 transferTaxFee) external onlyOwner() {
        _transferTaxFee = transferTaxFee;
    }
    function F12_setBuyProjectFee(uint256 buyProjectFee) external onlyOwner() {
        _buyLiquidityFee = buyProjectFee;
    }
    function F13_setSellProjectFee(uint256 sellProjectFee) external onlyOwner() {
        _sellLiquidityFee = sellProjectFee;
    }
    function F15_setTransferProjectFee(uint256 transferProjectFee) external onlyOwner() {
        _transferLiquidityFee = transferProjectFee;
    }
    function F16_setExchangeTaxFee(uint256 exchangeTaxFee) external onlyOwner() {
        _exchangeTaxFee = exchangeTaxFee;
    }
    function F17_setExchangeProjectFee(uint256 exchangeProjectFee) external onlyOwner() {
        _exchangeLiquidityFee = exchangeProjectFee;
    }
    function S01_includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    function S02_excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    function S03_includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
        function S04_excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }
    function S05_addToBlacklist(address _address) public onlyOwner {
        require(!_isBlacklisted[_address], "Address is already blacklisted");
        _isBlacklisted[_address] = true;
    }
    function S06_removeFromBlacklist(address _address) public onlyOwner {
        require(_isBlacklisted[_address], "Address is already whitelisted");
        _isBlacklisted[_address] = false;
    }
    function S07_addAllowedExchange(address _address) public onlyOwner {
        require(!AllowedExchanges[_address], "Cannot add Exchange, it is already in the list");
        AllowedExchanges[_address] = true;
    }
    function S08_removeAllowedExchange(address _address) public onlyOwner {
        require(AllowedExchanges[_address], "Cannot remove Exchange, it is not in the list ");
        AllowedExchanges[_address] = false;
    }
    function S09_isAllowedExchange(address _address) public view returns(bool) {
        return AllowedExchanges[_address];
    }
    function S10_addBridge(address _address, bool Allowed_Bridges, uint256 liq_fee, uint256 tax_fee) public onlyOwner {
        AllowedBridges[_address] = Allowed_Bridges;
        BridgeLiquidityFee[_address] = liq_fee;
        BridgeTaxFee[_address] = tax_fee;
    }
    function S11_removeBridge(address _address) public onlyOwner {
        delete AllowedBridges[_address];
        delete BridgeLiquidityFee[_address];
        delete BridgeTaxFee[_address];
    }
    function W1_setMarketingWallet(address _address) public onlyOwner() {
        _marketingWallet = _address;
    }
    function W2_setBuybackWallet(address _address) public onlyOwner() {
        _buybackWallet = _address;
    }
    function W3_setliquidityWallet(address _address) public onlyOwner() {
        _liquidityWallet = _address;
    }
    function getAllowedBridges(address _address) public view returns(bool) {
        return AllowedBridges[_address];
    }
    function getBridgeLiquidityFee(address _address) public view returns(uint256) {
        return BridgeLiquidityFee[_address];
    }
    function getBridgeTaxFee(address _address) public view returns(uint256) {
        return BridgeTaxFee[_address];
    }
   
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ProjectFundingEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":true,"internalType":"address","name":"address01","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount01","type":"uint256"},{"indexed":true,"internalType":"address","name":"address02","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount02","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensSentToLiquidityWallet","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":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"A_setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"truefalse","type":"bool"}],"name":"E1_enableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"truefalse","type":"bool"}],"name":"E2_enable_ProjectFunding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"truefalse","type":"bool"}],"name":"E4_enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingfee","type":"uint256"}],"name":"F01_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buybackfee","type":"uint256"}],"name":"F02_setBuyBackfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liqfee","type":"uint256"}],"name":"F02_setLiqfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTaxFee","type":"uint256"}],"name":"F06_setBuyTaxfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"F07_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ProjectFee","type":"uint256"}],"name":"F08_setProjectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellTaxFee","type":"uint256"}],"name":"F09_setSellTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transferTaxFee","type":"uint256"}],"name":"F11_setTransferTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyProjectFee","type":"uint256"}],"name":"F12_setBuyProjectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellProjectFee","type":"uint256"}],"name":"F13_setSellProjectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transferProjectFee","type":"uint256"}],"name":"F15_setTransferProjectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"exchangeTaxFee","type":"uint256"}],"name":"F16_setExchangeTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"exchangeProjectFee","type":"uint256"}],"name":"F17_setExchangeProjectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ProjectFundingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"S01_includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"S02_excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"S03_includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"S04_excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"S05_addToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"S06_removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"S07_addAllowedExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"S08_removeAllowedExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"S09_isAllowedExchange","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"Allowed_Bridges","type":"bool"},{"internalType":"uint256","name":"liq_fee","type":"uint256"},{"internalType":"uint256","name":"tax_fee","type":"uint256"}],"name":"S10_addBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"S11_removeBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"W1_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"W2_setBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"W3_setliquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"Z_transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_exchangeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_exchangeTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getAllowedBridges","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getBridgeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getBridgeTaxFee","outputs":[{"internalType":"uint256","name":"","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"},{"internalType":"address","name":"to","type":"address"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"stateMutability":"payable","type":"receive"}]

60c0604052600b805460ff60a01b1916600760a01b1790819055620000319060ff600160a01b90910416600a6200057b565b620000419063773594006200063c565b600c8190556200005490600019620006b5565b62000062906000196200065e565b600d55604080518082019091526007808252662d30ba31b7b4b760c91b60209092019182526200009591600f9162000441565b50604080518082019091526007808252662d20aa21a7a4a760c91b6020909201918252620000c69160109162000441565b50620186a060118190556012819055620dbba06013819055601481905560158190556016829055601755601881905560006019819055601a91909155601b819055601c55602d601d819055600a601e819055601f91909155600c546025556026805463ffff00ff19169055600b546200014b91600160a01b90910460ff16906200057b565b6200015a9062030d406200063c565b6027553480156200016a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d543360009081526003602090815260409182902092909255805163c45a015560e01b815290517310ed43c718714eb63d5aa57b78b54704e256024e92839263c45a01559260048083019392829003018186803b1580156200020e57600080fd5b505afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002499190620004e7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd9190620004e7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200031657600080fd5b505af11580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003519190620004e7565b6001600160601b0319606091821b811660a0529082901b16608052600160066000620003856000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252902080549091166001179055620003d3426150dc62000517565b60285560098054336001600160a01b03199182168117909255600b8054821683179055600a805490911682179055600c546040519081526000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350620006ec565b8280546200044f9062000678565b90600052602060002090601f016020900481019282620004735760008555620004be565b82601f106200048e57805160ff1916838001178555620004be565b82800160010185558215620004be579182015b82811115620004be578251825591602001919060010190620004a1565b50620004cc929150620004d0565b5090565b5b80821115620004cc5760008155600101620004d1565b600060208284031215620004f9578081fd5b81516001600160a01b038116811462000510578182fd5b9392505050565b600082198211156200052d576200052d620006d6565b500190565b600181815b8085111562000573578160001904821115620005575762000557620006d6565b808516156200056557918102915b93841c939080029062000537565b509250929050565b60006200051060ff841683600082620005975750600162000636565b81620005a65750600062000636565b8160018114620005bf5760028114620005ca57620005ea565b600191505062000636565b60ff841115620005de57620005de620006d6565b50506001821b62000636565b5060208310610133831016604e8410600b84101617156200060f575081810a62000636565b6200061b838362000532565b8060001904821115620006325762000632620006d6565b0290505b92915050565b6000816000190483118215151615620006595762000659620006d6565b500290565b600082821015620006735762000673620006d6565b500390565b600181811c908216806200068d57607f821691505b60208210811415620006af57634e487b7160e01b600052602260045260246000fd5b50919050565b600082620006d157634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c613a226200076c60003960008181610884015281816123ee0152818161242b0152818161258b015281816125c801528181612670015261337e0152600081816105b0015281816122ea015281816123280152818161238601528181612ef001528181612fc601526130020152613a226000f3fe6080604052600436106104405760003560e01c80636bc87c3a11610234578063a9059cbb1161012e578063dc44b6a0116100b6578063e97f34131161007a578063e97f341314610d94578063ea08d30b14610db4578063efcc52de14610dca578063f338af0d14610de0578063f6372cab14610e0057600080fd5b8063dc44b6a014610cd8578063dd62ed3e14610cee578063deaf761114610d34578063e3d5806114610d54578063e40d5f6f14610d7457600080fd5b8063b6c52324116100fd578063b6c5232414610c14578063b77c414914610c29578063bc3e073914610c49578063bfb843cb14610c69578063bff6ff4d14610ca257600080fd5b8063a9059cbb14610b9e578063a9adc36214610bbe578063ab4fd42414610bde578063b120200a14610bf457600080fd5b80638da5cb5b116101bc5780639a61f773116101805780639a61f77314610aee578063a0732a9614610b24578063a0961eae14610b44578063a457c2d714610b64578063a64e4f8a14610b8457600080fd5b80638da5cb5b14610a5b57806390ea879d14610a7957806395d89b4114610a99578063962dfc7514610aae578063989de41514610ace57600080fd5b80637d1db4a5116102035780637d1db4a5146109b657806386fcbec7146109cc57806388790a68146109ec57806388f8202014610a025780638a07c0d514610a3b57600080fd5b80636bc87c3a146109405780636d25ebad1461095657806370a08231146109765780637948a1e91461099657600080fd5b8063243a7e311161034557806341ea164f116102cd57806349bd5a5e1161029157806349bd5a5e146108725780634a52a07d146108a65780634ada218b146108c65780635342acb4146108e75780635fe48bc61461092057600080fd5b806341ea164f146107c357806341f396e6146107d95780634497e058146107f9578063453f289d1461081957806346a3ee261461083957600080fd5b8063383c129e11610314578063383c129e1461072d578063395093511461074d5780633b124fe71461076d5780633b28bb75146107835780633b9f4aa3146107a357600080fd5b8063243a7e31146106a15780632d838119146106c1578063313ce567146106e1578063329b01601461070d57600080fd5b806315b3128a116103c85780631859755411610397578063185975541461061f57806319de79ab1461063f578063200a692d1461065557806322976e0d1461066b57806323b872dd1461068157600080fd5b806315b3128a1461057e5780631694505e1461059e57806317e3233d146105ea57806318160ddd1461060a57600080fd5b8063095ea7b31161040f578063095ea7b3146104d95780630c8d2155146105095780630f1889b11461052957806313114a9d1461054957806314465abd1461055e57600080fd5b806302faaa091461044c578063055b2cbc1461047557806306fdde0314610497578063075339f5146104b957600080fd5b3661044757005b600080fd5b34801561045857600080fd5b50610462601b5481565b6040519081526020015b60405180910390f35b34801561048157600080fd5b506104956104903660046134f4565b610e16565b005b3480156104a357600080fd5b506104ac610eed565b60405161046c9190613683565b3480156104c557600080fd5b506104956104d436600461362c565b610f7f565b3480156104e557600080fd5b506104f96104f43660046135e7565b610fae565b604051901515815260200161046c565b34801561051557600080fd5b5061049561052436600461362c565b610fc5565b34801561053557600080fd5b5061049561054436600461362c565b610ff4565b34801561055557600080fd5b50600e54610462565b34801561056a57600080fd5b5061049561057936600461362c565b611023565b34801561058a57600080fd5b506104956105993660046134f4565b611052565b3480156105aa57600080fd5b506105d27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161046c565b3480156105f657600080fd5b506104956106053660046134f4565b61109d565b34801561061657600080fd5b50600c54610462565b34801561062b57600080fd5b5061049561063a36600461362c565b6111f0565b34801561064b57600080fd5b50610462601e5481565b34801561066157600080fd5b5061046260185481565b34801561067757600080fd5b50610462601d5481565b34801561068d57600080fd5b506104f961069c366004613564565b61121f565b3480156106ad57600080fd5b50600b546105d2906001600160a01b031681565b3480156106cd57600080fd5b506104626106dc36600461362c565b611289565b3480156106ed57600080fd5b50600b54600160a01b900460ff1660405160ff909116815260200161046c565b34801561071957600080fd5b5061049561072836600461362c565b611306565b34801561073957600080fd5b5061049561074836600461362c565b611335565b34801561075957600080fd5b506104f96107683660046135e7565b611364565b34801561077957600080fd5b5061046260115481565b34801561078f57600080fd5b5061049561079e3660046134f4565b61139a565b3480156107af57600080fd5b506104956107be3660046134f4565b611484565b3480156107cf57600080fd5b50610462601c5481565b3480156107e557600080fd5b506104956107f4366004613612565b611539565b34801561080557600080fd5b5061049561081436600461362c565b611581565b34801561082557600080fd5b50610495610834366004613612565b611616565b34801561084557600080fd5b506104f96108543660046134f4565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561087e57600080fd5b506105d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156108b257600080fd5b506104956108c136600461362c565b611653565b3480156108d257600080fd5b506026546104f9906301000000900460ff1681565b3480156108f357600080fd5b506104f96109023660046134f4565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561092c57600080fd5b506026546104f99062010000900460ff1681565b34801561094c57600080fd5b5061046260135481565b34801561096257600080fd5b506104956109713660046134f4565b611682565b34801561098257600080fd5b506104626109913660046134f4565b6116ce565b3480156109a257600080fd5b506104956109b136600461362c565b61172d565b3480156109c257600080fd5b5061046260255481565b3480156109d857600080fd5b506104956109e73660046134f4565b61175c565b3480156109f857600080fd5b5061046260175481565b348015610a0e57600080fd5b506104f9610a1d3660046134f4565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a4757600080fd5b50610495610a563660046134f4565b6117bc565b348015610a6757600080fd5b506000546001600160a01b03166105d2565b348015610a8557600080fd5b50610495610a9436600461362c565b61186d565b348015610aa557600080fd5b506104ac61189c565b348015610aba57600080fd5b506009546105d2906001600160a01b031681565b348015610ada57600080fd5b50610495610ae93660046134f4565b6118ab565b348015610afa57600080fd5b50610462610b093660046134f4565b6001600160a01b031660009081526022602052604090205490565b348015610b3057600080fd5b50610495610b3f36600461362c565b6118f9565b348015610b5057600080fd5b50610495610b5f3660046134f4565b611928565b348015610b7057600080fd5b506104f9610b7f3660046135e7565b611974565b348015610b9057600080fd5b506026546104f99060ff1681565b348015610baa57600080fd5b506104f9610bb93660046135e7565b6119c3565b348015610bca57600080fd5b50610495610bd93660046134f4565b6119d0565b348015610bea57600080fd5b50610462601a5481565b348015610c0057600080fd5b50610462610c0f366004613644565b611a9a565b348015610c2057600080fd5b50600254610462565b348015610c3557600080fd5b50610495610c443660046135a4565b611b29565b348015610c5557600080fd5b50600a546105d2906001600160a01b031681565b348015610c7557600080fd5b506104f9610c843660046134f4565b6001600160a01b031660009081526021602052604090205460ff1690565b348015610cae57600080fd5b50610462610cbd3660046134f4565b6001600160a01b031660009081526023602052604090205490565b348015610ce457600080fd5b5061046260155481565b348015610cfa57600080fd5b50610462610d0936600461352c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610d4057600080fd5b50610495610d4f366004613612565b611b94565b348015610d6057600080fd5b50610495610d6f36600461362c565b611c09565b348015610d8057600080fd5b50610495610d8f3660046134f4565b611c38565b348015610da057600080fd5b50610495610daf3660046134f4565b611e27565b348015610dc057600080fd5b5061046260195481565b348015610dd657600080fd5b5061046260165481565b348015610dec57600080fd5b50610495610dfb36600461362c565b611e73565b348015610e0c57600080fd5b50610462601f5481565b6000546001600160a01b03163314610e495760405162461bcd60e51b8152600401610e40906136d6565b60405180910390fd5b6001600160a01b03811660009081526021602052604090205460ff1615610ec95760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206164642045786368616e67652c20697420697320616c72656160448201526d191e481a5b881d1a19481b1a5cdd60921b6064820152608401610e40565b6001600160a01b03166000908152602160205260409020805460ff19166001179055565b6060600f8054610efc9061391b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f289061391b565b8015610f755780601f10610f4a57610100808354040283529160200191610f75565b820191906000526020600020905b815481529060010190602001808311610f5857829003601f168201915b5050505050905090565b6000546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610e40906136d6565b601555565b6000610fbb338484611ea2565b5060015b92915050565b6000546001600160a01b03163314610fef5760405162461bcd60e51b8152600401610e40906136d6565b601355565b6000546001600160a01b0316331461101e5760405162461bcd60e51b8152600401610e40906136d6565b601c55565b6000546001600160a01b0316331461104d5760405162461bcd60e51b8152600401610e40906136d6565b601d55565b6000546001600160a01b0316331461107c5760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146110c75760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b03811660009081526007602052604090205460ff16156111305760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610e40565b6001600160a01b0381166000908152600360205260409020541561118a576001600160a01b03811660009081526003602052604090205461117090611289565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461121a5760405162461bcd60e51b8152600401610e40906136d6565b601955565b600061122c848484611fc6565b61127e8433611279856040518060600160405280602881526020016139a0602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190612734565b611ea2565b5060015b9392505050565b6000600d548211156112f05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610e40565b60006112fa61276e565b90506112828382612791565b6000546001600160a01b031633146113305760405162461bcd60e51b8152600401610e40906136d6565b601e55565b6000546001600160a01b0316331461135f5760405162461bcd60e51b8152600401610e40906136d6565b601b55565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610fbb91859061127990866127d3565b6000546001600160a01b031633146113c45760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b0381166114295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e40565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114ae5760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b038116600090815260208052604090205460ff16156115165760405162461bcd60e51b815260206004820152601e60248201527f4164647265737320697320616c726561647920626c61636b6c697374656400006044820152606401610e40565b6001600160a01b031660009081526020805260409020805460ff19166001179055565b6000546001600160a01b031633146115635760405162461bcd60e51b8152600401610e40906136d6565b6026805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b031633146115ab5760405162461bcd60e51b8152600401610e40906136d6565b600b546115da906115c790600160a01b900460ff16600a61383a565b600c546115d49084612832565b90612791565b60258190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906020015b60405180910390a150565b6000546001600160a01b031633146116405760405162461bcd60e51b8152600401610e40906136d6565b6026805460ff1916911515919091179055565b6000546001600160a01b0316331461167d5760405162461bcd60e51b8152600401610e40906136d6565b601755565b6000546001600160a01b031633146116ac5760405162461bcd60e51b8152600401610e40906136d6565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff161561170b57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610fbf90611289565b6000546001600160a01b031633146117575760405162461bcd60e51b8152600401610e40906136d6565b601655565b6000546001600160a01b031633146117865760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b03166000908152602460209081526040808320805460ff19169055602282528083208390556023909152812055565b6000546001600160a01b031633146117e65760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b038116600090815260208052604090205460ff1661184d5760405162461bcd60e51b815260206004820152601e60248201527f4164647265737320697320616c72656164792077686974656c697374656400006044820152606401610e40565b6001600160a01b031660009081526020805260409020805460ff19169055565b6000546001600160a01b031633146118975760405162461bcd60e51b8152600401610e40906136d6565b601155565b606060108054610efc9061391b565b6000546001600160a01b031633146118d55760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b031633146119235760405162461bcd60e51b8152600401610e40906136d6565b601855565b6000546001600160a01b031633146119525760405162461bcd60e51b8152600401610e40906136d6565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fbb3384611279856040518060600160405280602581526020016139c8602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190612734565b6000610fbb338484611fc6565b6000546001600160a01b031633146119fa5760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b03811660009081526021602052604090205460ff16611a795760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f742072656d6f76652045786368616e67652c206974206973206e6f60448201526d03a1034b7103a3432903634b9ba160951b6064820152608401610e40565b6001600160a01b03166000908152602160205260409020805460ff19169055565b6000600c54841115611aee5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610e40565b82611b0e576000611aff85846128b1565b50939550611282945050505050565b6000611b1a85846128b1565b50929550611282945050505050565b6000546001600160a01b03163314611b535760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b03939093166000908152602460209081526040808320805460ff191695151595909517909455602281528382209290925560239091522055565b6000546001600160a01b03163314611bbe5760405162461bcd60e51b8152600401610e40906136d6565b60268054821515620100000262ff0000199091161790556040517fd8a94030ccb00732d73d94a650adf7627d15e48488df6f9a0d05c3dc335d22e59061160b90831515815260200190565b6000546001600160a01b03163314611c335760405162461bcd60e51b8152600401610e40906136d6565b601f55565b6000546001600160a01b03163314611c625760405162461bcd60e51b8152600401610e40906136d6565b6001600160a01b03811660009081526007602052604090205460ff16611cca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610e40565b60005b600854811015611e2357816001600160a01b031660088281548110611d0257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415611e115760088054611d2d90600190613904565b81548110611d4b57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600880546001600160a01b039092169183908110611d8557634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480611deb57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80611e1b81613956565b915050611ccd565b5050565b6000546001600160a01b03163314611e515760405162461bcd60e51b8152600401610e40906136d6565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611e9d5760405162461bcd60e51b8152600401610e40906136d6565b601a55565b6001600160a01b038316611f045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e40565b6001600160a01b038216611f655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e40565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661202a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e40565b6001600160a01b03821661208c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e40565b600081116120ee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610e40565b6001600160a01b038316600090815260208052604090205460ff16156121565760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206164647265737320697320626c61636b6c69737465640000006044820152606401610e40565b6001600160a01b038216600090815260208052604090205460ff16156121be5760405162461bcd60e51b815260206004820181905260248201527f526563697069656e74206164647265737320697320626c61636b6c69737465646044820152606401610e40565b6000546001600160a01b038481169116148015906121e657506026546301000000900460ff16155b15612244576026546301000000900460ff166122445760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610e40565b6000546001600160a01b0384811691161480159061227057506000546001600160a01b03838116911614155b801561229557506001600160a01b03831660009081526006602052604090205460ff16155b80156122ba57506001600160a01b03821660009081526006602052604090205460ff16155b15612630576001600160a01b03831630148015906122e157506001600160a01b0382163014155b801561231f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b801561235d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15612384576025548111156123845760405162461bcd60e51b8152600401610e409061370b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146123ec576025548111156123df5760405162461bcd60e51b8152600401610e409061370b565b6015546013556016546011555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561246057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15612589576025548111156124875760405162461bcd60e51b8152600401610e409061370b565b6001600160a01b03831660009081526021602052604090205460ff16806124c657506001600160a01b03821660009081526021602052604090205460ff165b156124dc57601b54601355601c54601155612589565b6001600160a01b03831660009081526024602052604090205460ff161561252c576001600160a01b0383166000908152602260209081526040808320546013556023909152902054601155612589565b6001600160a01b03821660009081526024602052604090205460ff161561257c576001600160a01b0382166000908152602260209081526040808320546013556023909152902054601155612589565b601954601355601a546011555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141580156125fc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612630576025548111156126235760405162461bcd60e51b8152600401610e409061370b565b6017546013556018546011555b600061263b306116ce565b9050602554811061264b57506025545b602754811080159081906126675750602654610100900460ff16155b80156126a557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156126b9575060265462010000900460ff165b156126c7576126c782612904565b6001600160a01b03851660009081526006602052604090205460019060ff168061270957506001600160a01b03851660009081526006602052604090205460ff165b80612717575060265460ff16155b15612720575060005b61272c86868684612a92565b505050505050565b600081848411156127585760405162461bcd60e51b8152600401610e409190613683565b5060006127658486613904565b95945050505050565b600080600061277b612c0f565b909250905061278a8282612791565b9250505090565b600061128283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612dc9565b6000806127e083856137bf565b9050838110156112825760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e40565b60008261284157506000610fbf565b600061284d83856138e5565b90508261285a85836137d7565b146112825760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e40565b60008060008060008060008060006128c98b8b612df7565b92509250925060008060006128e78e86866128e261276e565b612e3b565b919d509b5099509497509295509093505050509295509295509295565b6026805461ff0019166101001790558061291d81612e8b565b601d54479060009061293a90612934846064612791565b90612832565b90506000612958601e5461293460648661279190919063ffffffff16565b90506000612976601f5461293460648761279190919063ffffffff16565b6009546040519192506001600160a01b03169084156108fc029085906000818181858888f193505050501580156129b1573d6000803e3d6000fd5b50600a546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156129ec573d6000803e3d6000fd5b50600b546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612a27573d6000803e3d6000fd5b50600a5460095460408051888152602081018790529081018590526001600160a01b0392831692909116907f1961d178990f8162c80af81036b177bee9f5780a858cfe2f5449a207a94aad709060600160405180910390a350506026805461ff001916905550505050565b80612a9f57612a9f61306e565b6001600160a01b03841660009081526007602052604090205460ff168015612ae057506001600160a01b03831660009081526007602052604090205460ff16155b15612af557612af084848461309c565b612bf3565b6001600160a01b03841660009081526007602052604090205460ff16158015612b3657506001600160a01b03831660009081526007602052604090205460ff165b15612b4657612af08484846131c3565b6001600160a01b03841660009081526007602052604090205460ff16158015612b8857506001600160a01b03831660009081526007602052604090205460ff16155b15612b9857612af084848461326d565b6001600160a01b03841660009081526007602052604090205460ff168015612bd857506001600160a01b03831660009081526007602052604090205460ff165b15612be857612af08484846132b2565b612bf384848461326d565b80612c0957612c09601254601155601454601355565b50505050565b600d54600c546000918291825b600854811015612d9957826003600060088481548110612c4c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612cc55750816004600060088481548110612c9e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612cdb57600d54600c54945094505050509091565b612d2f6003600060088481548110612d0357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613322565b9250612d856004600060088481548110612d5957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613322565b915080612d9181613956565b915050612c1c565b50600c54600d54612da991612791565b821015612dc057600d54600c549350935050509091565b90939092509050565b60008183612dea5760405162461bcd60e51b8152600401610e409190613683565b50600061276584866137d7565b600080600080612e078686613364565b90506000612e1487613405565b90506000612e2c82612e268a86613322565b90613322565b95509193509150509250925092565b6000808080612e4a8886612832565b90506000612e588887612832565b90506000612e668888612832565b90506000612e7882612e268686613322565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ece57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f4757600080fd5b505afa158015612f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7f9190613510565b81600181518110612fa057634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050612feb307f000000000000000000000000000000000000000000000000000000000000000084611ea2565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061304090859060009086903090429060040161374f565b600060405180830381600087803b15801561305a57600080fd5b505af115801561272c573d6000803e3d6000fd5b60115415801561307e5750601354155b1561308557565b601180546012556013805460145560009182905555565b6000806000806000806130af87896128b1565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506130e19088613322565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546131109087613322565b6001600160a01b03808b1660009081526003602052604080822093909355908a168152205461313f90866127d3565b6001600160a01b03891660009081526003602052604090205561316181613432565b61316b84836134bb565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516131b091815260200190565b60405180910390a3505050505050505050565b6000806000806000806131d687896128b1565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506132089087613322565b6001600160a01b03808b16600090815260036020908152604080832094909455918b1681526004909152205461323e90846127d3565b6001600160a01b03891660009081526004602090815260408083209390935560039052205461313f90866127d3565b60008060008060008061328087896128b1565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506131109087613322565b6000806000806000806132c587896128b1565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506132f79088613322565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461320890875b600061128283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612734565b60004260285411806133765750601154155b806133b357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156133e957600b546133e2906133d490600160a01b900460ff16600a61383a565b6011546115d4908690612832565b9050610fbf565b600b54611282906133d490600160a01b900460ff16600a61383a565b600b54600090610fbf9061342490600160a01b900460ff16600a61383a565b6013546115d4908590612832565b600061343c61276e565b9050600061344a8383612832565b3060009081526003602052604090205490915061346790826127d3565b3060009081526003602090815260408083209390935560079052205460ff16156134b657306000908152600460205260409020546134a590846127d3565b306000908152600460205260409020555b505050565b600d546134c89083613322565b600d55600e546134d890826127d3565b600e555050565b803580151581146134ef57600080fd5b919050565b600060208284031215613505578081fd5b813561128281613987565b600060208284031215613521578081fd5b815161128281613987565b6000806040838503121561353e578081fd5b823561354981613987565b9150602083013561355981613987565b809150509250929050565b600080600060608486031215613578578081fd5b833561358381613987565b9250602084013561359381613987565b929592945050506040919091013590565b600080600080608085870312156135b9578081fd5b84356135c481613987565b93506135d2602086016134df565b93969395505050506040820135916060013590565b600080604083850312156135f9578182fd5b823561360481613987565b946020939093013593505050565b600060208284031215613623578081fd5b611282826134df565b60006020828403121561363d578081fd5b5035919050565b600080600060608486031215613658578283fd5b83359250613668602085016134df565b9150604084013561367881613987565b809150509250925092565b6000602080835283518082850152825b818110156136af57858101830151858201604001528201613693565b818111156136c05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f546f6b656e20616d6f756e74206578636565647320746865206d617820616d6f6040820152633ab73a1760e11b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561379e5784516001600160a01b031683529383019391830191600101613779565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156137d2576137d2613971565b500190565b6000826137f257634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561383257816000190482111561381857613818613971565b8085161561382557918102915b93841c93908002906137fc565b509250929050565b600061128260ff84168360008261385357506001610fbf565b8161386057506000610fbf565b816001811461387657600281146138805761389c565b6001915050610fbf565b60ff84111561389157613891613971565b50506001821b610fbf565b5060208310610133831016604e8410600b84101617156138bf575081810a610fbf565b6138c983836137f7565b80600019048211156138dd576138dd613971565b029392505050565b60008160001904831182151516156138ff576138ff613971565b500290565b60008282101561391657613916613971565b500390565b600181811c9082168061392f57607f821691505b6020821081141561395057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561396a5761396a613971565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461399c57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f5a71eea9eef42dccef2708277711a2a388bf4567e5729d8e055382907e1339e64736f6c63430008040033

Deployed ByteCode Sourcemap

27636:25235:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29122:40;;;;;;;;;;;;;;;;;;;12263:25:1;;;12251:2;12236:18;29122:40:0;;;;;;;;50974:216;;;;;;;;;;-1:-1:-1;50974:216:0;;;;;:::i;:::-;;:::i;:::-;;31520:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;48681:125::-;;;;;;;;;;-1:-1:-1;48681:125:0;;;;;:::i;:::-;;:::i;32432:161::-;;;;;;;;;;-1:-1:-1;32432:161:0;;;;;:::i;:::-;;:::i;:::-;;;3539:14:1;;3532:22;3514:41;;3502:2;3487:18;32432:161:0;3469:92:1;48312:113:0;;;;;;;;;;-1:-1:-1;48312:113:0;;;;;:::i;:::-;;:::i;49098:127::-;;;;;;;;;;-1:-1:-1;49098:127:0;;;;;:::i;:::-;;:::i;33553:87::-;;;;;;;;;;-1:-1:-1;33622:10:0;;33553:87;;47755:119;;;;;;;;;;-1:-1:-1;47755:119:0;;;;;:::i;:::-;;:::i;49382:114::-;;;;;;;;;;-1:-1:-1;49382:114:0;;;;;:::i;:::-;;:::i;29788:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3330:32:1;;;3312:51;;3300:2;3285:18;29788:51:0;3267:102:1;50116:451:0;;;;;;;;;;-1:-1:-1;50116:451:0;;;;;:::i;:::-;;:::i;31797:95::-;;;;;;;;;;-1:-1:-1;31877:7:0;;31797:95;;48947:145;;;;;;;;;;-1:-1:-1;48947:145:0;;;;;:::i;:::-;;:::i;29271:31::-;;;;;;;;;;;;;;;;28987:35;;;;;;;;;;;;;;;;29210:33;;;;;;;;;;;;;;;;32601:313;;;;;;;;;;-1:-1:-1;32601:313:0;;;;;:::i;:::-;;:::i;28161:31::-;;;;;;;;;;-1:-1:-1;28161:31:0;;;;-1:-1:-1;;;;;28161:31:0;;;34112:253;;;;;;;;;;-1:-1:-1;34112:253:0;;;;;:::i;:::-;;:::i;31706:83::-;;;;;;;;;;-1:-1:-1;31772:9:0;;-1:-1:-1;;;31772:9:0;;;;31706:83;;13783:4:1;13771:17;;;13753:36;;13741:2;13726:18;31706:83:0;13708:87:1;47880:111:0;;;;;;;;;;-1:-1:-1;47880:111:0;;;;;:::i;:::-;;:::i;49231:145::-;;;;;;;;;;-1:-1:-1;49231:145:0;;;;;:::i;:::-;;:::i;32922:218::-;;;;;;;;;;-1:-1:-1;32922:218:0;;;;;:::i;:::-;;:::i;28543:31::-;;;;;;;;;;;;;;;;19191:246;;;;;;;;;;-1:-1:-1;19191:246:0;;;;;:::i;:::-;;:::i;50573:192::-;;;;;;;;;;-1:-1:-1;50573:192:0;;;;;:::i;:::-;;:::i;29169:34::-;;;;;;;;;;;;;;;;47641:108;;;;;;;;;;-1:-1:-1;47641:108:0;;;;;:::i;:::-;;:::i;47158:189::-;;;;;;;;;;-1:-1:-1;47158:189:0;;;;;:::i;:::-;;:::i;47353:102::-;;;;;;;;;;-1:-1:-1;47353:102:0;;;;;:::i;:::-;;:::i;52386:121::-;;;;;;;;;;-1:-1:-1;52386:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;52475:24:0;52451:4;52475:24;;;:14;:24;;;;;;;;;52386:121;29846:38;;;;;;;;;;;;;;;48812:129;;;;;;;;;;-1:-1:-1;48812:129:0;;;;;:::i;:::-;;:::i;30019:34::-;;;;;;;;;;-1:-1:-1;30019:34:0;;;;;;;;;;;47029:123;;;;;;;;;;-1:-1:-1;47029:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;47117:27:0;47093:4;47117:27;;;:18;:27;;;;;;;;;47029:123;29971:41;;;;;;;;;;-1:-1:-1;29971:41:0;;;;;;;;;;;28684:37;;;;;;;;;;;;;;;;52030:114;;;;;;;;;;-1:-1:-1;52030:114:0;;;;;:::i;:::-;;:::i;31900:198::-;;;;;;;;;;-1:-1:-1;31900:198:0;;;;;:::i;:::-;;:::i;47997:107::-;;;;;;;;;;-1:-1:-1;47997:107:0;;;;;:::i;:::-;;:::i;29673:37::-;;;;;;;;;;;;;;;;51827:197;;;;;;;;;;-1:-1:-1;51827:197:0;;;;;:::i;:::-;;:::i;28939:41::-;;;;;;;;;;;;;;;;33425:120;;;;;;;;;;-1:-1:-1;33425:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;33517:20:0;33493:4;33517:20;;;:11;:20;;;;;;;;;33425:120;50771:197;;;;;;;;;;-1:-1:-1;50771:197:0;;;;;:::i;:::-;;:::i;18745:79::-;;;;;;;;;;-1:-1:-1;18783:7:0;18810:6;-1:-1:-1;;;;;18810:6:0;18745:79;;48211:95;;;;;;;;;;-1:-1:-1;48211:95:0;;;;;:::i;:::-;;:::i;31611:87::-;;;;;;;;;;;;;:::i;28087:31::-;;;;;;;;;;-1:-1:-1;28087:31:0;;;;-1:-1:-1;;;;;28087:31:0;;;49502:115;;;;;;;;;;-1:-1:-1;49502:115:0;;;;;:::i;:::-;;:::i;52513:132::-;;;;;;;;;;-1:-1:-1;52513:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;52609:28:0;52582:7;52609:28;;;:18;:28;;;;;;;52513:132;48431:111;;;;;;;;;;-1:-1:-1;48431:111:0;;;;;:::i;:::-;;:::i;52266:114::-;;;;;;;;;;-1:-1:-1;52266:114:0;;;;;:::i;:::-;;:::i;33148:269::-;;;;;;;;;;-1:-1:-1;33148:269:0;;;;;:::i;:::-;;:::i;29899:31::-;;;;;;;;;;-1:-1:-1;29899:31:0;;;;;;;;32106:167;;;;;;;;;;-1:-1:-1;32106:167:0;;;;;:::i;:::-;;:::i;51196:219::-;;;;;;;;;;-1:-1:-1;51196:219:0;;;;;:::i;:::-;;:::i;29076:39::-;;;;;;;;;;;;;;;;33648:456;;;;;;;;;;-1:-1:-1;33648:456:0;;;;;:::i;:::-;;:::i;19445:89::-;;;;;;;;;;-1:-1:-1;19517:9:0;;19445:89;;51554:267;;;;;;;;;;-1:-1:-1;51554:267:0;;;;;:::i;:::-;;:::i;28125:29::-;;;;;;;;;;-1:-1:-1;28125:29:0;;;;-1:-1:-1;;;;;28125:29:0;;;51421:127;;;;;;;;;;-1:-1:-1;51421:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;51514:26:0;51490:4;51514:26;;;:16;:26;;;;;;;;;51421:127;52651:120;;;;;;;;;;-1:-1:-1;52651:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;52741:22:0;52714:7;52741:22;;;:12;:22;;;;;;;52651:120;28839:40;;;;;;;;;;;;;;;;32281:143;;;;;;;;;;-1:-1:-1;32281:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;32389:18:0;;;32362:7;32389:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32281:143;47461:174;;;;;;;;;;-1:-1:-1;47461:174:0;;;;;:::i;:::-;;:::i;48110:95::-;;;;;;;;;;-1:-1:-1;48110:95:0;;;;;:::i;:::-;;:::i;49623:483::-;;;;;;;;;;-1:-1:-1;49623:483:0;;;;;:::i;:::-;;:::i;52150:110::-;;;;;;;;;;-1:-1:-1;52150:110:0;;;;;:::i;:::-;;:::i;29029:40::-;;;;;;;;;;;;;;;;28892:34;;;;;;;;;;;;;;;;48548:127;;;;;;;;;;-1:-1:-1;48548:127:0;;;;;:::i;:::-;;:::i;29330:27::-;;;;;;;;;;;;;;;;50974:216;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;51061:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;::::1;;51060:27;51052:86;;;::::0;-1:-1:-1;;;51052:86:0;;8076:2:1;51052:86:0::1;::::0;::::1;8058:21:1::0;8115:2;8095:18;;;8088:30;8154:34;8134:18;;;8127:62;-1:-1:-1;;;8205:18:1;;;8198:44;8259:19;;51052:86:0::1;8048:236:1::0;51052:86:0::1;-1:-1:-1::0;;;;;51149:26:0::1;;::::0;;;:16:::1;:26;::::0;;;;:33;;-1:-1:-1;;51149:33:0::1;51178:4;51149:33;::::0;;50974:216::o;31520:83::-;31557:13;31590:5;31583:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31520:83;:::o;48681:125::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48766:16:::1;:32:::0;48681:125::o;32432:161::-;32507:4;32524:39;3233:10;32547:7;32556:6;32524:8;:39::i;:::-;-1:-1:-1;32581:4:0;32432:161;;;;;:::o;48312:113::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48391:13:::1;:26:::0;48312:113::o;49098:127::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;49185:15:::1;:32:::0;49098:127::o;47755:119::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;47838:13:::1;:28:::0;47755:119::o;49382:114::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;49453:27:0::1;49483:5;49453:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;49453:35:0::1;::::0;;49382:114::o;50116:451::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;50317:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;50316:21;50308:61;;;::::0;-1:-1:-1;;;50308:61:0;;7720:2:1;50308:61:0::1;::::0;::::1;7702:21:1::0;7759:2;7739:18;;;7732:30;7798:29;7778:18;;;7771:57;7845:18;;50308:61:0::1;7692:177:1::0;50308:61:0::1;-1:-1:-1::0;;;;;50383:16:0;::::1;50402:1;50383:16:::0;;;:7:::1;:16;::::0;;;;;:20;50380:108:::1;;-1:-1:-1::0;;;;;50459:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;50439:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;50420:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;50380:108:::1;-1:-1:-1::0;;;;;50498:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;50498:27:0::1;50521:4;50498:27:::0;;::::1;::::0;;;50536:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;50536:23:0::1;::::0;;::::1;::::0;;50116:451::o;48947:145::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;49042:21:::1;:42:::0;48947:145::o;32601:313::-;32699:4;32716:36;32726:6;32734:9;32745:6;32716:9;:36::i;:::-;32763:121;32772:6;3233:10;32794:89;32832:6;32794:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32794:19:0;;;;;;:11;:19;;;;;;;;3233:10;32794:33;;;;;;;;;;:37;:89::i;:::-;32763:8;:121::i;:::-;-1:-1:-1;32902:4:0;32601:313;;;;;;:::o;34112:253::-;34178:7;34217;;34206;:18;;34198:73;;;;-1:-1:-1;;;34198:73:0;;5728:2:1;34198:73:0;;;5710:21:1;5767:2;5747:18;;;5740:30;5806:34;5786:18;;;5779:62;-1:-1:-1;;;5857:18:1;;;5850:40;5907:19;;34198:73:0;5700:232:1;34198:73:0;34282:19;34305:10;:8;:10::i;:::-;34282:33;-1:-1:-1;34333:24:0;:7;34282:33;34333:11;:24::i;47880:111::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;47959:11:::1;:24:::0;47880:111::o;49231:145::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;49326:21:::1;:42:::0;49231:145::o;32922:218::-;3233:10;33010:4;33059:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33059:34:0;;;;;;;;;;33010:4;;33027:83;;33050:7;;33059:50;;33098:10;33059:38;:50::i;19191:246::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19282:22:0;::::1;19274:73;;;::::0;-1:-1:-1;;;19274:73:0;;6139:2:1;19274:73:0::1;::::0;::::1;6121:21:1::0;6178:2;6158:18;;;6151:30;6217:34;6197:18;;;6190:62;-1:-1:-1;;;6268:18:1;;;6261:36;6314:19;;19274:73:0::1;6111:228:1::0;19274:73:0::1;19384:6;::::0;;19363:38:::1;::::0;-1:-1:-1;;;;;19363:38:0;;::::1;::::0;19384:6;::::1;::::0;19363:38:::1;::::0;::::1;19412:6;:17:::0;;-1:-1:-1;;;;;;19412:17:0::1;-1:-1:-1::0;;;;;19412:17:0;;;::::1;::::0;;;::::1;::::0;;19191:246::o;50573:192::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;50656:24:0;::::1;;::::0;;;:14:::1;:24:::0;;;;;;::::1;;50655:25;50647:68;;;::::0;-1:-1:-1;;;50647:68:0;;9571:2:1;50647:68:0::1;::::0;::::1;9553:21:1::0;9610:2;9590:18;;;9583:30;9649:32;9629:18;;;9622:60;9699:18;;50647:68:0::1;9543:180:1::0;50647:68:0::1;-1:-1:-1::0;;;;;50726:24:0::1;;::::0;;;:14:::1;:24:::0;;;;;:31;;-1:-1:-1;;50726:31:0::1;50753:4;50726:31;::::0;;50573:192::o;47641:108::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;47715:14:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;47715:26:0;;::::1;::::0;;;::::1;::::0;;47641:108::o;47158:189::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;47285:9:::1;::::0;47251:44:::1;::::0;47281:13:::1;::::0;-1:-1:-1;;;47285:9:0;::::1;;;47281:2;:13;:::i;:::-;47251:7;::::0;:25:::1;::::0;47263:12;47251:11:::1;:25::i;:::-;:29:::0;::::1;:44::i;:::-;47236:12;:59:::0;;;47307:32:::1;::::0;12263:25:1;;;47307:32:0::1;::::0;12251:2:1;12236:18;47307:32:0::1;;;;;;;;47158:189:::0;:::o;47353:102::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;47424:11:::1;:23:::0;;-1:-1:-1;;47424:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;47353:102::o;48812:129::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48899:17:::1;:34:::0;48812:129::o;52030:114::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;52109:16:::1;:27:::0;;-1:-1:-1;;;;;;52109:27:0::1;-1:-1:-1::0;;;;;52109:27:0;;;::::1;::::0;;;::::1;::::0;;52030:114::o;31900:198::-;-1:-1:-1;;;;;31990:20:0;;31966:7;31990:20;;;:11;:20;;;;;;;;31986:49;;;-1:-1:-1;;;;;;32019:16:0;;;;;:7;:16;;;;;;;31900:198::o;31986:49::-;-1:-1:-1;;;;;32073:16:0;;;;;;:7;:16;;;;;;32053:37;;:19;:37::i;47997:107::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48074:10:::1;:22:::0;47997:107::o;51827:197::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51906:24:0::1;;::::0;;;:14:::1;:24;::::0;;;;;;;51899:31;;-1:-1:-1;;51899:31:0::1;::::0;;51948:18:::1;:28:::0;;;;;51941:35;;;51994:12:::1;:22:::0;;;;;51987:29;51827:197::o;50771:::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;50858:24:0;::::1;;::::0;;;:14:::1;:24:::0;;;;;;::::1;;50850:67;;;::::0;-1:-1:-1;;;50850:67:0;;9212:2:1;50850:67:0::1;::::0;::::1;9194:21:1::0;9251:2;9231:18;;;9224:30;9290:32;9270:18;;;9263:60;9340:18;;50850:67:0::1;9184:180:1::0;50850:67:0::1;-1:-1:-1::0;;;;;50928:24:0::1;50955:5;50928:24:::0;;;:14:::1;:24:::0;;;;;:32;;-1:-1:-1;;50928:32:0::1;::::0;;50771:197::o;48211:95::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48282:7:::1;:16:::0;48211:95::o;31611:87::-;31650:13;31683:7;31676:14;;;;;:::i;49502:115::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;49575:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;49575:34:0::1;49605:4;49575:34;::::0;;49502:115::o;48431:111::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48510:11:::1;:24:::0;48431:111::o;52266:114::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;52345:16:::1;:27:::0;;-1:-1:-1;;;;;;52345:27:0::1;-1:-1:-1::0;;;;;52345:27:0;;;::::1;::::0;;;::::1;::::0;;52266:114::o;33148:269::-;33241:4;33258:129;3233:10;33281:7;33290:96;33329:15;33290:96;;;;;;;;;;;;;;;;;3233:10;33290:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33290:34:0;;;;;;;;;;;;:38;:96::i;32106:167::-;32184:4;32201:42;3233:10;32225:9;32236:6;32201:9;:42::i;51196:219::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51285:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;::::1;;51277:85;;;::::0;-1:-1:-1;;;51277:85:0;;6949:2:1;51277:85:0::1;::::0;::::1;6931:21:1::0;6988:2;6968:18;;;6961:30;7027:34;7007:18;;;7000:62;-1:-1:-1;;;7078:18:1;;;7071:44;7132:19;;51277:85:0::1;6921:236:1::0;51277:85:0::1;-1:-1:-1::0;;;;;51373:26:0::1;51402:5;51373:26:::0;;;:16:::1;:26;::::0;;;;:34;;-1:-1:-1;;51373:34:0::1;::::0;;51196:219::o;33648:456::-;33750:7;33789;;33778;:18;;33770:62;;;;-1:-1:-1;;;33770:62:0;;8491:2:1;33770:62:0;;;8473:21:1;8530:2;8510:18;;;8503:30;8569:33;8549:18;;;8542:61;8620:18;;33770:62:0;8463:181:1;33770:62:0;33848:17;33843:254;;33883:15;33907:23;33918:7;33927:2;33907:10;:23::i;:::-;-1:-1:-1;33882:48:0;;-1:-1:-1;33945:14:0;;-1:-1:-1;;;;;33945:14:0;33843:254;33994:23;34025;34036:7;34045:2;34025:10;:23::i;:::-;-1:-1:-1;33992:56:0;;-1:-1:-1;34063:22:0;;-1:-1:-1;;;;;34063:22:0;51554:267;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51679:24:0;;;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;:42;;-1:-1:-1;;51679:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;51732:18:::1;:28:::0;;;;;:38;;;;51781:12:::1;:22:::0;;;;:32;51554:267::o;47461:174::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;47539:21:::1;:33:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;47539:33:0;;::::1;;::::0;;47588:39:::1;::::0;::::1;::::0;::::1;::::0;47563:9;3539:14:1;3532:22;3514:41;;3502:2;3487:18;;3469:92;48110:95:0;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48181:7:::1;:16:::0;48110:95::o;49623:483::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;49709:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;49701:60;;;::::0;-1:-1:-1;;;49701:60:0;;7720:2:1;49701:60:0::1;::::0;::::1;7702:21:1::0;7759:2;7739:18;;;7732:30;7798:29;7778:18;;;7771:57;7845:18;;49701:60:0::1;7692:177:1::0;49701:60:0::1;49777:9;49772:327;49796:9;:16:::0;49792:20;::::1;49772:327;;;49854:7;-1:-1:-1::0;;;;;49838:23:0::1;:9;49848:1;49838:12;;;;;;-1:-1:-1::0;;;49838:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;49838:12:0::1;:23;49834:254;;;49897:9;49907:16:::0;;:20:::1;::::0;49926:1:::1;::::0;49907:20:::1;:::i;:::-;49897:31;;;;;;-1:-1:-1::0;;;49897:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;49882:9:::1;:12:::0;;-1:-1:-1;;;;;49897:31:0;;::::1;::::0;49892:1;;49882:12;::::1;;;-1:-1:-1::0;;;49882:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;49882:46:0::1;-1:-1:-1::0;;;;;49882:46:0;;::::1;;::::0;;49947:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;49986:11:::1;:20:::0;;;;:28;;-1:-1:-1;;49986:28:0::1;::::0;;50033:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;50033:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;50033:15:0;;;;;-1:-1:-1;;;;;;50033:15:0::1;::::0;;;;;49772:327:::1;49623:483:::0;:::o;49834:254::-:1;49814:3:::0;::::1;::::0;::::1;:::i;:::-;;;;49772:327;;;;49623:483:::0;:::o;52150:110::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;52227:14:::1;:25:::0;;-1:-1:-1;;;;;;52227:25:0::1;-1:-1:-1::0;;;;;52227:25:0;;;::::1;::::0;;;::::1;::::0;;52150:110::o;48548:127::-;18957:6;;-1:-1:-1;;;;;18957:6:0;3233:10;18957:22;18949:67;;;;-1:-1:-1;;;18949:67:0;;;;;;;:::i;:::-;48635:15:::1;:32:::0;48548:127::o;34371:337::-;-1:-1:-1;;;;;34464:19:0;;34456:68;;;;-1:-1:-1;;;34456:68:0;;11914:2:1;34456:68:0;;;11896:21:1;11953:2;11933:18;;;11926:30;11992:34;11972:18;;;11965:62;-1:-1:-1;;;12043:18:1;;;12036:34;12087:19;;34456:68:0;11886:226:1;34456:68:0;-1:-1:-1;;;;;34543:21:0;;34535:68;;;;-1:-1:-1;;;34535:68:0;;6546:2:1;34535:68:0;;;6528:21:1;6585:2;6565:18;;;6558:30;6624:34;6604:18;;;6597:62;-1:-1:-1;;;6675:18:1;;;6668:32;6717:19;;34535:68:0;6518:224:1;34535:68:0;-1:-1:-1;;;;;34616:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;34668:32;;12263:25:1;;;34668:32:0;;12236:18:1;34668:32:0;;;;;;;34371:337;;;:::o;34716:3374::-;-1:-1:-1;;;;;34838:18:0;;34830:68;;;;-1:-1:-1;;;34830:68:0;;11103:2:1;34830:68:0;;;11085:21:1;11142:2;11122:18;;;11115:30;11181:34;11161:18;;;11154:62;-1:-1:-1;;;11232:18:1;;;11225:35;11277:19;;34830:68:0;11075:227:1;34830:68:0;-1:-1:-1;;;;;34917:16:0;;34909:64;;;;-1:-1:-1;;;34909:64:0;;4611:2:1;34909:64:0;;;4593:21:1;4650:2;4630:18;;;4623:30;4689:34;4669:18;;;4662:62;-1:-1:-1;;;4740:18:1;;;4733:33;4783:19;;34909:64:0;4583:225:1;34909:64:0;35001:1;34992:6;:10;34984:64;;;;-1:-1:-1;;;34984:64:0;;10693:2:1;34984:64:0;;;10675:21:1;10732:2;10712:18;;;10705:30;10771:34;10751:18;;;10744:62;-1:-1:-1;;;10822:18:1;;;10815:39;10871:19;;34984:64:0;10665:231:1;34984:64:0;-1:-1:-1;;;;;35068:20:0;;;;;;:14;:20;;;;;;;;35067:21;35059:63;;;;-1:-1:-1;;;35059:63:0;;5370:2:1;35059:63:0;;;5352:21:1;5409:2;5389:18;;;5382:30;5448:31;5428:18;;;5421:59;5497:18;;35059:63:0;5342:179:1;35059:63:0;-1:-1:-1;;;;;35136:18:0;;;;;;:14;:18;;;;;;;;35135:19;35127:64;;;;-1:-1:-1;;;35127:64:0;;8851:2:1;35127:64:0;;;8833:21:1;;;8870:18;;;8863:30;8929:34;8909:18;;;8902:62;8981:18;;35127:64:0;8823:182:1;35127:64:0;18783:7;18810:6;-1:-1:-1;;;;;35218:15:0;;;18810:6;;35218:15;;;;:34;;-1:-1:-1;35238:14:0;;;;;;;35237:15;35218:34;35214:120;;;35277:14;;;;;;;35269:53;;;;-1:-1:-1;;;35269:53:0;;5015:2:1;35269:53:0;;;4997:21:1;5054:2;5034:18;;;5027:30;5093:28;5073:18;;;5066:56;5139:18;;35269:53:0;4987:176:1;35269:53:0;18783:7;18810:6;-1:-1:-1;;;;;35348:15:0;;;18810:6;;35348:15;;;;:32;;-1:-1:-1;18783:7:0;18810:6;-1:-1:-1;;;;;35367:13:0;;;18810:6;;35367:13;;35348:32;:61;;;;-1:-1:-1;;;;;;35385:24:0;;;;;;:18;:24;;;;;;;;35384:25;35348:61;:88;;;;-1:-1:-1;;;;;;35414:22:0;;;;;;:18;:22;;;;;;;;35413:23;35348:88;35344:1826;;;-1:-1:-1;;;;;35471:21:0;;35487:4;35471:21;;;;:44;;-1:-1:-1;;;;;;35496:19:0;;35510:4;35496:19;;35471:44;:80;;;;;35535:15;-1:-1:-1;;;;;35519:32:0;:4;-1:-1:-1;;;;;35519:32:0;;;35471:80;:114;;;;;35569:15;-1:-1:-1;;;;;35555:30:0;:2;-1:-1:-1;;;;;35555:30:0;;;35471:114;35467:226;;;35624:12;;35614:6;:22;;35606:71;;;;-1:-1:-1;;;35606:71:0;;;;;;;:::i;:::-;35725:15;-1:-1:-1;;;;;35711:30:0;:2;-1:-1:-1;;;;;35711:30:0;;35707:233;;35780:12;;35770:6;:22;;35762:71;;;;-1:-1:-1;;;35762:71:0;;;;;;;:::i;:::-;35868:16;;35852:13;:32;35914:10;;35904:7;:20;35707:233;35966:13;-1:-1:-1;;;;;35958:21:0;:4;-1:-1:-1;;;;;35958:21:0;;;:53;;;;;35997:13;-1:-1:-1;;;;;35983:28:0;:2;-1:-1:-1;;;;;35983:28:0;;;35958:53;35954:916;;;36050:12;;36040:6;:22;;36032:71;;;;-1:-1:-1;;;36032:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36128:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;36154:20:0;;;;;;:16;:20;;;;;;;;36128:46;36124:717;;;36215:21;;36199:13;:37;36270:15;;36260:7;:25;36124:717;;;-1:-1:-1;;;;;36332:20:0;;;;;;:14;:20;;;;;;;;36328:513;;;-1:-1:-1;;;;;36397:24:0;;;;;;:18;:24;;;;;;;;;36381:13;:40;36458:12;:18;;;;;;36448:7;:28;36328:513;;;-1:-1:-1;;;;;36523:18:0;;;;;;:14;:18;;;;;;;;36519:322;;;-1:-1:-1;;;;;36586:22:0;;;;;;:18;:22;;;;;;;;;36570:13;:38;36645:12;:16;;;;;;36635:7;:26;36519:322;;;36747:21;;36731:13;:37;36806:15;;36796:7;:25;36519:322;36896:13;-1:-1:-1;;;;;36888:21:0;:4;-1:-1:-1;;;;;36888:21:0;;;:53;;;;;36927:13;-1:-1:-1;;;;;36913:28:0;:2;-1:-1:-1;;;;;36913:28:0;;36888:53;36884:261;;;36980:12;;36970:6;:22;;36962:71;;;;-1:-1:-1;;;36962:71:0;;;;;;;:::i;:::-;37068:17;;37052:13;:33;37114:11;;37104:7;:21;36884:261;37180:28;37211:24;37229:4;37211:9;:24::i;:::-;37180:55;;37284:12;;37260:20;:36;37256:112;;-1:-1:-1;37344:12:0;;37256:112;37431:19;;37407:43;;;;;;;37479:53;;-1:-1:-1;37516:16:0;;;;;;;37515:17;37479:53;:91;;;;;37557:13;-1:-1:-1;;;;;37549:21:0;:4;-1:-1:-1;;;;;37549:21:0;;;37479:91;:129;;;;-1:-1:-1;37587:21:0;;;;;;;37479:129;37461:222;;;37635:36;37650:20;37635:14;:36::i;:::-;-1:-1:-1;;;;;37891:24:0;;37764:12;37891:24;;;:18;:24;;;;;;37779:4;;37891:24;;;:50;;-1:-1:-1;;;;;;37919:22:0;;;;;;:18;:22;;;;;;;;37891:50;:66;;;-1:-1:-1;37946:11:0;;;;37945:12;37891:66;37888:112;;;-1:-1:-1;37983:5:0;37888:112;38020:38;38035:4;38040:2;38043:6;38050:7;38020:14;:38::i;:::-;34716:3374;;;;;;:::o;7961:192::-;8047:7;8083:12;8075:6;;;;8067:29;;;;-1:-1:-1;;;8067:29:0;;;;;;;;:::i;:::-;-1:-1:-1;8107:9:0;8119:5;8123:1;8119;:5;:::i;:::-;8107:17;7961:192;-1:-1:-1;;;;;7961:192:0:o;44951:163::-;44992:7;45013:15;45030;45049:19;:17;:19::i;:::-;45012:56;;-1:-1:-1;45012:56:0;-1:-1:-1;45086:20:0;45012:56;;45086:11;:20::i;:::-;45079:27;;;;44951:163;:::o;9359:132::-;9417:7;9444:39;9448:1;9451;9444:39;;;;;;;;;;;;;;;;;:3;:39::i;7058:181::-;7116:7;;7148:5;7152:1;7148;:5;:::i;:::-;7136:17;;7177:1;7172;:6;;7164:46;;;;-1:-1:-1;;;7164:46:0;;7364:2:1;7164:46:0;;;7346:21:1;7403:2;7383:18;;;7376:30;7442:29;7422:18;;;7415:57;7489:18;;7164:46:0;7336:177:1;8412:471:0;8470:7;8715:6;8711:47;;-1:-1:-1;8745:1:0;8738:8;;8711:47;8770:9;8782:5;8786:1;8782;:5;:::i;:::-;8770:17;-1:-1:-1;8815:1:0;8806:5;8810:1;8770:17;8806:5;:::i;:::-;:10;8798:56;;;;-1:-1:-1;;;8798:56:0;;9930:2:1;8798:56:0;;;9912:21:1;9969:2;9949:18;;;9942:30;10008:34;9988:18;;;9981:62;-1:-1:-1;;;10059:18:1;;;10052:31;10100:19;;8798:56:0;9902:223:1;43717:435:0;43788:7;43797;43806;43815;43824;43833;43854:23;43879:12;43893:18;43915:24;43927:7;43936:2;43915:11;:24::i;:::-;43853:86;;;;;;43951:15;43968:23;43993:12;44009:50;44021:7;44030:4;44036:10;44048;:8;:10::i;:::-;44009:11;:50::i;:::-;43950:109;;-1:-1:-1;43950:109:0;-1:-1:-1;43950:109:0;-1:-1:-1;44110:15:0;;-1:-1:-1;44127:4:0;;-1:-1:-1;44133:10:0;;-1:-1:-1;;;;43717:435:0;;;;;;;;:::o;38100:1049::-;30538:16;:23;;-1:-1:-1;;30538:23:0;;;;;38259:20;38332:34:::1;38259:20:::0;38332:16:::1;:34::i;:::-;38592:13;::::0;38473:21:::1;::::0;38452:18:::1;::::0;38568:38:::1;::::0;:19:::1;38473:21:::0;38583:3:::1;38568:14;:19::i;:::-;:23:::0;::::1;:38::i;:::-;38545:61;;38617:18;38638:36;38662:11;;38638:19;38653:3;38638:10;:14;;:19;;;;:::i;:36::-;38617:57;;38685:20;38708:32;38732:7;;38708:19;38723:3;38708:10;:14;;:19;;;;:::i;:32::-;38801:16;::::0;38793:48:::1;::::0;38685:55;;-1:-1:-1;;;;;;38801:16:0::1;::::0;38793:48;::::1;;;::::0;38828:12;;38801:16:::1;38793:48:::0;38801:16;38793:48;38828:12;38801:16;38793:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;38896:14:0::1;::::0;38888:44:::1;::::0;-1:-1:-1;;;;;38896:14:0;;::::1;::::0;38888:44;::::1;;;::::0;38921:10;;38896:14:::1;38888:44:::0;38896:14;38888:44;38921:10;38896:14;38888:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;38987:16:0::1;::::0;38979:48:::1;::::0;-1:-1:-1;;;;;38987:16:0;;::::1;::::0;38979:48;::::1;;;::::0;39014:12;;38987:16:::1;38979:48:::0;38987:16;38979:48;39014:12;38987:16;38979:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39110:14:0::1;::::0;39078:16:::1;::::0;39045:92:::1;::::0;;13489:25:1;;;13545:2;13530:18;;13523:34;;;13573:18;;;13566:34;;;-1:-1:-1;;;;;39110:14:0;;::::1;::::0;39078:16;;::::1;::::0;39045:92:::1;::::0;13477:2:1;13462:18;39045:92:0::1;;;;;;;-1:-1:-1::0;;30584:16:0;:24;;-1:-1:-1;;30584:24:0;;;-1:-1:-1;;;;38100:1049:0:o;40348:834::-;40459:7;40455:40;;40481:14;:12;:14::i;:::-;-1:-1:-1;;;;;40520:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;40544:22:0;;;;;;:11;:22;;;;;;;;40543:23;40520:46;40516:597;;;40583:48;40605:6;40613:9;40624:6;40583:21;:48::i;:::-;40516:597;;;-1:-1:-1;;;;;40654:19:0;;;;;;:11;:19;;;;;;;;40653:20;:46;;;;-1:-1:-1;;;;;;40677:22:0;;;;;;:11;:22;;;;;;;;40653:46;40649:464;;;40716:46;40736:6;40744:9;40755:6;40716:19;:46::i;40649:464::-;-1:-1:-1;;;;;40785:19:0;;;;;;:11;:19;;;;;;;;40784:20;:47;;;;-1:-1:-1;;;;;;40809:22:0;;;;;;:11;:22;;;;;;;;40808:23;40784:47;40780:333;;;40848:44;40866:6;40874:9;40885:6;40848:17;:44::i;40780:333::-;-1:-1:-1;;;;;40914:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40937:22:0;;;;;;:11;:22;;;;;;;;40914:45;40910:203;;;40976:48;40998:6;41006:9;41017:6;40976:21;:48::i;40910:203::-;41057:44;41075:6;41083:9;41094:6;41057:17;:44::i;:::-;41137:7;41133:41;;41159:15;46946;;46936:7;:25;46988:21;;46972:13;:37;46892:125;41159:15;40348:834;;;;:::o;45122:561::-;45219:7;;45255;;45172;;;;;45279:289;45303:9;:16;45299:20;;45279:289;;;45369:7;45345;:21;45353:9;45363:1;45353:12;;;;;;-1:-1:-1;;;45353:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45353:12:0;45345:21;;;;;;;;;;;;;:31;;:66;;;45404:7;45380;:21;45388:9;45398:1;45388:12;;;;;;-1:-1:-1;;;45388:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45388:12:0;45380:21;;;;;;;;;;;;;:31;45345:66;45341:97;;;45421:7;;45430;;45413:25;;;;;;;45122:561;;:::o;45341:97::-;45463:34;45475:7;:21;45483:9;45493:1;45483:12;;;;;;-1:-1:-1;;;45483:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45483:12:0;45475:21;;;;;;;;;;;;;45463:7;;:11;:34::i;:::-;45453:44;;45522:34;45534:7;:21;45542:9;45552:1;45542:12;;;;;;-1:-1:-1;;;45542:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45542:12:0;45534:21;;;;;;;;;;;;;45522:7;;:11;:34::i;:::-;45512:44;-1:-1:-1;45321:3:0;;;;:::i;:::-;;;;45279:289;;;-1:-1:-1;45604:7:0;;45592;;:20;;:11;:20::i;:::-;45582:7;:30;45578:61;;;45622:7;;45631;;45614:25;;;;;;45122:561;;:::o;45578:61::-;45658:7;;45667;;-1:-1:-1;45122:561:0;-1:-1:-1;45122:561:0:o;9987:278::-;10073:7;10108:12;10101:5;10093:28;;;;-1:-1:-1;;;10093:28:0;;;;;;;;:::i;:::-;-1:-1:-1;10132:9:0;10144:5;10148:1;10144;:5;:::i;44160:346::-;44232:7;44241;44250;44270:12;44285:28;44301:7;44310:2;44285:15;:28::i;:::-;44270:43;;44324:18;44345:30;44367:7;44345:21;:30::i;:::-;44324:51;-1:-1:-1;44386:23:0;44412:33;44324:51;44412:17;:7;44424:4;44412:11;:17::i;:::-;:21;;:33::i;:::-;44386:59;-1:-1:-1;44481:4:0;;-1:-1:-1;44487:10:0;-1:-1:-1;;44160:346:0;;;;;:::o;44514:429::-;44629:7;;;;44685:24;:7;44697:11;44685;:24::i;:::-;44667:42;-1:-1:-1;44720:12:0;44735:21;:4;44744:11;44735:8;:21::i;:::-;44720:36;-1:-1:-1;44767:18:0;44788:27;:10;44803:11;44788:14;:27::i;:::-;44767:48;-1:-1:-1;44826:23:0;44852:33;44767:48;44852:17;:7;44864:4;44852:11;:17::i;:33::-;44904:7;;;;-1:-1:-1;44930:4:0;;-1:-1:-1;44514:429:0;;-1:-1:-1;;;;;;;44514:429:0:o;39155:589::-;39305:16;;;39319:1;39305:16;;;;;;;;39281:21;;39305:16;;;;;;;;;;-1:-1:-1;39305:16:0;39281:40;;39350:4;39332;39337:1;39332:7;;;;;;-1:-1:-1;;;39332:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;39332:23:0;;;-1:-1:-1;;;;;39332:23:0;;;;;39376:15;-1:-1:-1;;;;;39376:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39366:4;39371:1;39366:7;;;;;;-1:-1:-1;;;39366:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;39366:32:0;;;-1:-1:-1;;;;;39366:32:0;;;;;39411:62;39428:4;39443:15;39461:11;39411:8;:62::i;:::-;39512:224;;-1:-1:-1;;;39512:224:0;;-1:-1:-1;;;;;39512:15:0;:66;;;;:224;;39593:11;;39619:1;;39663:4;;39690;;39710:15;;39512:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46630:250;46676:7;;:12;:34;;;;-1:-1:-1;46692:13:0;;:18;46676:34;46673:46;;;46630:250::o;46673:46::-;46757:7;;;46739:15;:25;46799:13;;;46775:21;:37;-1:-1:-1;46833:11:0;;;;46855:17;46630:250::o;42316:577::-;42419:15;42436:23;42461:12;42475:23;42500:12;42514:18;42536:30;42547:7;42556:9;42536:10;:30::i;:::-;-1:-1:-1;;;;;42595:15:0;;;;;;:7;:15;;;;;;42418:148;;-1:-1:-1;42418:148:0;;-1:-1:-1;42418:148:0;;-1:-1:-1;42418:148:0;-1:-1:-1;42418:148:0;-1:-1:-1;42418:148:0;-1:-1:-1;42595:28:0;;42615:7;42595:19;:28::i;:::-;-1:-1:-1;;;;;42577:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42652:7;:15;;;;:28;;42672:7;42652:19;:28::i;:::-;-1:-1:-1;;;;;42634:15:0;;;;;;;:7;:15;;;;;;:46;;;;42712:18;;;;;;;:39;;42735:15;42712:22;:39::i;:::-;-1:-1:-1;;;;;42691:18:0;;;;;;:7;:18;;;;;:60;42765:26;42780:10;42765:14;:26::i;:::-;42802:23;42814:4;42820;42802:11;:23::i;:::-;42858:9;-1:-1:-1;;;;;42841:44:0;42850:6;-1:-1:-1;;;;;42841:44:0;;42869:15;42841:44;;;;12263:25:1;;12251:2;12236:18;;12218:76;42841:44:0;;;;;;;;42316:577;;;;;;;;;:::o;41711:597::-;41812:15;41829:23;41854:12;41868:23;41893:12;41907:18;41929:30;41940:7;41949:9;41929:10;:30::i;:::-;-1:-1:-1;;;;;41988:15:0;;;;;;:7;:15;;;;;;41811:148;;-1:-1:-1;41811:148:0;;-1:-1:-1;41811:148:0;;-1:-1:-1;41811:148:0;-1:-1:-1;41811:148:0;-1:-1:-1;41811:148:0;-1:-1:-1;41988:28:0;;41811:148;41988:19;:28::i;:::-;-1:-1:-1;;;;;41970:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;42048:18;;;;;:7;:18;;;;;:39;;42071:15;42048:22;:39::i;:::-;-1:-1:-1;;;;;42027:18:0;;;;;;:7;:18;;;;;;;;:60;;;;42119:7;:18;;;;:39;;42142:15;42119:22;:39::i;41190:513::-;41289:15;41306:23;41331:12;41345:23;41370:12;41384:18;41406:30;41417:7;41426:9;41406:10;:30::i;:::-;-1:-1:-1;;;;;41465:15:0;;;;;;:7;:15;;;;;;41288:148;;-1:-1:-1;41288:148:0;;-1:-1:-1;41288:148:0;;-1:-1:-1;41288:148:0;-1:-1:-1;41288:148:0;-1:-1:-1;41288:148:0;-1:-1:-1;41465:28:0;;41288:148;41465:19;:28::i;42901:653::-;43004:15;43021:23;43046:12;43060:23;43085:12;43099:18;43121:30;43132:7;43141:9;43121:10;:30::i;:::-;-1:-1:-1;;;;;43180:15:0;;;;;;:7;:15;;;;;;43003:148;;-1:-1:-1;43003:148:0;;-1:-1:-1;43003:148:0;;-1:-1:-1;43003:148:0;-1:-1:-1;43003:148:0;-1:-1:-1;43003:148:0;-1:-1:-1;43180:28:0;;43200:7;43180:19;:28::i;:::-;-1:-1:-1;;;;;43162:15:0;;;;;;:7;:15;;;;;;;;:46;;;;43237:7;:15;;;;:28;;43257:7;7522:136;7580:7;7607:43;7611:1;7614;7607:43;;;;;;;;;;;;;;;;;:3;:43::i;46062:370::-;46138:7;46174:15;46162:9;;:27;:43;;;-1:-1:-1;46193:7:0;;:12;46162:43;:75;;;;46223:13;-1:-1:-1;;;;;46209:28:0;:2;-1:-1:-1;;;;;46209:28:0;;;46162:75;46158:186;;;46308:9;;46261:71;;46304:13;;-1:-1:-1;;;46308:9:0;;;;46304:2;:13;:::i;:::-;46273:7;;46261:20;;:7;;:11;:20::i;:71::-;46254:78;;;;46158:186;46404:9;;46361:63;;46400:13;;-1:-1:-1;;;46404:9:0;;;;46400:2;:13;:::i;46444:174::-;46590:9;;46514:7;;46541:69;;46586:13;;-1:-1:-1;;;46590:9:0;;;;46586:2;:13;:::i;:::-;46553;;46541:26;;:7;;:11;:26::i;45695:355::-;45758:19;45781:10;:8;:10::i;:::-;45758:33;-1:-1:-1;45802:18:0;45823:27;:10;45758:33;45823:14;:27::i;:::-;45902:4;45886:22;;;;:7;:22;;;;;;45802:48;;-1:-1:-1;45886:38:0;;45802:48;45886:26;:38::i;:::-;45877:4;45861:22;;;;:7;:22;;;;;;;;:63;;;;45938:11;:26;;;;;;45935:107;;;46020:4;46004:22;;;;:7;:22;;;;;;:38;;46031:10;46004:26;:38::i;:::-;45995:4;45979:22;;;;:7;:22;;;;;:63;45935:107;45695:355;;;:::o;43562:147::-;43640:7;;:17;;43652:4;43640:11;:17::i;:::-;43630:7;:27;43681:10;;:20;;43696:4;43681:14;:20::i;:::-;43668:10;:33;-1:-1:-1;;43562:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:462::-;1664:6;1672;1680;1688;1741:3;1729:9;1720:7;1716:23;1712:33;1709:2;;;1763:6;1755;1748:22;1709:2;1807:9;1794:23;1826:31;1851:5;1826:31;:::i;:::-;1876:5;-1:-1:-1;1900:35:1;1931:2;1916:18;;1900:35;:::i;:::-;1699:344;;1890:45;;-1:-1:-1;;;;1982:2:1;1967:18;;1954:32;;2033:2;2018:18;2005:32;;1699:344::o;2048:325::-;2116:6;2124;2177:2;2165:9;2156:7;2152:23;2148:32;2145:2;;;2198:6;2190;2183:22;2145:2;2242:9;2229:23;2261:31;2286:5;2261:31;:::i;:::-;2311:5;2363:2;2348:18;;;;2335:32;;-1:-1:-1;;;2135:238:1:o;2378:190::-;2434:6;2487:2;2475:9;2466:7;2462:23;2458:32;2455:2;;;2508:6;2500;2493:22;2455:2;2536:26;2552:9;2536:26;:::i;2573:190::-;2632:6;2685:2;2673:9;2664:7;2660:23;2656:32;2653:2;;;2706:6;2698;2691:22;2653:2;-1:-1:-1;2734:23:1;;2643:120;-1:-1:-1;2643:120:1:o;2768:393::-;2842:6;2850;2858;2911:2;2899:9;2890:7;2886:23;2882:32;2879:2;;;2932:6;2924;2917:22;2879:2;2973:9;2960:23;2950:33;;3002:35;3033:2;3022:9;3018:18;3002:35;:::i;:::-;2992:45;;3087:2;3076:9;3072:18;3059:32;3100:31;3125:5;3100:31;:::i;:::-;3150:5;3140:15;;;2869:292;;;;;:::o;3801:603::-;3913:4;3942:2;3971;3960:9;3953:21;4003:6;3997:13;4046:6;4041:2;4030:9;4026:18;4019:34;4071:4;4084:140;4098:6;4095:1;4092:13;4084:140;;;4193:14;;;4189:23;;4183:30;4159:17;;;4178:2;4155:26;4148:66;4113:10;;4084:140;;;4242:6;4239:1;4236:13;4233:2;;;4312:4;4307:2;4298:6;4287:9;4283:22;4279:31;4272:45;4233:2;-1:-1:-1;4388:2:1;4367:15;-1:-1:-1;;4363:29:1;4348:45;;;;4395:2;4344:54;;3922:482;-1:-1:-1;;;3922:482:1:o;10130:356::-;10332:2;10314:21;;;10351:18;;;10344:30;10410:34;10405:2;10390:18;;10383:62;10477:2;10462:18;;10304:182::o;11307:400::-;11509:2;11491:21;;;11548:2;11528:18;;;11521:30;11587:34;11582:2;11567:18;;11560:62;-1:-1:-1;;;11653:2:1;11638:18;;11631:34;11697:3;11682:19;;11481:226::o;12299:983::-;12561:4;12609:3;12598:9;12594:19;12640:6;12629:9;12622:25;12666:2;12704:6;12699:2;12688:9;12684:18;12677:34;12747:3;12742:2;12731:9;12727:18;12720:31;12771:6;12806;12800:13;12837:6;12829;12822:22;12875:3;12864:9;12860:19;12853:26;;12914:2;12906:6;12902:15;12888:29;;12935:4;12948:195;12962:6;12959:1;12956:13;12948:195;;;13027:13;;-1:-1:-1;;;;;13023:39:1;13011:52;;13118:15;;;;13083:12;;;;13059:1;12977:9;12948:195;;;-1:-1:-1;;;;;;;13199:32:1;;;;13194:2;13179:18;;13172:60;-1:-1:-1;;;13263:3:1;13248:19;13241:35;13160:3;12570:712;-1:-1:-1;;;12570:712:1:o;13800:128::-;13840:3;13871:1;13867:6;13864:1;13861:13;13858:2;;;13877:18;;:::i;:::-;-1:-1:-1;13913:9:1;;13848:80::o;13933:217::-;13973:1;13999;13989:2;;-1:-1:-1;;;14024:31:1;;14078:4;14075:1;14068:15;14106:4;14031:1;14096:15;13989:2;-1:-1:-1;14135:9:1;;13979:171::o;14155:422::-;14244:1;14287:5;14244:1;14301:270;14322:7;14312:8;14309:21;14301:270;;;14381:4;14377:1;14373:6;14369:17;14363:4;14360:27;14357:2;;;14390:18;;:::i;:::-;14440:7;14430:8;14426:22;14423:2;;;14460:16;;;;14423:2;14539:22;;;;14499:15;;;;14301:270;;;14305:3;14219:358;;;;;:::o;14582:140::-;14640:5;14669:47;14710:4;14700:8;14696:19;14690:4;14776:5;14806:8;14796:2;;-1:-1:-1;14847:1:1;14861:5;;14796:2;14895:4;14885:2;;-1:-1:-1;14932:1:1;14946:5;;14885:2;14977:4;14995:1;14990:59;;;;15063:1;15058:130;;;;14970:218;;14990:59;15020:1;15011:10;;15034:5;;;15058:130;15095:3;15085:8;15082:17;15079:2;;;15102:18;;:::i;:::-;-1:-1:-1;;15158:1:1;15144:16;;15173:5;;14970:218;;15272:2;15262:8;15259:16;15253:3;15247:4;15244:13;15240:36;15234:2;15224:8;15221:16;15216:2;15210:4;15207:12;15203:35;15200:77;15197:2;;;-1:-1:-1;15309:19:1;;;15341:5;;15197:2;15388:34;15413:8;15407:4;15388:34;:::i;:::-;15458:6;15454:1;15450:6;15446:19;15437:7;15434:32;15431:2;;;15469:18;;:::i;:::-;15507:20;;14786:747;-1:-1:-1;;;14786:747:1:o;15538:168::-;15578:7;15644:1;15640;15636:6;15632:14;15629:1;15626:21;15621:1;15614:9;15607:17;15603:45;15600:2;;;15651:18;;:::i;:::-;-1:-1:-1;15691:9:1;;15590:116::o;15711:125::-;15751:4;15779:1;15776;15773:8;15770:2;;;15784:18;;:::i;:::-;-1:-1:-1;15821:9:1;;15760:76::o;15841:380::-;15920:1;15916:12;;;;15963;;;15984:2;;16038:4;16030:6;16026:17;16016:27;;15984:2;16091;16083:6;16080:14;16060:18;16057:38;16054:2;;;16137:10;16132:3;16128:20;16125:1;16118:31;16172:4;16169:1;16162:15;16200:4;16197:1;16190:15;16054:2;;15896:325;;;:::o;16226:135::-;16265:3;-1:-1:-1;;16286:17:1;;16283:2;;;16306:18;;:::i;:::-;-1:-1:-1;16353:1:1;16342:13;;16273:88::o;16366:127::-;16427:10;16422:3;16418:20;16415:1;16408:31;16458:4;16455:1;16448:15;16482:4;16479:1;16472:15;16498:131;-1:-1:-1;;;;;16573:31:1;;16563:42;;16553:2;;16619:1;16616;16609:12;16553:2;16543:86;:::o

Swarm Source

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