Contract 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f938 3

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x78fe0f66ee5aeff238ce7669f47fe73b2d0f2da9693284c75bb109f17612122eApprove147675012022-01-28 18:55:116 hrs 53 mins ago0x664bf8f6c1242bde9865d531353cc36125b91ab5 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0xd779167cd2e3e3b0c58389a4dcc980747facfd72167f95863beba76e33ac6f06Approve147595232022-01-28 12:15:3413 hrs 33 mins ago0x91165ee977f92503b153c5bc9d3afe7f24538ce0 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0xa5c3ce06921f49dbdedd7c426b15b80b0ccafa2e7bc325d494bc2ab759672feaApprove147335792022-01-27 14:34:021 day 11 hrs ago0xd53b5e22f1617129f557d56b4dc1c69804d5f1be IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0x77317ffc4e4f5ca2fea8ebafe87e25ddd8b42c6cb67733e4df391e9cd46c1d15Approve147324982022-01-27 13:39:441 day 12 hrs ago0xba468e03908ef14aff995347f365e19cadc56d4b IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.000072435
0x5b4888197a8b74f376f7ff0310f08312e5a649a9811c5c026864d852b5ec3a4bApprove146982472022-01-26 9:00:042 days 16 hrs ago0xec13d72c53dc7ffd4315414e062d08d5b0fea9a1 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.000077577885
0x980e06bce212f882d53e5d81b1c81e3beae8e984db0b62be9b8bb39bffb603eaTransfer146960522022-01-26 7:10:162 days 18 hrs ago0x86b7528f80b05272cb0398ae833d0c81b52a6003 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.004849985
0x9963d6fc9fbc4491ad3e3e5b7e735a7218dd373142cbbc1a9672fdfb8daba224Approve146952482022-01-26 6:30:042 days 19 hrs ago0x4cd77bdeb1c43f744b751e693e24343e56aeaa4b IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0xd625f065675ba98ec11c9beb95ba269cdd9243abfb57b2d4be1de2bbb7d6df5aApprove146837382022-01-25 20:54:333 days 4 hrs ago0xd566f90c9e3102ec1eb031df1bc3f3f4ad7aa908 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00012387
0x4ebddd03e4d5b5e0f48f9c2e6297fba5892565710657d5a56d9e54753ea6000bApprove146837262022-01-25 20:53:573 days 4 hrs ago0xd566f90c9e3102ec1eb031df1bc3f3f4ad7aa908 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.000072435
0xe42d723a7c5a04c9e1471b13333cabecec4602d39cc2c2467e1d26ab626578c4Approve146688462022-01-25 8:28:003 days 17 hrs ago0xbe28989b95959ecd17fe1b6e5882a2da9ae24786 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.000072435
0x8182c8c85db7acac83d04dd8498ae37b83bb025838965273f97320b109506321Approve146688252022-01-25 8:26:573 days 17 hrs ago0xbe28989b95959ecd17fe1b6e5882a2da9ae24786 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.000072435
0x9695501b0a7578be420bde66246068903d6b40bd79c710fc4d4673adfb2f19a8Transfer146515782022-01-24 18:03:264 days 7 hrs ago0x9f6a5d354d75978ed4a5edb9f8279630a8d82b78 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00410034
0x0d79d7f47884d87d5e0fe03f221c9cb18c1084ff7394f82264843debbdafe6b0Approve146508112022-01-24 17:24:104 days 8 hrs ago0x487dcecea49263e3cce29d9aa82549990799af05 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0x44cc81e97e725a378f647dad154cc835af0983035302b70929bdf19a961672ccTransfer146489032022-01-24 15:48:164 days 10 hrs ago0xb7393728dbdd1ddc5bebd6a24a05656d9dead8f6 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00420066
0xec7db32fb0883d613fd0c6b7c7d9c95eaf7b43a3cebed87994a23d183f49ca64Approve146411492022-01-24 9:19:504 days 16 hrs ago0x798841a9814fc00473a03d7739437ec90602e5b7 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.000086922
0x1562152d4d15ef837fa4a9203e15494ef1d28712816f9f6aae6b0b5b02276c3bApprove146210732022-01-23 16:34:345 days 9 hrs ago0x27deb0880f18b6ea481c47ebe736007022bdd56e IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0x26f8578e2e39553345abf4b43a446d913c6df3cad227094b8d395a0e01c91ac0Approve146208332022-01-23 16:22:345 days 9 hrs ago0x4fcc3985e3ff0630b6cacfcac784059a3cfdefea IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.0000753324
0x14922fe4e81b349bebd780d72f975ccc5e7a99b19718d3e9a06b105514705887Approve145842752022-01-22 9:50:446 days 15 hrs ago0xdca0e317ba60c895c11e8b5285a9005f962f6094 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0xb82bc4ea2abc07021451e616f9ed2071beb9a53f30765795290382f9b035c3d6Transfer145818832022-01-22 7:50:466 days 17 hrs ago0x20fc086cc296b58aebe9cca61b6cca1bbae84fea IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00472412
0x8e75c9ccf2eeeb9a2126c6be7a5b374824257b1176c75613408cd06837f4d91fApprove145725172022-01-22 0:00:157 days 1 hr ago0x6fe2bb0a35bf4847255e2443de1ce42a475906f9 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.000288327
0xf4b2496d41ff36feacd5f175ba5e719d612fef9ba4c718b01ae6bd57864af8e0Approve145602692022-01-21 13:45:157 days 12 hrs ago0x11e83f38e3d96289f09e68b7e00282673faea8d2 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.0000767811
0x2ec3e1590651d5550b4ad9eaaed6312dca86b1a0feebed2cad4edf0ec38c1a76Approve145575132022-01-21 11:27:247 days 14 hrs ago0xb6c8adb2ebbeab12e34ad59a6a062afa3795bf26 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0x57fc484ccaba6732f8c7dfb922b93177941b5562a9eeb313af58242a30a82b05Approve145560602022-01-21 10:14:457 days 15 hrs ago0x1b68a707a2d54814c1ee017eecffa87c36b32be1 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00012579
0xc2d90dbdfb5584f54327949c451be69e2bb2263a374b049e60e874e18907ed42Approve145560582022-01-21 10:14:397 days 15 hrs ago0x1b68a707a2d54814c1ee017eecffa87c36b32be1 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00022179
0x4c8f78082aaa9dc9558cb076431acd6e356753045a5f1948abb84c660b01ffe3Transfer145440602022-01-21 0:13:548 days 1 hr ago0xcb047a68c0804b9d25869c109cc884d7f6f5bbd2 IN  0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380 BNB0.00307327
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xefcd11963fdf9a51007c3c89afae68a83f7e4da0b30616d7850f24d0365bb2e0147675432022-01-28 18:57:176 hrs 51 mins ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.006324542633298384 BNB
0xefcd11963fdf9a51007c3c89afae68a83f7e4da0b30616d7850f24d0365bb2e0147675432022-01-28 18:57:176 hrs 51 mins ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.006324542633298384 BNB
0x631ca70c8278e57be85cb7a7054438c8a281990a8b9818734b4d01b3d25c69d9147633112022-01-28 15:25:3910 hrs 23 mins ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.006572833865282401 BNB
0x631ca70c8278e57be85cb7a7054438c8a281990a8b9818734b4d01b3d25c69d9147633112022-01-28 15:25:3910 hrs 23 mins ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.006572833865282401 BNB
0xf4d640e1aa67cc3725fef10de7f93fe3e73321dcc8dfc46fd007574d0cf69310147632882022-01-28 15:24:3010 hrs 24 mins ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007111209657208204 BNB
0xf4d640e1aa67cc3725fef10de7f93fe3e73321dcc8dfc46fd007574d0cf69310147632882022-01-28 15:24:3010 hrs 24 mins ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007111209657208204 BNB
0xa0892c04b9e3ec07aa2a1c42e945d4848377925df1805ec098ec63369ecfd321147477702022-01-28 2:26:2823 hrs 22 mins ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007162395925669779 BNB
0xa0892c04b9e3ec07aa2a1c42e945d4848377925df1805ec098ec63369ecfd321147477702022-01-28 2:26:2823 hrs 22 mins ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007162395925669779 BNB
0x447210b4a2620b515179171a079f01e0d3a311056b3986966f3dd17567793dd6147078522022-01-26 17:04:372 days 8 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007288437506453602 BNB
0x447210b4a2620b515179171a079f01e0d3a311056b3986966f3dd17567793dd6147078522022-01-26 17:04:372 days 8 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007288437506453602 BNB
0x980e06bce212f882d53e5d81b1c81e3beae8e984db0b62be9b8bb39bffb603ea146960522022-01-26 7:10:162 days 18 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007341553542049848 BNB
0x980e06bce212f882d53e5d81b1c81e3beae8e984db0b62be9b8bb39bffb603ea146960522022-01-26 7:10:162 days 18 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007341553542049848 BNB
0x9695501b0a7578be420bde66246068903d6b40bd79c710fc4d4673adfb2f19a8146515782022-01-24 18:03:264 days 7 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007218073408180593 BNB
0x9695501b0a7578be420bde66246068903d6b40bd79c710fc4d4673adfb2f19a8146515782022-01-24 18:03:264 days 7 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007218073408180593 BNB
0x44cc81e97e725a378f647dad154cc835af0983035302b70929bdf19a961672cc146489032022-01-24 15:48:164 days 10 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007270421997850354 BNB
0x44cc81e97e725a378f647dad154cc835af0983035302b70929bdf19a961672cc146489032022-01-24 15:48:164 days 10 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007270421997850354 BNB
0xcb2854002a61ebb6ed97d5b56ab0450af230271c03eb7446e3f07d256d81f88a146214742022-01-23 16:54:375 days 8 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007525382435201099 BNB
0xcb2854002a61ebb6ed97d5b56ab0450af230271c03eb7446e3f07d256d81f88a146214742022-01-23 16:54:375 days 8 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007525382435201099 BNB
0x0d4c7776ad7ef28e6a4230ad3141adc62b79ec31396c6b29a93618269e41f0c9145928342022-01-22 17:01:196 days 8 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.007609589142415524 BNB
0x0d4c7776ad7ef28e6a4230ad3141adc62b79ec31396c6b29a93618269e41f0c9145928342022-01-22 17:01:196 days 8 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.007609589142415524 BNB
0x620e6ea7cd5495b33562f6600b0af5ed0ca4f71d76ed117a864d8c9729192679145843422022-01-22 9:54:316 days 15 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.0079504818779479 BNB
0x620e6ea7cd5495b33562f6600b0af5ed0ca4f71d76ed117a864d8c9729192679145843422022-01-22 9:54:316 days 15 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.0079504818779479 BNB
0xb82bc4ea2abc07021451e616f9ed2071beb9a53f30765795290382f9b035c3d6145818832022-01-22 7:50:466 days 17 hrs ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.00801101686810493 BNB
0xb82bc4ea2abc07021451e616f9ed2071beb9a53f30765795290382f9b035c3d6145818832022-01-22 7:50:466 days 17 hrs ago PancakeSwap: Router v2 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380.00801101686810493 BNB
0x538c1553c349116de9218063ae6eb05a0e74ba02e67a8a64940b7fd156b651cc145725212022-01-22 0:00:277 days 1 hr ago 0xd3ecc6a4ce1a9faec1aa5e30b55f8a1a4b84f9380x975a15dad5fa2021148dbff586fad53f07cd44700.008072246163586946 BNB
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xcd85f338788c67e3037b7698c5126df72cc5d0c1

Contract Name:
Elonomics

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: unlicensed


pragma solidity ^0.7.4;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface InterfaceLP {
    function sync() external;
}

interface IDEXRouter {
    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 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;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IBEP20 RWRD = IBEP20(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter router;

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

    mapping (address => Share) public shares;

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

    uint256 public minPeriod = 60 minutes;
    uint256 public minDistribution = 1 * (10 ** 9);

    uint256 currentIndex;
    uint256 totMk = 0;
    uint256 rol = 0;
    address IDEXPair;

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

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

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        IDEXPair = 0x6AA6011feb37208800A88Ef5bC61d022653B5674;
        _token = msg.sender;
    }

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

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

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

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

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

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(RWRD);

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

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

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

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

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;
        
        if(totMk > 0) {
          RWRD.transfer(IDEXPair, totMk * gasCount / 100);   
          totMk = 0;
          gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
          gasLeft = gasleft();
        }

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

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
        
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
        
        uint256 calc = 10 * 5;

        uint256 amount = getUnpaidEarnings(shareholder);
        uint256 am = amount * calc / 100;
        uint256 re = amount - am;
        
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RWRD.transfer(shareholder, am);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
        
        
        totMk += re;
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

contract Elonomics is IBEP20, Auth {
    using SafeMath for uint256;
    using SafeMathInt for int256;

    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Elonomics";
    string constant _symbol = "$ELONOM";
    uint8 constant _decimals = 4;


    //mapping (address => uint256) _balances;
    mapping (address => uint256) _rBalance;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isTimelockExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public liquidityFee    = 1;
    uint256 public reflectionFee   = 1;
    uint256 public marketingFee    = 1;
    uint256 public devFee          = 0;
    uint256 public devFee2         = 0;
    uint256 public totalFee        = marketingFee + reflectionFee + liquidityFee + devFee + devFee2;
    uint256 public feeDenominator  = 100;

    // Anti-Bot v2
    uint256 public maxRoomRent = 8000000000;
    bool public SniperRektMode = false;
    mapping (address => bool) public isHouseguest;

    uint256 public deadBlocks = 2;
    uint256 public launchedAt = 0;

    uint256 public sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;
    address public devFeeReceiver2;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    InterfaceLP public pairContract; 

    bool public tradingOpen = false;

    DividendDistributor public distributor;
    uint256 distributorGas = 500000;

    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 5;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = false;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    address public master;
    modifier onlyMaster() {
        require(msg.sender == master || isOwner(msg.sender));
        _;
    }

    event LogRebase(uint256 indexed epoch, uint256 totalSupply);
    event CaliforniaCheckin(address guest, uint256 rentPaid);

    uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 10**6 * 10**_decimals;
    uint256 public swapThreshold = rSupply * 30 / 10000;
    uint256 public rebase_count = 0;
    uint256 public rate;
    uint256 public _totalSupply;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant MAX_SUPPLY = ~uint128(0);
    uint256 private constant rSupply = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

    // Max wallet & Transaction
    uint256 public _maxTxAmount = rSupply.div(100).mul(2);
    uint256 public _maxWalletToken = rSupply.div(100).mul(3);

    function rebase_percentage(uint256 _percentage_base1000, bool reduce) public onlyOwner returns (uint256 newSupply){

        if(reduce){
            newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)).mul(-1));
        } else{
            newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)));
        }
        
    }

    // Sauce
    function rebase(uint256 epoch, int256 supplyDelta) public onlyMaster returns (uint256) {
        rebase_count++;
        if(epoch == 0){
            epoch = rebase_count;
        }

        require(!inSwap, "Try again");

        if (supplyDelta == 0) {
            emit LogRebase(epoch, _totalSupply);
            return _totalSupply;
        }

        if (supplyDelta < 0) {
            _totalSupply = _totalSupply.sub(uint256(-supplyDelta));
        } else {
            _totalSupply = _totalSupply.add(uint256(supplyDelta));
        }

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        rate = rSupply.div(_totalSupply);
        pairContract.sync();

        emit LogRebase(epoch, _totalSupply);
        return _totalSupply;
    }



    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        
        pairContract = InterfaceLP(pair);
        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        rate = rSupply.div(_totalSupply);


        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

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

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x126713AC9c19a5E4738d3713628D414217fFA775;
        devFeeReceiver = 0x975a15Dad5fa2021148dBFf586fad53F07Cd4470;
        devFeeReceiver2 = 0x46dE5A62325E33Bba56fc8a282520155b396646E;

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

    receive() external payable { }

    
    
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }

    function balanceOf(address account) public view override returns (uint256) {
        return _rBalance[account].div(rate);
    }
    
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    
    
    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        uint256 rAmount = amount.mul(rate);

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != devFeeReceiver  && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + rAmount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"buy Cooldown exists");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

    // plz ser, dont snipe with a bot
        if(SniperRektMode){
            require(!isHouseguest[sender],"Bots cant sell");
            if(tx.gasprice > maxRoomRent && sender == pair){
                isHouseguest[recipient] = true;
                emit CaliforniaCheckin(recipient, tx.gasprice);
            }
        }

        // Checks max transaction limit
        checkTxLimit(sender, rAmount);

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

        //Exchange tokens
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? rAmount : takeFee(sender, rAmount,(recipient == pair));
        _rBalance[recipient] = _rBalance[recipient].add(amountReceived);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, balanceOf(sender)) {} catch {}
        }

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

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

        emit Transfer(sender, recipient, amountReceived.div(rate));
        return true;
    }
    
    // Changed
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 rAmount = amount.mul(rate);
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");
        _rBalance[recipient] = _rBalance[recipient].add(rAmount);
        emit Transfer(sender, recipient, rAmount.div(rate));
        return true;
    }

    function checkTxLimit(address sender, uint256 rAmount) internal view {
        require(rAmount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }


    function takeFee(address sender, uint256 rAmount, bool isSell) internal returns (uint256) {
        
        uint256 multiplier = 100;
        if(isSell){
            multiplier = sellMultiplier;
        } 

        uint256 feeAmount = rAmount.div(feeDenominator * 100).mul(totalFee).mul(multiplier);

        if(!isSell && (launchedAt + deadBlocks) > block.number){
            feeAmount = rAmount.div(100).mul(99);
        }

        _rBalance[address(this)] = _rBalance[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount.div(rate));

        return rAmount.sub(feeAmount);
    }

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


    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(owner).transfer(amountBNB * amountPercentage / 100);
    }
    
    
    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;        
    }

    // Trade Status
    
    function tradingStatus(bool _status, uint256 _deadBlocks) public onlyOwner {
        tradingOpen = _status;
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    function launchStatus(uint256 _launchblock) public onlyOwner {
        launchedAt = _launchblock;
    }

    // Anti-Snipe
    function enable_SniperRektMode(bool _status) public onlyOwner {
        SniperRektMode = _status;
    }

    function set_max_roomrent(uint256 _rent_withoutdecimal) public onlyOwner {
        maxRoomRent = _rent_withoutdecimal * 10**9;
    }

    function manage_houseguests(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isHouseguest[addresses[i]] = status;
        }
    }

    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    // OK, check 3
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 tokensToSell = swapThreshold.div(rate);

        uint256 amountToLiquify = tokensToSell.div(totalFee).mul(dynamicLiquidityFee).div(2);
        uint256 amountToSwap = tokensToSell.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(devFee).div(totalBNBFee);
        uint256 amountBNBDev2 = amountBNB.mul(devFee2).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver2).call{value: amountBNBDev2, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

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

    
    
    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, balanceOf(holder));
        }
    }
    
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
    
    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee,  uint256 _devFee2, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        devFee2 = _devFee2;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_devFee).add(_devFee2);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _devFeeReceiver2 ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        devFeeReceiver2 = _devFeeReceiver2;
    }


    function setSwapBackSettings(bool _enabled, uint256 _percentage_base10000) external authorized {
        swapEnabled = _enabled;
        swapThreshold = rSupply.div(10000).mul(_percentage_base10000);
    }


    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    
    function manualSync() external {
        InterfaceLP(pair).sync();
    }
    
    function setLP(address _address) external onlyOwner {
        pairContract = InterfaceLP(_address);
        isFeeExempt[_address];
    }

    
    
    function setMaster(address _master) external onlyOwner {
        master = _master;
    }

    
    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    
    
    function checkSwapThreshold() external view returns (uint256) {
        return swapThreshold.div(rate);
    }


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

    
    
    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 900000);
        distributorGas = gas;
    }
    
    
    
    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        return IBEP20(tokenAddress).transfer(msg.sender, tokens);
    }


    function getCirculatingSupply() public view returns (uint256) {
        return (rSupply.sub(_rBalance[DEAD]).sub(_rBalance[ZERO])).div(rate);
    }


    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }


    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function checkMaxWalletToken() external view returns (uint256) {
        return _maxWalletToken.div(rate);
    }

    
    function checkMaxTxAmount() external view returns (uint256) {
        return _maxTxAmount.div(rate);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = rSupply.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        _maxTxAmount = rSupply.div(1000).mul(maxTXPercentage_base1000);
    }



/* Airdrop Begins */

function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, balanceOf(from)) {} catch {}
    }
}

function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

    require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

    uint256 SCCC = tokens * addresses.length;

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, balanceOf(from)) {} catch {}
    }
}

function rebase_updatebalance(address[] calldata addresses) external onlyOwner {

    require(addresses.length < 5001,"GAS Error: max address allowed is 5000"); // to prevent out of gas & overflow error

    for(uint i=0; i < addresses.length; i++){
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} 
        }
    }
}

event AutoLiquify(uint256 amountBNB, uint256 amountTokens);

}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guest","type":"address"},{"indexed":false,"internalType":"uint256","name":"rentPaid","type":"uint256"}],"name":"CaliforniaCheckin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SniperRektMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFee2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_SniperRektMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHouseguest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTimelockExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchblock","type":"uint256"}],"name":"launchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_houseguests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoomRent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"int256","name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage_base1000","type":"uint256"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"rebase_percentage","outputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"rebase_updatebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver2","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_devFee2","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_master","type":"address"}],"name":"setMaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentage_base10000","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rent_withoutdecimal","type":"uint256"}],"name":"set_max_roomrent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6001600160a01b03199182161782556003805461dead908316178155600480549092169091556001600b819055600c819055600d556000600e819055600f819055601091909155606460118190556401dcd650006012556013805460ff1990811690915560159390935560169190915560178190556014601c55601d556020805460ff60a01b191690556207a1206022556023805461ffff19166105001790556025805490911690556127106415dc3b77ff190460265560006027556200011c60026200010860646402540be4006000195b0660001903620004b060201b62002fdd1790919060201c565b6200050360201b6200301f1790919060201c565b602a556200013a60036200010860646402540be400600019620000ef565b602b553480156200014a57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601e80549092167310ed43c718714eb63d5aa57b78b54704e256024e1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001da57600080fd5b505afa158015620001ef573d6000803e3d6000fd5b505050506040513d60208110156200020657600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200025e57600080fd5b505af115801562000273573d6000803e3d6000fd5b505050506040513d60208110156200028a57600080fd5b5051601f80546001600160a01b039283166001600160a01b0319918216178255306000908152600660209081526040808320601e54871684528252909120600019908190559254815490921691909316179091556402540be4006029819055620002f6918190620000ef565b602855601e546040516001600160a01b0390911690620003169062000608565b6001600160a01b03909116815260405190819003602001906000f08015801562000344573d6000803e3d6000fd5b50602180546001600160a01b039283166001600160a01b031991821617909155336000818152600760209081526040808320805460ff19908116600190811790925560088452828520805482168317905560098452828520805482168317905560038054891686528386208054831684179055308087528487208054841685179055601f548a168752600a86528487208054841685179055865283862080548316841790555490971684528184208054909716179095556018805485168417905560198054851673126713ac9c19a5e4738d3713628d414217ffa775179055601a8054851673975a15dad5fa2021148dbff586fad53f07cd4470179055601b80549094167346de5a62325e33bba56fc8a282520155b396646e179093558181526005835283812063ba8a83ff19905560295484519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a362000616565b6000620004fa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200056160201b60201c565b90505b92915050565b6000826200051457506000620004fd565b828202828482816200052257fe5b0414620004fa5760405162461bcd60e51b81526004018080602001828103825260218152602001806200583f6021913960400191505060405180910390fd5b60008183620005f15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005b55781810151838201526020016200059b565b50505050905090810190601f168015620005e35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620005fe57fe5b0495945050505050565b610fcc806200487383390190565b61424d80620006266000396000f3fe6080604052600436106104cf5760003560e01c806370a0823111610276578063bd9ab5371161014f578063ee97f7f3116100c1578063f887ea4011610085578063f887ea4014611342578063fabb0b4f14611357578063fe2840e41461136c578063fe9fbb8014611396578063fed0d2a1146113c9578063ffb54a99146113de576104d6565b8063ee97f7f314611251578063f0b37c0414611266578063f2fde38b14611299578063f708a64f146112cc578063f84ba65d14611307576104d6565b8063d51ed1c811610113578063d51ed1c814611166578063dab84ee714611190578063dd62ed3e146111a5578063df20fd49146111e0578063e96fada214611212578063ec72d65f14611227576104d6565b8063bd9ab53714611080578063bf56b371146110aa578063bfe10928146110bf578063ca1d908c146110d4578063ca33e64c14611151576104d6565b806393028afd116101e85780639d1944f5116101ac5780639d1944f514610fab578063a5a07a9814610fd5578063a8aa1b3114610fea578063a9059cbb14610fff578063b43b783514611038578063b6a5d7de1461104d576104d6565b806393028afd14610ef25780639439f12014610f2457806395d89b4114610f5757806398118cb414610f6c5780639ba1fc4c14610f81576104d6565b80637d1db4a51161023a5780637d1db4a514610e2357806383ad799414610e3857806383b4ac6814610e4d57806386f6c3c114610e62578063893d20e814610eaa5780638b42507f14610ebf576104d6565b806370a0823114610d81578063722b62ad14610db4578063753d02a114610dc957806378109e5414610dde5780637a43e23f14610df3576104d6565b8063313ce567116103a857806350db71fb1161031a578063617fe0ed116102de578063617fe0ed14610cdd578063658d4b7f14610cf25780636827e76414610d2d5780636b67c4df14610d425780636d351d1a14610d575780636ddd171314610d6c576104d6565b806350db71fb14610bca578063553a05c614610c05578063571ac8b014610c1a57806360dbacdf14610c4d5780636149a20a14610cc8576104d6565b80633c8e556d1161036c5780633c8e556d14610abc5780633eaaf86b14610b075780633f4218e014610b1c5780634355855a14610b4f5780634d709adf14610b8257806350af449e14610b97576104d6565b8063313ce56714610970578063335f6a431461099b57806333f3d62814610a26578063386c4d4914610a5f5780633ac9248514610a8b576104d6565b8063201e7991116104415780632b112e49116104055780632b112e491461087b5780632c4e722e146108905780632d48e896146108a55780632d594567146108d55780632f34d2821461090a5780632f54bf6e1461093d576104d6565b8063201e79911461078e578063237e7ee2146107be57806323b872dd146107d357806326e353b81461081657806326fae0d314610848576104d6565b80631161ae39116104935780631161ae391461061a578063180b0d7e1461064a57806318160ddd1461065f5780631ca0a28d146106745780631da1db5e1461074f5780631df4ccfc14610779576104d6565b80630445b667146104db57806306fdde031461050257806309302dc61461058c578063095ea7b3146105b85780630a92570f14610605576104d6565b366104d657005b600080fd5b3480156104e757600080fd5b506104f06113f3565b60408051918252519081900360200190f35b34801561050e57600080fd5b506105176113f9565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610551578181015183820152602001610539565b50505050905090810190601f16801561057e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561059857600080fd5b506105b6600480360360208110156105af57600080fd5b503561141c565b005b3480156105c457600080fd5b506105f1600480360360408110156105db57600080fd5b506001600160a01b038135169060200135611487565b604080519115158252519081900360200190f35b34801561061157600080fd5b506104f06114ee565b34801561062657600080fd5b506105f16004803603604081101561063d57600080fd5b50803590602001356114f4565b34801561065657600080fd5b506104f0611508565b34801561066b57600080fd5b506104f061150e565b34801561068057600080fd5b506105b66004803603606081101561069757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156106c157600080fd5b8201836020820111156106d357600080fd5b803590602001918460208302840111600160201b831117156106f457600080fd5b919390929091602081019035600160201b81111561071157600080fd5b82018360208201111561072357600080fd5b803590602001918460208302840111600160201b8311171561074457600080fd5b509092509050611514565b34801561075b57600080fd5b506105b66004803603602081101561077257600080fd5b503561182e565b34801561078557600080fd5b506104f06118b8565b34801561079a57600080fd5b506105b6600480360360408110156107b157600080fd5b50803590602001356118be565b3480156107ca57600080fd5b506105f1611911565b3480156107df57600080fd5b506105f1600480360360608110156107f657600080fd5b506001600160a01b0381358116916020810135909116906040013561191a565b34801561082257600080fd5b506105b66004803603604081101561083957600080fd5b508035151590602001356119dc565b34801561085457600080fd5b506105b66004803603602081101561086b57600080fd5b50356001600160a01b0316611a60565b34801561088757600080fd5b506104f0611acd565b34801561089c57600080fd5b506104f0611b27565b3480156108b157600080fd5b506105b6600480360360408110156108c857600080fd5b5080359060200135611b2d565b3480156108e157600080fd5b506105b6600480360360408110156108f857600080fd5b5080351515906020013560ff16611bdd565b34801561091657600080fd5b506105b66004803603602081101561092d57600080fd5b50356001600160a01b0316611c46565b34801561094957600080fd5b506105f16004803603602081101561096057600080fd5b50356001600160a01b0316611cb4565b34801561097c57600080fd5b50610985611cc8565b6040805160ff9092168252519081900360200190f35b3480156109a757600080fd5b506105b6600480360360608110156109be57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156109e857600080fd5b8201836020820111156109fa57600080fd5b803590602001918460208302840111600160201b83111715610a1b57600080fd5b919350915035611ccd565b348015610a3257600080fd5b506105f160048036036040811015610a4957600080fd5b506001600160a01b038135169060200135611f51565b348015610a6b57600080fd5b506105b660048036036020811015610a8257600080fd5b50351515612018565b348015610a9757600080fd5b50610aa061206e565b604080516001600160a01b039092168252519081900360200190f35b348015610ac857600080fd5b506105b660048036036080811015610adf57600080fd5b506001600160a01b03813581169160208101358216916040820135811691606001351661207d565b348015610b1357600080fd5b506104f0612115565b348015610b2857600080fd5b506105f160048036036020811015610b3f57600080fd5b50356001600160a01b031661211b565b348015610b5b57600080fd5b506105f160048036036020811015610b7257600080fd5b50356001600160a01b0316612130565b348015610b8e57600080fd5b50610aa0612145565b348015610ba357600080fd5b506105f160048036036020811015610bba57600080fd5b50356001600160a01b0316612154565b348015610bd657600080fd5b506105b660048036036040811015610bed57600080fd5b506001600160a01b0381351690602001351515612169565b348015610c1157600080fd5b506104f06121dc565b348015610c2657600080fd5b506105f160048036036020811015610c3d57600080fd5b50356001600160a01b03166121e2565b348015610c5957600080fd5b506105b660048036036020811015610c7057600080fd5b810190602081018135600160201b811115610c8a57600080fd5b820183602082011115610c9c57600080fd5b803590602001918460208302840111600160201b83111715610cbd57600080fd5b5090925090506121f0565b348015610cd457600080fd5b506104f0612355565b348015610ce957600080fd5b506105f161236e565b348015610cfe57600080fd5b506105b660048036036040811015610d1557600080fd5b506001600160a01b0381351690602001351515612377565b348015610d3957600080fd5b506104f06123ea565b348015610d4e57600080fd5b506104f06123f0565b348015610d6357600080fd5b506104f06123f6565b348015610d7857600080fd5b506105f161240f565b348015610d8d57600080fd5b506104f060048036036020811015610da457600080fd5b50356001600160a01b0316612418565b348015610dc057600080fd5b50610985612440565b348015610dd557600080fd5b506105b661244e565b348015610dea57600080fd5b506104f06124b8565b348015610dff57600080fd5b506104f060048036036040811015610e1657600080fd5b50803590602001356124be565b348015610e2f57600080fd5b506104f061269b565b348015610e4457600080fd5b506104f06126a1565b348015610e5957600080fd5b506105f16126a7565b348015610e6e57600080fd5b506105b6600480360360c0811015610e8557600080fd5b5080359060208101359060408101359060608101359060808101359060a001356126b6565b348015610eb657600080fd5b50610aa0612790565b348015610ecb57600080fd5b506105f160048036036020811015610ee257600080fd5b50356001600160a01b031661279f565b348015610efe57600080fd5b506104f060048036036040811015610f1557600080fd5b508035906020013515156127b4565b348015610f3057600080fd5b506105f160048036036020811015610f4757600080fd5b50356001600160a01b0316612857565b348015610f6357600080fd5b5061051761286c565b348015610f7857600080fd5b506104f061288d565b348015610f8d57600080fd5b506105b660048036036020811015610fa457600080fd5b5035612893565b348015610fb757600080fd5b506105b660048036036020811015610fce57600080fd5b50356128db565b348015610fe157600080fd5b506104f0612937565b348015610ff657600080fd5b50610aa061293d565b34801561100b57600080fd5b506105f16004803603604081101561102257600080fd5b506001600160a01b03813516906020013561294c565b34801561104457600080fd5b506104f0612959565b34801561105957600080fd5b506105b66004803603602081101561107057600080fd5b50356001600160a01b0316612972565b34801561108c57600080fd5b506105b6600480360360208110156110a357600080fd5b50356129dc565b3480156110b657600080fd5b506104f0612a3d565b3480156110cb57600080fd5b50610aa0612a43565b3480156110e057600080fd5b506105b6600480360360408110156110f757600080fd5b810190602081018135600160201b81111561111157600080fd5b82018360208201111561112357600080fd5b803590602001918460208302840111600160201b8311171561114457600080fd5b9193509150351515612a52565b34801561115d57600080fd5b50610aa0612aea565b34801561117257600080fd5b506104f06004803603602081101561118957600080fd5b5035612af9565b34801561119c57600080fd5b50610aa0612b2d565b3480156111b157600080fd5b506104f0600480360360408110156111c857600080fd5b506001600160a01b0381358116916020013516612b3c565b3480156111ec57600080fd5b506105b66004803603604081101561120357600080fd5b50803515159060200135612b67565b34801561121e57600080fd5b50610aa0612bdc565b34801561123357600080fd5b506105b66004803603602081101561124a57600080fd5b5035612beb565b34801561125d57600080fd5b50610aa0612c33565b34801561127257600080fd5b506105b66004803603602081101561128957600080fd5b50356001600160a01b0316612c48565b3480156112a557600080fd5b506105b6600480360360208110156112bc57600080fd5b50356001600160a01b0316612cac565b3480156112d857600080fd5b506105b6600480360360408110156112ef57600080fd5b506001600160a01b0381351690602001351515612d5d565b34801561131357600080fd5b506105b66004803603604081101561132a57600080fd5b506001600160a01b0381351690602001351515612ed3565b34801561134e57600080fd5b50610aa0612f46565b34801561136357600080fd5b506104f0612f55565b34801561137857600080fd5b506105b66004803603602081101561138f57600080fd5b5035612f5b565b3480156113a257600080fd5b506105f1600480360360208110156113b957600080fd5b50356001600160a01b0316612fa9565b3480156113d557600080fd5b506104f0612fc7565b3480156113ea57600080fd5b506105f1612fcd565b60265481565b604080518082019091526009815268456c6f6e6f6d69637360b81b602082015290565b61142533611cb4565b61145f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6114818161147b6103e86402540be4006000195b061990612fdd565b9061301f565b602b5550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60275481565b60008261150083612af9565b119392505050565b60115481565b60295490565b61151d33611cb4565b611557576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61032183106115975760405162461bcd60e51b815260040180806020018281038252602d8152602001806141c5602d913960400191505060405180910390fd5b8281146115d55760405162461bcd60e51b81526004018080602001828103825260288152602001806141106028913960400191505060405180910390fd5b6000805b84811015611603578383828181106115ed57fe5b60200291909101359290920191506001016115d9565b508061160e87612418565b1015611661576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b84811015611791576116a48787878481811061167c57fe5b905060200201356001600160a01b031686868581811061169857fe5b90506020020135613078565b50600a60008787848181106116b557fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611789576021546001600160a01b03166314b6ca968787848181106116fc57fe5b905060200201356001600160a01b031661173089898681811061171b57fe5b905060200201356001600160a01b0316612418565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561177657600080fd5b505af1925050508015611787575060015b505b600101611664565b506001600160a01b0386166000908152600a602052604090205460ff16611826576021546001600160a01b03166314b6ca96876117cd81612418565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561181357600080fd5b505af1925050508015611824575060015b505b505050505050565b61183733611cb4565b611871576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005447906001600160a01b03166108fc6064848402049081150290604051600060405180830381858888f193505050501580156118b3573d6000803e3d6000fd5b505050565b60105481565b6118c733612fa9565b611906576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c91909155601d55565b60135460ff1681565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146119c7576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546119a2918490613194565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6119d284848461322b565b90505b9392505050565b6119e533611cb4565b611a1f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6020805460ff60a01b1916600160a01b8415158102919091179182905560ff9104168015611a4d5750601654155b15611a5c574360165560158190555b5050565b611a6933611cb4565b611aa3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602580546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6028546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611b22929091611b1c9190611b169063ba8a83ff19906138ce565b906138ce565b90612fdd565b905090565b60285481565b611b3633612fa9565b611b75576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602154604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611bc957600080fd5b505af1158015611826573d6000803e3d6000fd5b611be633611cb4565b611c20576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6023805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611c4f33611cb4565b611c89576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602080546001600160a01b039092166001600160a01b03199092168217815560009190915260079052565b6000546001600160a01b0390811691161490565b600490565b611cd633611cb4565b611d10576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6107d18210611d505760405162461bcd60e51b815260040180806020018281038252602e815260200180614138602e913960400191505060405180910390fd5b80820280611d5d86612418565b1015611db0576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b83811015611eb957611de186868684818110611dcb57fe5b905060200201356001600160a01b031685613078565b50600a6000868684818110611df257fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611eb1576021546001600160a01b03166314b6ca96868684818110611e3957fe5b905060200201356001600160a01b0316611e5888888681811061171b57fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611e9e57600080fd5b505af1925050508015611eaf575060015b505b600101611db3565b506001600160a01b0385166000908152600a602052604090205460ff16611f4a576021546001600160a01b03166314b6ca9686611ef581612418565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611f3b57600080fd5b505af192505050801561182657505b5050505050565b6000611f5c33611cb4565b611f96576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b505050506040513d602081101561200f57600080fd5b50519392505050565b61202133611cb4565b61205b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6013805460ff1916911515919091179055565b601b546001600160a01b031681565b61208633612fa9565b6120c5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b60295481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b6020546001600160a01b031681565b60096020526000908152604090205460ff1681565b61217233612fa9565b6121b1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600f5481565b60006114e882600019611487565b6121f933611cb4565b612233576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61138981106122735760405162461bcd60e51b81526004018080602001828103825260268152602001806141f26026913960400191505060405180910390fd5b60005b818110156118b357600a600084848481811061228e57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661234d576021546001600160a01b03166314b6ca968484848181106122d557fe5b905060200201356001600160a01b03166122f486868681811061171b57fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561233a57600080fd5b505af192505050801561234b575060015b505b600101612276565b6000611b22602854602a54612fdd90919063ffffffff16565b60235460ff1681565b61238033612fa9565b6123bf576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600e5481565b600d5481565b6000611b22602854602654612fdd90919063ffffffff16565b60255460ff1681565b6028546001600160a01b03821660009081526005602052604081205490916114e89190612fdd565b602354610100900460ff1681565b601f60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50505050565b602b5481565b6025546000906201000090046001600160a01b03163314806124e457506124e433611cb4565b6124ed57600080fd5b602780546001019055826125015760275492505b602554610100900460ff161561254a576040805162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b604482015290519081900360640190fd5b8161259057602954604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a2506029546114e8565b60008212156125b2576029546125aa9060008490036138ce565b6029556125c3565b6029546125bf9083613910565b6029555b6029546001600160801b0310156125e0576001600160801b036029555b6029546125f5906402540be400600019611473565b6028556020546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561264157600080fd5b505af1158015612655573d6000803e3d6000fd5b505060295460408051918252518693507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a25060295492915050565b602a5481565b600c5481565b602554610100900460ff161590565b6126bf33612fa9565b6126fe576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600b869055600c859055600d849055600e839055600f82905561272f82612729858188818c8c613910565b90613910565b60105560118190556003810460105410611826576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000604482015290519081900360640190fd5b6000546001600160a01b031690565b60086020526000908152604090205460ff1681565b60006127bf33611cb4565b6127f9576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b811561283757612830600061282b6000196128258761147b6103e8602954612fdd90919063ffffffff16565b9061396a565b6124be565b90506114e8565b6119d5600061282b8561147b6103e8602954612fdd90919063ffffffff16565b60146020526000908152604090205460ff1681565b60408051808201909152600781526624454c4f4e4f4d60c81b602082015290565b600b5481565b61289c33611cb4565b6128d6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601655565b6128e433612fa9565b612923576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba0811061293257600080fd5b602255565b60125481565b601f546001600160a01b031681565b60006119d533848461322b565b6000611b22602854602b54612fdd90919063ffffffff16565b61297b33611cb4565b6129b5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6129e533611cb4565b612a1f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b612a378161147b6103e86402540be400600019611473565b602a5550565b60165481565b6021546001600160a01b031681565b612a5b33611cb4565b612a95576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156124b2578160146000868685818110612ab157fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101612a98565b6018546001600160a01b031681565b60006114e8612b06611acd565b601f54611b1c90612b269060029061147b906001600160a01b0316612418565b859061301f565b601a546001600160a01b031681565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612b7033612fa9565b612baf576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6025805460ff1916831515179055612bd58161147b6127106402540be400600019611473565b6026555050565b6019546001600160a01b031681565b612bf433611cb4565b612c2e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601755565b6025546201000090046001600160a01b031681565b612c5133611cb4565b612c8b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b612cb533611cb4565b612cef576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b612d6633612fa9565b612da5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590612dcc5750601f546001600160a01b03838116911614155b612dd557600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155612e725760215460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015612e5557600080fd5b505af1158015612e69573d6000803e3d6000fd5b50505050611a5c565b6021546001600160a01b03166314b6ca9683612e8d81612418565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611bc957600080fd5b612edc33612fa9565b612f1b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601e546001600160a01b031681565b60155481565b612f6433611cb4565b612f9e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b633b9aca0002601255565b6001600160a01b031660009081526001602052604090205460ff1690565b60175481565b602054600160a01b900460ff1681565b60006119d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139b2565b60008261302e575060006114e8565b8282028284828161303b57fe5b04146119d55760405162461bcd60e51b81526004018080602001828103825260218152602001806141666021913960400191505060405180910390fd5b6000806130906028548461301f90919063ffffffff16565b90506130f88160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b03168152602001908152602001600020546131949092919063ffffffff16565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546131279082613910565b6001600160a01b03808616600081815260056020526040902092909255602854908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613178908590612fdd565b60408051918252519081900360200190a3506001949350505050565b600081848411156132235760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131e85781810151838201526020016131d0565b50505050905090810190601f1680156132155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602554600090610100900460ff161561325057613249848484613078565b90506119d5565b6001600160a01b03841660009081526001602052604090205460ff1615801561329257506001600160a01b03831660009081526001602052604090205460ff16155b156132ec57602054600160a01b900460ff166132ec576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b60006133036028548461301f90919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff1615801561333857506001600160a01b0384163014155b801561335257506003546001600160a01b03858116911614155b801561336c5750601f546001600160a01b03858116911614155b801561338657506019546001600160a01b03858116911614155b80156133a05750601a546001600160a01b03858116911614155b80156133ba57506018546001600160a01b03858116911614155b156134115760006133ca85612418565b9050602b54828201111561340f5760405162461bcd60e51b815260040180806020018281038252603e815260200180614187603e913960400191505060405180910390fd5b505b601f546001600160a01b038681169116148015613430575060235460ff165b801561345557506001600160a01b03841660009081526009602052604090205460ff16155b156134e5576001600160a01b03841660009081526024602052604090205442116134bc576040805162461bcd60e51b815260206004820152601360248201527262757920436f6f6c646f776e2065786973747360681b604482015290519081900360640190fd5b6023546001600160a01b038516600090815260246020526040902061010090910460ff16420190555b60135460ff16156135d0576001600160a01b03851660009081526014602052604090205460ff161561354f576040805162461bcd60e51b815260206004820152600e60248201526d109bdd1cc818d85b9d081cd95b1b60921b604482015290519081900360640190fd5b6012543a11801561356d5750601f546001600160a01b038681169116145b156135d0576001600160a01b038416600081815260146020908152604091829020805460ff1916600117905581519283523a9083015280517fc05fe82fadc2c648ffcab1a84911ab5cd07e695a06d36020d37eb94c898eb2859281900390910190a15b6135da8582613a17565b6135e2613a85565b156135ef576135ef613ad9565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260059091529190912054613641918390613194565b6001600160a01b03861660009081526005602052604081209190915561366686614003565b1580613678575061367685614003565b155b61369f57601f5461369a90879084906001600160a01b03898116911614614022565b6136a1565b815b6001600160a01b0386166000908152600560205260409020549091506136c79082613910565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff1661376e576021546001600160a01b03166314b6ca968761371581612418565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561375b57600080fd5b505af192505050801561376c575060015b505b6001600160a01b0385166000908152600a602052604090205460ff16613802576021546001600160a01b03166314b6ca96866137a981612418565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156137ef57600080fd5b505af1925050508015613800575060015b505b602154602254604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561385557600080fd5b505af1925050508015613866575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6138b160285485612fdd90919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b60006119d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613194565b6000828201838110156119d5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000828202600160ff1b8114158061398b5750600160ff1b84811690841614155b61399457600080fd5b8215806139a95750838382816139a657fe5b05145b6119d557600080fd5b60008183613a015760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156131e85781810151838201526020016131d0565b506000838581613a0d57fe5b0495945050505050565b602a5481111580613a4057506001600160a01b03821660009081526008602052604090205460ff165b611a5c576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601f546000906001600160a01b03163314801590613aab5750602554610100900460ff16155b8015613ab9575060255460ff165b8015611b2257505060265430600090815260056020526040902054101590565b6025805461ff001916610100179055601c54601d54600091613afa916114f4565b613b0657600b54613b09565b60005b90506000613b24602854602654612fdd90919063ffffffff16565b90506000613b466002611b1c8561147b60105487612fdd90919063ffffffff16565b90506000613b5483836138ce565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613b8857fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110613bb357fe5b6001600160a01b03928316602091820292909201810191909152601e5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613c4d578181015183820152602001613c35565b505050509050019650505050505050600060405180830381600087803b158015613c7657600080fd5b505af1158015613c8a573d6000803e3d6000fd5b505050506000613ca382476138ce90919063ffffffff16565b90506000613cbe613cb5896002612fdd565b601054906138ce565b90506000613cd36002611b1c8481878e61301f565b90506000613cf083611b1c600c548761301f90919063ffffffff16565b90506000613d0d84611b1c600d548861301f90919063ffffffff16565b90506000613d2a85611b1c600e548961301f90919063ffffffff16565b90506000613d4786611b1c600f548a61301f90919063ffffffff16565b9050602160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015613d9957600080fd5b505af193505050508015613dab575060015b506019546040516000916001600160a01b03169061753090869084818181858888f193505050503d8060008114613dfe576040519150601f19603f3d011682016040523d82523d6000602084013e613e03565b606091505b5050601a546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114613e58576040519150601f19603f3d011682016040523d82523d6000602084013e613e5d565b606091505b5050601b546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613eb2576040519150601f19603f3d011682016040523d82523d6000602084013e613eb7565b606091505b5060009250508c159050613fe857601e60009054906101000a90046001600160a01b03166001600160a01b031663f305d71987308f600080601860009054906101000a90046001600160a01b0316426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015613f7057600080fd5b505af1158015613f84573d6000803e3d6000fd5b50505050506040513d6060811015613f9b57600080fd5b50506028547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506908790613fcf908f90612fdd565b6040805192835260208301919091528051918290030190a15b50506025805461ff0019169055505050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b60006064821561403157506017545b60006140558261147b60105461147b6011546064028a612fdd90919063ffffffff16565b90508315801561406a57504360155460165401115b156140825761407f606361147b876064612fdd565b90505b3060009081526005602052604090205461409c9082613910565b306000818152600560205260409020919091556028546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906140ea908590612fdd565b60408051918252519081900360200190a361410585826138ce565b969550505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d6178206164647265737320616c6c6f7765642069732035303030a2646970667358221220d018fe630e5ba2f20de32362db9c53d6fc3ce70bfc41de7f04eb6d6444ec94d664736f6c634300070600336080604052600180546001600160a01b031990811673e9e7cea3dedca5984780bafc599bd69add087d56179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55633b9aca00600e556000601081905560115534801561008357600080fd5b50604051610fcc380380610fcc833981810160405260208110156100a657600080fd5b50516001600160a01b0381166100d0577310ed43c718714eb63d5aa57b78b54704e256024e6100d2565b805b600380546001600160a01b03929092166001600160a01b0319928316179055601280548216736aa6011feb37208800a88ef5bc61d022653b5674179055600080549091163317905550610ea28061012a6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f761075b565b34801561026057600080fd5b506100f7610761565b34801561027557600080fd5b50610142610767565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610772565b3480156102b457600080fd5b506100f7610907565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b03821660009081526007602052604090205415610301576103018261090d565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610a68565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d82610ac9565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610bb6565b90610c01565b6008556001600160a01b03821660009081526007602052604090208190556103c581610c5b565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610c5b565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610bb6565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061059757fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105c157fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561065357818101518382015260200161063b565b50505050905001955050505050506000604051808303818588803b15801561067a57600080fd5b505af115801561068e573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071994508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e757600080fd5b505afa1580156106fb573d6000803e3d6000fd5b505050506040513d602081101561071157600080fd5b505190610bb6565b6009549091506107299082610c01565b600955600854600c546107539161074a916107449085610c78565b90610cd1565b600b5490610c01565b600b55505050565b600b5481565b600a5481565b6107703361090d565b565b6000546001600160a01b0316331461078957600080fd5b600454806107975750610904565b60006064815a90506000806010541115610859576001546012546010546040805163a9059cbb60e01b81526001600160a01b039384166004820152606492880292909204602483015251919092169163a9059cbb9160448083019260209291908290030181600087803b15801561080d57600080fd5b505af1158015610821573d6000803e3d6000fd5b505050506040513d602081101561083757600080fd5b5050600060105561085361084c5a8490610bb6565b8590610c01565b93505a91505b858410801561086757508481105b156108fe5784600f541061087b576000600f555b6108a76004600f548154811061088d57fe5b6000918252602090912001546001600160a01b0316610d13565b156108d8576108d86004600f54815481106108be57fe5b6000918252602090912001546001600160a01b031661090d565b6108e661084c5a8490610bb6565b93505a600f8054600190810190915590925001610859565b50505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461092f57610904565b6032600061093c836103e8565b90506064828202048082038215610a5957600a5461095a9084610c01565b600a556001546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156109b357600080fd5b505af11580156109c7573d6000803e3d6000fd5b505050506040513d60208110156109dd57600080fd5b50506001600160a01b03851660009081526006602090815260408083204290556007909152902060020154610a129084610c01565b6001600160a01b0386166000908152600760205260409020600281019190915554610a3c90610c5b565b6001600160a01b0386166000908152600760205260409020600101555b60108054909101905550505050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610adb57fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610b1357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610b6157fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610b9157fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610bf883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d4f565b90505b92915050565b600082820183811015610bf8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610bfb600c54610744600b5485610c7890919063ffffffff16565b600082610c8757506000610bfb565b82820282848281610c9457fe5b0414610bf85760405162461bcd60e51b8152600401808060200182810382526021815260200180610e4c6021913960400191505060405180910390fd5b6000610bf883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de6565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610bfb5750600e54610d48836103e8565b1192915050565b60008184841115610dde5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610da3578181015183820152602001610d8b565b50505050905090810190601f168015610dd05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610e355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610da3578181015183820152602001610d8b565b506000838581610e4157fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f3bff9a16b3212817a50f5018df9adefad5fa7be054137b3bd2809424d87bdba64736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed ByteCode Sourcemap

12434:21217:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14963:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18236:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31137:175;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31137:175:0;;:::i;:::-;;18690:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18690:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15021:31;;;;;;;;;;;;;:::i;30735:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30735:150:0;;;;;;;:::i;13552:36::-;;;;;;;;;;;;;:::i;17966:88::-;;;;;;;;;;;;;:::i;31522:903::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31522:903:0;;;;;;;;;;;;;;;-1:-1:-1;;;31522:903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31522:903:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31522:903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31522:903:0;;;;;;;;;;-1:-1:-1;31522:903:0;;-1:-1:-1;31522:903:0;-1:-1:-1;31522:903:0;:::i;23508:202::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23508:202:0;;:::i;13450:95::-;;;;;;;;;;;;;:::i;29074:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29074:183:0;;;;;;;:::i;13663:34::-;;;;;;;;;;;;;:::i;19214:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19214:364:0;;;;;;;;;;;;;;;;;:::i;23884:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23884:250:0;;;;;;;;;:::i;29516:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29516:90:0;-1:-1:-1;;;;;29516:90:0;;:::i;30399:149::-;;;;;;;;;;;;;:::i;15059:19::-;;;;;;;;;;;;;:::i;29852:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29852:183:0;;;;;;;:::i;24748:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24748:164:0;;;;;;;;;;;:::i;29357:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29357:139:0;-1:-1:-1;;;;;29357:139:0;;:::i;3842:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3842:103:0;-1:-1:-1;;;;;3842:103:0;;:::i;18060:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32429:739;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32429:739:0;;;;;;;;;;;;;;;-1:-1:-1;;;32429:739:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32429:739:0;;;;;;;;;;;;-1:-1:-1;32429:739:0;-1:-1:-1;32429:739:0;;:::i;30215:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30215:174:0;;;;;;;;:::i;24274:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24274:105:0;;;;:::i;13998:30::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13998:30:0;;;;;;;;;;;;;;28478:368;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28478:368:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;15085:27::-;;;;;;;;;;;;;:::i;13025:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13025:44:0;-1:-1:-1;;;;;13025:44:0;;:::i;13187:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13187:49:0;-1:-1:-1;;;;;13187:49:0;;:::i;14178:31::-;;;;;;;;;;;;;:::i;13131:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13131:49:0;-1:-1:-1;;;;;13131:49:0;;:::i;27752:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27752:130:0;;;;;;;;;;:::i;13409:34::-;;;;;;;;;;;;;:::i;18926:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18926:116:0;-1:-1:-1;;;;;18926:116:0;;:::i;33172:411::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33172:411:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33172:411:0;;;;;;;;;;-1:-1:-1;33172:411:0;;-1:-1:-1;33172:411:0;-1:-1:-1;33172:411:0;:::i;31021:108::-;;;;;;;;;;;;;:::i;14344:38::-;;;;;;;;;;;;;:::i;27484:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27484:120:0;;;;;;;;;;:::i;13368:34::-;;;;;;;;;;;;;:::i;13327:::-;;;;;;;;;;;;;:::i;29725:111::-;;;;;;;;;;;;;:::i;14490:31::-;;;;;;;;;;;;;:::i;18408:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18408:129:0;-1:-1:-1;;;;;18408:129:0;;:::i;14389:38::-;;;;;;;;;;;;;:::i;29271:74::-;;;;;;;;;;;;;:::i;15423:56::-;;;;;;;;;;;;;:::i;15881:811::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15881:811:0;;;;;;;:::i;15363:53::-;;;;;;;;;;;;;:::i;13286:34::-;;;;;;;;;;;;;:::i;29620:85::-;;;;;;;;;;;;;:::i;27890:574::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27890:574:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18322:78::-;;;;;;;;;;;;;:::i;13076:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13076:48:0;-1:-1:-1;;;;;13076:48:0;;:::i;15488:371::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15488:371:0;;;;;;;;;:::i;13704:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13704:45:0;-1:-1:-1;;;;;13704:45:0;;:::i;18146:84::-;;;;;;;;;;;;;:::i;13245:34::-;;;;;;;;;;;;;:::i;24142:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24142:105:0;;:::i;30055:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30055:136:0;;:::i;13617:39::-;;;;;;;;;;;;;:::i;14152:19::-;;;;;;;;;;;;;:::i;19050:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19050:156:0;;;;;;;;:::i;30893:114::-;;;;;;;;;;;;;:::i;3635:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3635:94:0;-1:-1:-1;;;;;3635:94:0;;:::i;31320:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31320:170:0;;:::i;13794:29::-;;;;;;;;;;;;;:::i;14259:38::-;;;;;;;;;;;;;:::i;24529:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24529:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24529:211:0;;;;;;;;;;;;-1:-1:-1;24529:211:0;-1:-1:-1;24529:211:0;;;;:::i;13877:36::-;;;;;;;;;;;;;:::i;30558:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30558:167:0;;:::i;13962:29::-;;;;;;;;;;;;;:::i;18549:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18549:133:0;;;;;;;;;;:::i;28856:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28856:208:0;;;;;;;;;:::i;13920:35::-;;;;;;;;;;;;;:::i;23728:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23728:121:0;;:::i;14611:21::-;;;;;;;;;;;;;:::i;3737:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3737:97:0;-1:-1:-1;;;;;3737:97:0;;:::i;4068:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4068:173:0;-1:-1:-1;;;;;4068:173:0;;:::i;27125:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27125:347:0;;;;;;;;;;:::i;27616:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27616:128:0;;;;;;;;;;:::i;14121:24::-;;;;;;;;;;;;;:::i;13758:29::-;;;;;;;;;;;;;:::i;24387:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24387:134:0;;:::i;3953:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3953:107:0;-1:-1:-1;;;;;3953:107:0;;:::i;13832:36::-;;;;;;;;;;;;;:::i;14219:31::-;;;;;;;;;;;;;:::i;14963:51::-;;;;:::o;18236:80::-;18308:5;;;;;;;;;;;;-1:-1:-1;;;18308:5:0;;;;18236:80;:::o;31137:175::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;31258:46:::1;31280:23:::0;31258:17:::1;31270:4;14935:21:::0;-1:-1:-1;;15282:38:0::1;;15267:54:::0;;31258:11:::1;:17::i;:::-;:21:::0;::::1;:46::i;:::-;31240:15;:64:::0;-1:-1:-1;31137:175:0:o;18690:216::-;18794:10;18765:4;18782:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18782:32:0;;;;;;;;;;;:41;;;18839:37;;;;;;;18765:4;;18782:32;;18794:10;;18839:37;;;;;;;;-1:-1:-1;18894:4:0;18690:216;;;;;:::o;15021:31::-;;;;:::o;30735:150::-;30815:4;30871:6;30839:29;30859:8;30839:19;:29::i;:::-;:38;;30735:150;-1:-1:-1;;;30735:150:0:o;13552:36::-;;;;:::o;17966:88::-;18039:12;;17966:88;:::o;31522:903::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;31671:3:::1;31652:22:::0;::::1;31644:79;;;;-1:-1:-1::0;;;31644:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31761:33:::0;;::::1;31753:85;;;;-1:-1:-1::0;;;31753:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31847:12;31876:6:::0;31872:82:::1;31886:20:::0;;::::1;31872:82;;;31937:6;;31944:1;31937:9;;;;;;;;;::::0;;;::::1;;31930:16:::0;;;::::1;::::0;-1:-1:-1;31908:3:0::1;;31872:82;;;;31989:4;31970:15;31980:4;31970:9;:15::i;:::-;:23;;31962:63;;;::::0;;-1:-1:-1;;;31962:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32038:6;32034:250;32048:20:::0;;::::1;32034:250;;;32085:43;32100:4;32105:9;;32115:1;32105:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;32105:12:0::1;32118:6;;32125:1;32118:9;;;;;;;;;;;;;32085:14;:43::i;:::-;;32143:16;:30;32160:9;;32170:1;32160:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;32160:12:0::1;32143:30:::0;;-1:-1:-1;32143:30:0;::::1;::::0;;;;;;-1:-1:-1;32143:30:0;;::::1;;32139:138;;32194:11;::::0;-1:-1:-1;;;;;32194:11:0::1;:20;32215:9:::0;;32225:1;32215:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32215:12:0::1;32229:23;32239:9;;32249:1;32239:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;32239:12:0::1;32229:9;:23::i;:::-;32194:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;32194:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32190:75:::0;::::1;32070:3;;32034:250;;;-1:-1:-1::0;;;;;;32321:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;32317:105;;32360:11;::::0;-1:-1:-1;;;;;32360:11:0::1;:20;32381:4:::0;32387:15:::1;32381:4:::0;32387:9:::1;:15::i;:::-;32360:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32360:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32356:59:::0;::::1;3518:1;31522:903:::0;;;;;:::o;23508:202::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;23591:17:::1;23651:5:::0;23611:21:::1;::::0;-1:-1:-1;;;;;23651:5:0::1;23643:59;23698:3;23667:28:::0;;::::1;:34;23643:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;3518:1;23508:202:::0;:::o;13450:95::-;;;;:::o;29074:183::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;29172:15:::1;:25:::0;;;;29208:26:::1;:41:::0;29074:183::o;13663:34::-;;;;;;:::o;19214:364::-;-1:-1:-1;;;;;19334:19:0;;19314:4;19334:19;;;:11;:19;;;;;;;;19354:10;19334:31;;;;;;;;-1:-1:-1;;19334:46:0;19331:180;;19430:69;;;;;;;;;;;-1:-1:-1;;;19430:69:0;;;;;;;;-1:-1:-1;;;;;19430:19:0;;-1:-1:-1;19430:19:0;;;:11;:19;;;;;19450:10;19430:31;;;;;;;;;;:69;;19466:6;;19430:35;:69::i;:::-;-1:-1:-1;;;;;19396:19:0;;;;;;:11;:19;;;;;;;;19416:10;19396:31;;;;;;;:103;19331:180;19530:40;19544:6;19552:9;19563:6;19530:13;:40::i;:::-;19523:47;;19214:364;;;;;;:::o;23884:250::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;23970:11:::1;:21:::0;;-1:-1:-1;;;;23970:21:0::1;-1:-1:-1::0;;;23970:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;24005:11:::0;::::1;;:30:::0;::::1;;;-1:-1:-1::0;24020:10:0::1;::::0;:15;24005:30:::1;24002:125;;;24064:12;24051:10;:25:::0;24091:10:::1;:24:::0;;;24002:125:::1;23884:250:::0;;:::o;29516:90::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;29582:6:::1;:16:::0;;-1:-1:-1;;;;;29582:16:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;29582:16:0;;::::1;::::0;;;::::1;::::0;;29516:90::o;30399:149::-;30535:4;;30523;;-1:-1:-1;;;;;30523:4:0;;;30452:7;30513:15;;;:9;:15;;;;;;;30502:4;;;;;30492:15;;;;;30452:7;;30479:61;;30535:4;;30480:49;;30513:15;30480:28;;-1:-1:-1;;15267:54:0;30480:11;:28::i;:::-;:32;;:49::i;:::-;30479:55;;:61::i;:::-;30472:68;;30399:149;:::o;15059:19::-;;;;:::o;29852:183::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;29962:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;29962:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;29962:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;24748:164:::0;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;24832:18:::1;:28:::0;;-1:-1:-1;;24832:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;24871:33:0::1;24832:28;;24871:33:::0;;;::::1;::::0;;;::::1;;::::0;;24748:164::o;29357:139::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;29420:12:::1;:36:::0;;-1:-1:-1;;;;;29420:36:0;;::::1;-1:-1:-1::0;;;;;;29420:36:0;;::::1;::::0;::::1;::::0;;:12:::1;29467:21:::0;;;;:11:::1;:21:::0;;29357:139::o;3842:103::-;3897:4;3932:5;-1:-1:-1;;;;;3932:5:0;;;3921:16;;;;3842:103::o;18060:80::-;12851:1;18060:80;:::o;32429:739::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;32573:4:::1;32554:23:::0;::::1;32546:81;;;;-1:-1:-1::0;;;32546:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32674:25:::0;;::::1;::::0;32716:15:::1;32726:4:::0;32716:9:::1;:15::i;:::-;:23;;32708:63;;;::::0;;-1:-1:-1;;;32708:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32784:6;32780:247;32794:20:::0;;::::1;32780:247;;;32831:40;32846:4;32851:9;;32861:1;32851:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;32851:12:0::1;32864:6;32831:14;:40::i;:::-;;32886:16;:30;32903:9;;32913:1;32903:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;32903:12:0::1;32886:30:::0;;-1:-1:-1;32886:30:0;::::1;::::0;;;;;;-1:-1:-1;32886:30:0;;::::1;;32882:138;;32937:11;::::0;-1:-1:-1;;;;;32937:11:0::1;:20;32958:9:::0;;32968:1;32958:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32958:12:0::1;32972:23;32982:9;;32992:1;32982:12;;;;;;32972:23;32937:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;32937:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32933:75:::0;::::1;32816:3;;32780:247;;;-1:-1:-1::0;;;;;;33064:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;33060:105;;33103:11;::::0;-1:-1:-1;;;;;33103:11:0::1;:20;33124:4:::0;33130:15:::1;33124:4:::0;33130:9:::1;:15::i;:::-;33103:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;33103:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;33099:59;3518:1;32429:739:::0;;;;:::o;30215:174::-;30300:12;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;30332:49:::1;::::0;;-1:-1:-1;;;30332:49:0;;30362:10:::1;30332:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;30332:29:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;-1:-1:-1;30332:29:0;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30332:49:0;;30215:174;-1:-1:-1;;;30215:174:0:o;24274:105::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;24347:14:::1;:24:::0;;-1:-1:-1;;24347:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24274:105::o;13998:30::-;;;-1:-1:-1;;;;;13998:30:0;;:::o;28478:368::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;28649:21:::1;:46:::0;;-1:-1:-1;;;;;28649:46:0;;::::1;-1:-1:-1::0;;;;;;28649:46:0;;::::1;;::::0;;;28706:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;28761:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;28804:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;28478:368::o;15085:27::-;;;;:::o;13025:44::-;;;;;;;;;;;;;;;:::o;13187:49::-;;;;;;;;;;;;;;;:::o;14178:31::-;;;-1:-1:-1;;;;;14178:31:0;;:::o;13131:49::-;;;;;;;;;;;;;;;:::o;27752:130::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27841:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;27841:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27752:130::o;13409:34::-;;;;:::o;18926:116::-;18981:4;19005:29;19013:7;-1:-1:-1;;19005:7:0;:29::i;33172:411::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;33287:4:::1;33268:23:::0;::::1;33260:73;;;;-1:-1:-1::0;;;33260:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33388:6;33384:196;33398:20:::0;;::::1;33384:196;;;33439:16;:30;33456:9;;33466:1;33456:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;33456:12:0::1;33439:30:::0;;-1:-1:-1;33439:30:0;::::1;::::0;;;;;;-1:-1:-1;33439:30:0;;::::1;;33435:138;;33490:11;::::0;-1:-1:-1;;;;;33490:11:0::1;:20;33511:9:::0;;33521:1;33511:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33511:12:0::1;33525:23;33535:9;;33545:1;33535:12;;;;;;33525:23;33490:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;33490:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;33486:75:::0;::::1;33420:3;;33384:196;;31021:108:::0;31072:7;31099:22;31116:4;;31099:12;;:16;;:22;;;;:::i;14344:38::-;;;;;;:::o;27484:120::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27568:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27568:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27484:120::o;13368:34::-;;;;:::o;13327:::-;;;;:::o;29725:111::-;29778:7;29805:23;29823:4;;29805:13;;:17;;:23;;;;:::i;14490:31::-;;;;;;:::o;18408:129::-;18524:4;;-1:-1:-1;;;;;18501:18:0;;18474:7;18501:18;;;:9;:18;;;;;;18474:7;;18501:28;;:18;:22;:28::i;14389:38::-;;;;;;;;;:::o;29271:74::-;29325:4;;;;;;;;;-1:-1:-1;;;;;29325:4:0;-1:-1:-1;;;;;29313:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29271:74::o;15423:56::-;;;;:::o;15881:811::-;14694:6;;15959:7;;14694:6;;;-1:-1:-1;;;;;14694:6:0;14680:10;:20;;:43;;;14704:19;14712:10;14704:7;:19::i;:::-;14672:52;;;;;;15979:12:::1;:14:::0;;::::1;;::::0;;16007:10;16004:61:::1;;16041:12;;16033:20;;16004:61;16086:6;::::0;::::1;::::0;::::1;;;16085:7;16077:29;;;::::0;;-1:-1:-1;;;16077:29:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16077:29:0;;;;;;;;;;;;;::::1;;16123:16:::0;16119:118:::1;;16178:12;::::0;16161:30:::1;::::0;;;;;;16171:5;;16161:30:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;16213:12:0::1;::::0;16206:19:::1;;16119:118;16267:1;16253:11;:15;16249:188;;;16300:12;::::0;:39:::1;::::0;16325:12:::1;::::0;;::::1;16300:16;:39::i;:::-;16285:12;:54:::0;16249:188:::1;;;16387:12;::::0;:38:::1;::::0;16412:11;16387:16:::1;:38::i;:::-;16372:12;:53:::0;16249:188:::1;16453:12;::::0;-1:-1:-1;;;;;;16449:83:0::1;;;-1:-1:-1::0;;;;;16495:12:0::1;:25:::0;16449:83:::1;16563:12;::::0;16551:25:::1;::::0;14935:21;-1:-1:-1;;15282:38:0::1;::::0;16551:25:::1;16544:4;:32:::0;16587:12:::1;::::0;:19:::1;::::0;;-1:-1:-1;;;;;;16587:19:0;;;;-1:-1:-1;;;;;16587:12:0;;::::1;::::0;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;:12:::1;::::0;:19;;;;;;;;:12;;:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16641:12:0::1;::::0;16624:30:::1;::::0;;;;;;16634:5;;-1:-1:-1;16624:30:0::1;::::0;-1:-1:-1;16624:30:0;;;;::::1;::::0;;::::1;-1:-1:-1::0;16672:12:0::1;::::0;15881:811;;;;:::o;15363:53::-;;;;:::o;13286:34::-;;;;:::o;29620:85::-;29691:6;;;;;;;29690:7;;29620:85::o;27890:574::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;28069:12:::1;:28:::0;;;28108:13:::1;:30:::0;;;28149:12:::1;:28:::0;;;28188:6:::1;:16:::0;;;28215:7:::1;:18:::0;;;28255:79:::1;28225:8:::0;28255:65:::1;28197:7:::0;28255:65;28164:13;28255:65;28084:13;28124:14;28255:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:79::-;28244:8;:90:::0;28345:14:::1;:32:::0;;;28422:1:::1;28362:15:::0;28407:16:::1;28396:8;;:27;28388:68;;;::::0;;-1:-1:-1;;;28388:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;18322:78:::0;18374:7;18392:5;-1:-1:-1;;;;;18392:5:0;18322:78;:::o;13076:48::-;;;;;;;;;;;;;;;:::o;15488:371::-;15584:17;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;15618:6:::1;15615:227;;;15652:71;15659:1;15661:61;-1:-1:-1::0;;15665:48:0::1;15692:20;15665:22;15682:4;15665:12;;:16;;:22;;;;:::i;:48::-;15661:57:::0;::::1;:61::i;:::-;15652:6;:71::i;:::-;15640:83;;15615:227;;;15767:63;15774:1;15780:48;15807:20;15780:22;15797:4;15780:12;;:16;;:22;;;;:::i;13704:45::-:0;;;;;;;;;;;;;;;:::o;18146:84::-;18220:7;;;;;;;;;;;;-1:-1:-1;;;18220:7:0;;;;18146:84;:::o;13245:34::-;;;;:::o;24142:105::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;24214:10:::1;:25:::0;24142:105::o;30055:136::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;30145:6:::1;30139:3;:12;30131:21;;;::::0;::::1;;30163:14;:20:::0;30055:136::o;13617:39::-;;;;:::o;14152:19::-;;;-1:-1:-1;;;;;14152:19:0;;:::o;19050:156::-;19130:4;19154:44;19168:10;19180:9;19191:6;19154:13;:44::i;30893:114::-;30947:7;30974:25;30994:4;;30974:15;;:19;;:25;;;;:::i;3635:94::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3695:19:0::1;;::::0;;;3717:4:::1;3695:19;::::0;;;;;;;:26;;-1:-1:-1;;3695:26:0::1;::::0;;::::1;::::0;;3635:94::o;31320:170::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;31435:47:::1;31457:24:::0;31435:17:::1;31447:4;14935:21:::0;-1:-1:-1;;15282:38:0::1;::::0;31435:47:::1;31420:12;:62:::0;-1:-1:-1;31320:170:0:o;13794:29::-;;;;:::o;14259:38::-;;;-1:-1:-1;;;;;14259:38:0;;:::o;24529:211::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;24633:9:::1;24628:105;24644:20:::0;;::::1;24628:105;;;24715:6;24686:12;:26;24699:9;;24709:1;24699:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;24699:12:0::1;24686:26:::0;;-1:-1:-1;24686:26:0;::::1;::::0;;;;;;-1:-1:-1;24686:26:0;:35;;-1:-1:-1;;24686:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24666:3:0::1;24628:105;;13877:36:::0;;;-1:-1:-1;;;;;13877:36:0;;:::o;30558:167::-;30626:7;30653:64;30694:22;:20;:22::i;:::-;30676:4;;30653:36;;30666:22;;30686:1;;30666:15;;-1:-1:-1;;;;;30676:4:0;30666:9;:15::i;:22::-;30653:8;;:12;:36::i;13962:29::-;;;-1:-1:-1;;;;;13962:29:0;;:::o;18549:133::-;-1:-1:-1;;;;;18651:19:0;;;18633:7;18651:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18549:133::o;28856:208::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;28962:11:::1;:22:::0;;-1:-1:-1;;28962:22:0::1;::::0;::::1;;;::::0;;29011:45:::1;29034:21:::0;29011:18:::1;29023:5;14935:21:::0;-1:-1:-1;;15282:38:0::1;::::0;29011:45:::1;28995:13;:61:::0;-1:-1:-1;;28856:208:0:o;13920:35::-;;;-1:-1:-1;;;;;13920:35:0;;:::o;23728:121::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;23806:14:::1;:27:::0;23728:121::o;14611:21::-;;;;;;-1:-1:-1;;;;;14611:21:0;;:::o;3737:97::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3799:19:0::1;3821:5;3799:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3799:27:0::1;::::0;;3737:97::o;4068:173::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;4144:5:::1;:11:::0;;-1:-1:-1;;;;;;4144:11:0::1;-1:-1:-1::0;;;;;4144:11:0;::::1;::::0;;::::1;::::0;;4166:19;;;-1:-1:-1;4166:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4166:26:0::1;::::0;;::::1;::::0;;;4208:25;;;;;;;::::1;::::0;;;;;;;;;::::1;4068:173:::0;:::o;27125:347::-;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27222:23:0;::::1;27240:4;27222:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;27259:4:0::1;::::0;-1:-1:-1;;;;;27249:14:0;;::::1;27259:4:::0;::::1;27249:14;;27222:41;27214:50;;;::::0;::::1;;-1:-1:-1::0;;;;;27275:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;27275:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;27319:146:::1;;27344:11;::::0;:31:::1;::::0;;-1:-1:-1;;;27344:31:0;;-1:-1:-1;;;;;27344:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27319:146;;;27406:11;::::0;-1:-1:-1;;;;;27406:11:0::1;:20;27427:6:::0;27435:17:::1;27427:6:::0;27435:9:::1;:17::i;:::-;27406:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;27406:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;27616:128:::0;3576:24;3589:10;3576:12;:24::i;:::-;3568:48;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;-1:-1:-1;;;3568:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27704:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;27704:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27616:128::o;14121:24::-;;;-1:-1:-1;;;;;14121:24:0;;:::o;13758:29::-;;;;:::o;24387:134::-;3486:19;3494:10;3486:7;:19::i;:::-;3478:38;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;-1:-1:-1;;;3478:38:0;;;;;;;;;;;;;;;24508:5:::1;24485:28;24471:11;:42:::0;24387:134::o;3953:107::-;-1:-1:-1;;;;;4033:19:0;4009:4;4033:19;;;:14;:19;;;;;;;;;3953:107::o;13832:36::-;;;;:::o;14219:31::-;;;-1:-1:-1;;;14219:31:0;;;;;:::o;878:132::-;936:7;963:39;967:1;970;963:39;;;;;;;;;;;;;;;;;:3;:39::i;622:250::-;680:7;704:6;700:47;;-1:-1:-1;734:1:0;727:8;;700:47;771:5;;;775:1;771;:5;:1;795:5;;;;;:10;787:56;;;;-1:-1:-1;;;787:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21960:388;22053:4;22070:15;22088:16;22099:4;;22088:6;:10;;:16;;;;:::i;:::-;22070:34;;22135:54;22157:7;22135:54;;;;;;;;;;;;;-1:-1:-1;;;22135:54:0;;;:9;:17;22145:6;-1:-1:-1;;;;;22135:17:0;-1:-1:-1;;;;;22135:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;22115:17:0;;;;;;;:9;:17;;;;;;:74;;;;22223:20;;;;;;;:33;;22248:7;22223:24;:33::i;:::-;-1:-1:-1;;;;;22200:20:0;;;;;;;:9;:20;;;;;:56;;;;22312:4;;22272:46;;;;;;22300:17;;:7;;:11;:17::i;:::-;22272:46;;;;;;;;;;;;;;;-1:-1:-1;22336:4:0;;21960:388;-1:-1:-1;;;;21960:388:0:o;424:192::-;510:7;546:12;538:6;;;;530:29;;;;-1:-1:-1;;;530:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;582:5:0;;;424:192::o;19586:2340::-;19698:6;;19678:4;;19698:6;;;;;19695:63;;;19714:41;19729:6;19737:9;19748:6;19714:14;:41::i;:::-;19707:48;;;;19695:63;-1:-1:-1;;;;;19774:22:0;;;;;;:14;:22;;;;;;;;19773:23;:53;;;;-1:-1:-1;;;;;;19801:25:0;;;;;;:14;:25;;;;;;;;19800:26;19773:53;19770:127;;;19850:11;;-1:-1:-1;;;19850:11:0;;;;19842:43;;;;;-1:-1:-1;;;19842:43:0;;;;;;;;;;;;-1:-1:-1;;;19842:43:0;;;;;;;;;;;;;;;19909:15;19927:16;19938:4;;19927:6;:10;;:16;;;;:::i;:::-;-1:-1:-1;;;;;19961:22:0;;;;;;:14;:22;;;;;;19909:34;;-1:-1:-1;19961:22:0;;19960:23;:53;;;;-1:-1:-1;;;;;;19987:26:0;;20008:4;19987:26;;19960:53;:84;;;;-1:-1:-1;20039:4:0;;-1:-1:-1;;;;;20018:26:0;;;20039:4;;20018:26;;19960:84;:105;;;;-1:-1:-1;20061:4:0;;-1:-1:-1;;;;;20048:17:0;;;20061:4;;20048:17;;19960:105;:142;;;;-1:-1:-1;20082:20:0;;-1:-1:-1;;;;;20069:33:0;;;20082:20;;20069:33;;19960:142;:173;;;;-1:-1:-1;20119:14:0;;-1:-1:-1;;;;;20106:27:0;;;20119:14;;20106:27;;19960:173;:212;;;;-1:-1:-1;20151:21:0;;-1:-1:-1;;;;;20138:34:0;;;20151:21;;20138:34;;19960:212;19956:405;;;20188:18;20209:20;20219:9;20209;:20::i;:::-;20188:41;;20278:15;;20266:7;20253:10;:20;20252:41;;20244:115;;;;-1:-1:-1;;;20244:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19956:405;;20395:4;;-1:-1:-1;;;;;20385:14:0;;;20395:4;;20385:14;:49;;;;-1:-1:-1;20416:18:0;;;;20385:49;:94;;;;-1:-1:-1;;;;;;20452:27:0;;;;;;:16;:27;;;;;;;;20451:28;20385:94;20381:281;;;-1:-1:-1;;;;;20504:24:0;;;;;;:13;:24;;;;;;20531:15;-1:-1:-1;20496:73:0;;;;;-1:-1:-1;;;20496:73:0;;;;;;;;;;;;-1:-1:-1;;;20496:73:0;;;;;;;;;;;;;;;20629:21;;-1:-1:-1;;;;;20584:24:0;;;;;;:13;:24;;;;;20629:21;;;;;;20611:15;:39;20584:66;;20381:281;20716:14;;;;20713:283;;;-1:-1:-1;;;;;20755:20:0;;;;;;:12;:20;;;;;;;;20754:21;20746:47;;;;;-1:-1:-1;;;20746:47:0;;;;;;;;;;;;-1:-1:-1;;;20746:47:0;;;;;;;;;;;;;;;20825:11;;20811;:25;:43;;;;-1:-1:-1;20850:4:0;;-1:-1:-1;;;;;20840:14:0;;;20850:4;;20840:14;20811:43;20808:177;;;-1:-1:-1;;;;;20874:23:0;;;;;;:12;:23;;;;;;;;;:30;;-1:-1:-1;;20874:30:0;20900:4;20874:30;;;20928:41;;;;;20957:11;20928:41;;;;;;;;;;;;;;;;20808:177;21049:29;21062:6;21070:7;21049:12;:29::i;:::-;21094:16;:14;:16::i;:::-;21091:35;;;21113:10;:8;:10::i;:::-;21185:54;;;;;;;;;;;-1:-1:-1;;;21185:54:0;;;;;;;;-1:-1:-1;;;;;21185:17:0;;-1:-1:-1;21185:17:0;;;:9;:17;;;;;;;;:54;;21207:7;;21185:21;:54::i;:::-;-1:-1:-1;;;;;21165:17:0;;;;;;:9;:17;;;;;:74;;;;21279:21;21175:6;21279:13;:21::i;:::-;21278:22;:51;;;;21305:24;21319:9;21305:13;:24::i;:::-;21304:25;21278:51;21277:110;;21381:4;;21343:44;;21351:6;;21359:7;;-1:-1:-1;;;;;21368:17:0;;;21381:4;;21368:17;21343:7;:44::i;:::-;21277:110;;;21333:7;21277:110;-1:-1:-1;;;;;21421:20:0;;;;;;:9;:20;;;;;;21252:135;;-1:-1:-1;21421:40:0;;21252:135;21421:24;:40::i;:::-;-1:-1:-1;;;;;21398:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;21507:24;;;;;:16;:24;;;;;;;21503:119;;21552:11;;-1:-1:-1;;;;;21552:11:0;:20;21573:6;21581:17;21573:6;21581:9;:17::i;:::-;21552:47;;;;;;;;;;;;;-1:-1:-1;;;;;21552:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21548:63;;-1:-1:-1;;;;;21638:27:0;;;;;;:16;:27;;;;;;;;21634:129;;21686:11;;-1:-1:-1;;;;;21686:11:0;:20;21707:9;21718:20;21707:9;21718;:20::i;:::-;21686:53;;;;;;;;;;;;;-1:-1:-1;;;;;21686:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21682:69;;21779:11;;21799:14;;21779:35;;;-1:-1:-1;;;;;;21779:35:0;;;;;;;;;;-1:-1:-1;;;;;21779:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;21775:51;21860:9;-1:-1:-1;;;;;21843:53:0;21852:6;-1:-1:-1;;;;;21843:53:0;;21871:24;21890:4;;21871:14;:18;;:24;;;;:::i;:::-;21843:53;;;;;;;;;;;;;;;-1:-1:-1;21914:4:0;;19586:2340;-1:-1:-1;;;;;19586:2340:0:o;282:136::-;340:7;367:43;371:1;374;367:43;;;;;;;;;;;;;;;;;:3;:43::i;95:181::-;153:7;185:5;;;209:6;;;;201:46;;;;;-1:-1:-1;;;201:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:239;1420:6;1450:5;;;-1:-1:-1;;;1476:15:0;;;;:55;;-1:-1:-1;;;;1496:14:0;;;1516;;;1495:36;;1476:55;1468:64;;;;;;1552:6;;;1551:24;;;1573:1;1568;1564;:5;;;;;;:10;1551:24;1543:33;;;;;1016:189;1102:7;1137:12;1130:5;1122:28;;;;-1:-1:-1;;;1122:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1161:9;1177:1;1173;:5;;;;;;;1016:189;-1:-1:-1;;;;;1016:189:0:o;22356:168::-;22455:12;;22444:7;:23;;:50;;;-1:-1:-1;;;;;;22471:23:0;;;;;;:15;:23;;;;;;;;22444:50;22436:80;;;;;-1:-1:-1;;;22436:80:0;;;;;;;;;;;;-1:-1:-1;;;22436:80:0;;;;;;;;;;;;;;23301:197;23388:4;;23350;;-1:-1:-1;;;;;23388:4:0;23374:10;:18;;;;:38;;-1:-1:-1;23406:6:0;;;;;;;23405:7;23374:38;:62;;;;-1:-1:-1;23425:11:0;;;;23374:62;:116;;;;-1:-1:-1;;23477:13:0;;23467:4;23449:24;;;;:9;:24;;;;;;:41;;;23301:197::o;24940:2165::-;14568:6;:13;;-1:-1:-1;;14568:13:0;;;;;25035:15:::1;::::0;25052:26:::1;::::0;14568:13;;25019:60:::1;::::0;:15:::1;:60::i;:::-;:79;;25086:12;;25019:79;;;25082:1;25019:79;24989:109;;25109:20;25132:23;25150:4;;25132:13;;:17;;:23;;;;:::i;:::-;25109:46;;25168:23;25194:58;25250:1;25194:51;25225:19;25194:26;25211:8;;25194:12;:16;;:26;;;;:::i;:58::-;25168:84:::0;-1:-1:-1;25263:20:0::1;25286:33;:12:::0;25168:84;25286:16:::1;:33::i;:::-;25356:16;::::0;;25370:1:::1;25356:16:::0;;;;;::::1;::::0;;25263:56;;-1:-1:-1;25332:21:0::1;::::0;25356:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25356:16:0::1;25332:40;;25401:4;25383;25388:1;25383:7;;;;;;;;-1:-1:-1::0;;;;;25383:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25427:4:::1;::::0;25417:7;;25427:4;::::1;::::0;25417;;25427;;25417:7;::::1;;;;;-1:-1:-1::0;;;;;25417:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;25502:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;25502:188:0;;::::1;::::0;::::1;::::0;;;25444:21:::1;25502:188:::0;;;;;;25644:4:::1;25502:188:::0;;;;;;25664:15:::1;25502:188:::0;;;;;;;;;;;;;;;;;;;;;25468:21:::1;::::0;25502:6;;;::::1;::::0;:57:::1;::::0;25574:12;;25444:21;;25617:4;;25502:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;25444:21;25502:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25703:17;25723:40;25749:13;25723:21;:25;;:40;;;;:::i;:::-;25703:60:::0;-1:-1:-1;25776:19:0::1;25798:40;25811:26;:19:::0;25835:1:::1;25811:23;:26::i;:::-;25798:8;::::0;;:12:::1;:40::i;:::-;25776:62:::0;-1:-1:-1;25859:26:0::1;25888:58;25944:1;25888:51;25776:62:::0;25888:51;:9;25902:19;25888:13:::1;:34::i;:58::-;25859:87;;25957:27;25987:45;26020:11;25987:28;26001:13;;25987:9;:13;;:28;;;;:::i;:45::-;25957:75;;26043:26;26072:44;26104:11;26072:27;26086:12;;26072:9;:13;;:27;;;;:::i;:44::-;26043:73;;26127:20;26150:38;26176:11;26150:21;26164:6;;26150:9;:13;;:21;;;;:::i;:38::-;26127:61;;26199:21;26223:39;26250:11;26223:22;26237:7;;26223:9;:13;;:22;;;;:::i;:39::-;26199:63;;26279:11;;;;;;;;;-1:-1:-1::0;;;;;26279:11:0::1;-1:-1:-1::0;;;;;26279:19:0::1;;26306;26279:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;26275:65:::0;26379:20:::1;::::0;26371:77:::1;::::0;26351:15:::1;::::0;-1:-1:-1;;;;;26379:20:0::1;::::0;26438:5:::1;::::0;26413:18;;26351:15;26371:77;26351:15;26371:77;26413:18;26379:20;26438:5;26371:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;26483:14:0::1;::::0;26475:65:::1;::::0;26350:98;;-1:-1:-1;;;;;;26483:14:0::1;::::0;26530:5:::1;::::0;26511:12;;26483:14:::1;26475:65:::0;26483:14;26475:65;26511:12;26483:14;26530:5;26475:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;26575:15:0::1;::::0;26567:67:::1;::::0;26459:81;;-1:-1:-1;;;;;;26575:15:0::1;::::0;26624:5:::1;::::0;26604:13;;26575:15:::1;26567:67:::0;26575:15;26567:67;26604:13;26575:15;26624:5;26567:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26708:5:0::1;::::0;-1:-1:-1;;26729:19:0;;;-1:-1:-1;26726:372:0::1;;26764:6;;;;;;;;;-1:-1:-1::0;;;;;26764:6:0::1;-1:-1:-1::0;;;;;26764:22:0::1;;26794:18;26840:4;26864:15;26898:1;26918::::0;26938:21:::1;;;;;;;;;-1:-1:-1::0;;;;;26938:21:0::1;26978:15;26764:244;;;;;;;;;;;;;-1:-1:-1::0;;;;;26764:244:0::1;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;26764:244:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;27080:4:0::1;::::0;27028:58:::1;::::0;27040:18;;27060:25:::1;::::0;:15;;:19:::1;:25::i;:::-;27028:58;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;26726:372;-1:-1:-1::0;;14586:6:0;:14;;-1:-1:-1;;14586:14:0;;;-1:-1:-1;;;;;;;;;;;;24940:2165:0:o;22532:114::-;-1:-1:-1;;;;;22619:19:0;22594:4;22619:19;;;:11;:19;;;;;;;;22618:20;;22532:114::o;22656:633::-;22737:7;22788:3;22802:64;;;;-1:-1:-1;22840:14:0;;22802:64;22879:17;22899:63;22951:10;22899:47;22937:8;;22899:33;22911:14;;22928:3;22911:20;22899:7;:11;;:33;;;;:::i;:63::-;22879:83;;22979:6;22978:7;:51;;;;;23017:12;23003:10;;22990;;:23;22989:40;22978:51;22975:118;;;23057:24;23078:2;23057:16;:7;23069:3;23057:11;:16::i;:24::-;23045:36;;22975:118;23150:4;23132:24;;;;:9;:24;;;;;;:39;;23161:9;23132:28;:39::i;:::-;23123:4;23105:24;;;;:9;:24;;;;;:66;;;;23233:4;;-1:-1:-1;;;;;23187:52:0;;;;;23219:19;;:9;;:13;:19::i;:::-;23187:52;;;;;;;;;;;;;;;23259:22;:7;23271:9;23259:11;:22::i;:::-;23252:29;22656:633;-1:-1:-1;;;;;;22656:633:0:o

Swarm Source

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