Contract 0x69004509291f4a4021fa169fafdcfc2d92ad02aa 6

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x2dd69de94ca516a6e355baf13c6887239d82f3995c14d1ceb925f6ff3f5a95a8Swap Exact Token...47895002022-09-25 1:11:332 hrs 51 mins ago0xe35e430526c39f5c18bf3471f3e1a97f2b65c5b0 IN  PhotonSwap Finance: Router0 CRO1.012592167247 4,913.063275694
0x69320e21f3384bb144364151087e7fd570ed720a454ac075aa11f13d793d5230Swap Exact Token...47875892022-09-24 22:10:355 hrs 52 mins ago0x4dbe00511cf40b182e1a0c79662bd7974cb42903 IN  PhotonSwap Finance: Router0 CRO0.791046158630
0xef8b388b2b253192de9b68e3f7bccdc073d4b64c24d64ceea9614781ad578299Remove Liquidity...47857932022-09-24 19:20:118 hrs 43 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router0 CRO1.4702787109090
0x50bbe39e37606648603107a5d7c94838c11f29765adc931c307bf197908978abAdd Liquidity ET...47857482022-09-24 19:15:568 hrs 47 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router10.688307679136849 CRO0.9981582430530
0xff0f532747af530367da8fca6c4ea73bd699b88a0d38ee2a5d6619b9ff618ce3Swap Exact ETH F...47857412022-09-24 19:15:168 hrs 48 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router10.714982631171508 CRO0.8009373198310
0xbc4d5bf8ff77c4271b01f5d5f44985a91456bb460df8a039eb1e489dec7ca079Swap Exact ETH F...47856912022-09-24 19:10:338 hrs 52 mins ago0x8d39d985f9eafad2414feb730d13d39aea0f4042 IN  PhotonSwap Finance: Router220 CRO0.7643403314240
0x9fcb35878b2980abf0de2345385c3b8371f06776826d6085ba3763dda09e206aSwap Exact Token...47856872022-09-24 19:10:108 hrs 53 mins ago0xc58c4ffed25295c6c28bd9ef1b4358fbda37ecee IN  PhotonSwap Finance: Router0 CRO3.397465747912 4,913.239412622
0x5f0abf97a1f2f57eb605c42ed00c69b6fdd6c939abbe3e7bc60d091c04916b8bSwap Tokens For ...47852792022-09-24 18:31:289 hrs 31 mins ago0x5bfe0f87261bdd489bedbb544657f153b0b8d19e IN  PhotonSwap Finance: Router0 CRO2.298485970297 4,913.25801185
0x3f1a54be2d0816d75c376973afb70597d842f896cc45095fc282029ae809cacdAdd Liquidity ET...47848602022-09-24 17:51:2910 hrs 11 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router0.681540381472789 CRO0.997920855150
0xbf7de41c60753e91d223069e3e5e207fe317bba4c6118f5b80e1b6911480a082Swap Exact Token...47848542022-09-24 17:50:5510 hrs 12 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router0 CRO0.7910663158350
0x279e0c0806d7a37da0d8fdce3d6a973d5e322f3d0a0e0ab13087068d740db3a1Add Liquidity ET...47847762022-09-24 17:43:3010 hrs 19 mins ago0xda75728b12497042a14922d7c34638a74090024f IN  PhotonSwap Finance: Router75 CRO2.2964688344520
0x1bf3f3f041844ffa785e37eaf01a3bca5952ec862ab9178b0d117a073aa49f13Add Liquidity ET...47846102022-09-24 17:27:4510 hrs 35 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router9.988931330512191 CRO0.9981687565320
0xeee612802b393a1a33465521b0b260d6d7aa122b7e9e4a3bbb20bf2deffc9a3dSwap Exact Token...47846042022-09-24 17:27:1110 hrs 36 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router0 CRO0.7910092060
0xcae13c270fe5dd8d1efc49bb0d8431b57aff2ca3e984e57fbcaeee9527d3353bSwap ETH For Exa...47844802022-09-24 17:15:2910 hrs 47 mins ago0xddad7e65e342a5bc030d23f2fba8d3d2d2bbedc3 IN  PhotonSwap Finance: Router18.230675099258444 CRO0.755094710649 4,913.294231343
0xa679e9c4b613e7796107d0f526c41faf105a47cf5482e7087df8a73bf91e2850Swap Exact ETH F...47844532022-09-24 17:12:5110 hrs 50 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router10 CRO0.7272699157490
0xf9c08124ee3deb3b10a88f059e2bb9101ea47d0364211e2833bfe52abaa2c4b0Add Liquidity47844402022-09-24 17:11:3710 hrs 51 mins ago0xddad7e65e342a5bc030d23f2fba8d3d2d2bbedc3 IN  PhotonSwap Finance: Router0 CRO11.851105696208 4,913.295961029
0x02a1ed46d5b8820a4bcad3956ab798a9f7f79b61e9835f8fd4f1e77c0ebac680Swap Exact ETH F...47844392022-09-24 17:11:3110 hrs 51 mins ago0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707 IN  PhotonSwap Finance: Router10 CRO0.8009469582020
0x31d1157b456987f0a492358d41e2d701b7e50b23c8833b1ea0bb1980c45b8fbfSwap Exact Token...47843842022-09-24 17:06:1910 hrs 57 mins ago0x854c3cdf79757043db6905e8922c1b0a2d9cf1ec IN  PhotonSwap Finance: Router0 CRO0.673898180935 4,913.298392626
0xa60f8833da18c6d61f2d51519d99839653450acf38e464abdfe1ea5c6c3fd94dSwap Exact ETH F...47842342022-09-24 16:52:0711 hrs 11 mins ago0xb80ddf54c23fbf84bf779050fd0ac1a84cbd49a1 IN  PhotonSwap Finance: Router25 CRO0.7642916336610
0xb45c587fd87dab487eeae45a58217678b89dc1b196e13e992cc600a0cecc4a65Swap Exact Token...47839452022-09-24 16:24:4511 hrs 38 mins ago0x5e5a136df24076c8b061b422a474bc707a177256 IN  PhotonSwap Finance: Router0 CRO1.1855705296170
0x51cf997a3c9fa5ab9abb64749a15c089af102005aa3cd91af160f251878938a4Swap ETH For Exa...47832492022-09-24 15:18:3212 hrs 44 mins ago0xddad7e65e342a5bc030d23f2fba8d3d2d2bbedc3 IN  PhotonSwap Finance: Router18.228441372278634 CRO0.755103247587 4,913.349779985
0x5a5a160bd2394ebf3a41176de5f9ac7bedff431cb8746f976f22f65fb14e0618Swap ETH For Exa...47828232022-09-24 14:38:0813 hrs 25 mins ago0xe22485a9b6d2f0d1e019bcfe6560c6ceaef126fe IN  PhotonSwap Finance: Router4.643892751047943 CRO2.9481824906470
0xfabd21fe19a6aa9d656283ed46370edd4188ff2da92975918f8a29fd1f24c009Swap ETH For Exa...47828112022-09-24 14:36:5913 hrs 26 mins ago0xe22485a9b6d2f0d1e019bcfe6560c6ceaef126fe IN  PhotonSwap Finance: Router5.538905142692968 CRO3.5691315501420
0x33eb5bb7000850e431c74aa1d7cea03936de032b8138c84fcdee8be868e9f860Swap ETH For Exa...47827562022-09-24 14:31:4613 hrs 31 mins ago0xddad7e65e342a5bc030d23f2fba8d3d2d2bbedc3 IN  PhotonSwap Finance: Router87.980970558272012 CRO0.800879647124 4,913.372068251
0xd1e24994fab66b73c72a8e9c2e1ee5e93b8d330efd0e131a58fc85f32e667bc7Swap Exact ETH F...47823932022-09-24 13:57:2314 hrs 5 mins ago0xded9ad8299b70639dd945f4c9baaf1c2b37efed1 IN  PhotonSwap Finance: Router500 CRO0.8010799326560
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x69320e21f3384bb144364151087e7fd570ed720a454ac075aa11f13d793d523047875892022-09-24 22:10:355 hrs 52 mins ago PhotonSwap Finance: Router0x4dbe00511cf40b182e1a0c79662bd7974cb42903263.680783614178885564 CRO
0x69320e21f3384bb144364151087e7fd570ed720a454ac075aa11f13d793d523047875892022-09-24 22:10:355 hrs 52 mins ago Cronos: WCRO Token PhotonSwap Finance: Router263.680783614178885564 CRO
0xef8b388b2b253192de9b68e3f7bccdc073d4b64c24d64ceea9614781ad57829947857932022-09-24 19:20:118 hrs 43 mins ago PhotonSwap Finance: Router0xc4595f9da0ed87eb57e8fe9600e7bf26802d5707279.383887359113330359 CRO
0xef8b388b2b253192de9b68e3f7bccdc073d4b64c24d64ceea9614781ad57829947857932022-09-24 19:20:118 hrs 43 mins ago Cronos: WCRO Token PhotonSwap Finance: Router279.383887359113330359 CRO
0x50bbe39e37606648603107a5d7c94838c11f29765adc931c307bf197908978ab47857482022-09-24 19:15:568 hrs 47 mins ago PhotonSwap Finance: Router Cronos: WCRO Token10.688307679136849316 CRO
0xff0f532747af530367da8fca6c4ea73bd699b88a0d38ee2a5d6619b9ff618ce347857412022-09-24 19:15:168 hrs 48 mins ago PhotonSwap Finance: Router Cronos: WCRO Token10.714982631171508567 CRO
0xbc4d5bf8ff77c4271b01f5d5f44985a91456bb460df8a039eb1e489dec7ca07947856912022-09-24 19:10:338 hrs 52 mins ago PhotonSwap Finance: Router Cronos: WCRO Token220 CRO
0x9fcb35878b2980abf0de2345385c3b8371f06776826d6085ba3763dda09e206a47856872022-09-24 19:10:108 hrs 53 mins ago PhotonSwap Finance: Router0xc58c4ffed25295c6c28bd9ef1b4358fbda37ecee665.368485485643568778 CRO
0x9fcb35878b2980abf0de2345385c3b8371f06776826d6085ba3763dda09e206a47856872022-09-24 19:10:108 hrs 53 mins ago Cronos: WCRO Token PhotonSwap Finance: Router665.368485485643568778 CRO
0x3f1a54be2d0816d75c376973afb70597d842f896cc45095fc282029ae809cacd47848602022-09-24 17:51:2910 hrs 11 mins ago PhotonSwap Finance: Router Cronos: WCRO Token0.68154038147278949 CRO
0xbf7de41c60753e91d223069e3e5e207fe317bba4c6118f5b80e1b6911480a08247848542022-09-24 17:50:5510 hrs 12 mins ago PhotonSwap Finance: Router0xc4595f9da0ed87eb57e8fe9600e7bf26802d57070.715931250424857504 CRO
0xbf7de41c60753e91d223069e3e5e207fe317bba4c6118f5b80e1b6911480a08247848542022-09-24 17:50:5510 hrs 12 mins ago Cronos: WCRO Token PhotonSwap Finance: Router0.715931250424857504 CRO
0x279e0c0806d7a37da0d8fdce3d6a973d5e322f3d0a0e0ab13087068d740db3a147847762022-09-24 17:43:3010 hrs 19 mins ago PhotonSwap Finance: Router0xda75728b12497042a14922d7c34638a74090024f0.000000000000409801 CRO
0x279e0c0806d7a37da0d8fdce3d6a973d5e322f3d0a0e0ab13087068d740db3a147847762022-09-24 17:43:3010 hrs 19 mins ago PhotonSwap Finance: Router Cronos: WCRO Token74.999999999999590199 CRO
0x1bf3f3f041844ffa785e37eaf01a3bca5952ec862ab9178b0d117a073aa49f1347846102022-09-24 17:27:4510 hrs 35 mins ago PhotonSwap Finance: Router Cronos: WCRO Token9.98893133051219119 CRO
0xeee612802b393a1a33465521b0b260d6d7aa122b7e9e4a3bbb20bf2deffc9a3d47846042022-09-24 17:27:1110 hrs 36 mins ago PhotonSwap Finance: Router0xc4595f9da0ed87eb57e8fe9600e7bf26802d57079.926040401149482699 CRO
0xeee612802b393a1a33465521b0b260d6d7aa122b7e9e4a3bbb20bf2deffc9a3d47846042022-09-24 17:27:1110 hrs 36 mins ago Cronos: WCRO Token PhotonSwap Finance: Router9.926040401149482699 CRO
0xcae13c270fe5dd8d1efc49bb0d8431b57aff2ca3e984e57fbcaeee9527d3353b47844802022-09-24 17:15:2910 hrs 47 mins ago PhotonSwap Finance: Router0xddad7e65e342a5bc030d23f2fba8d3d2d2bbedc30.090699876115713652 CRO
0xcae13c270fe5dd8d1efc49bb0d8431b57aff2ca3e984e57fbcaeee9527d3353b47844802022-09-24 17:15:2910 hrs 47 mins ago PhotonSwap Finance: Router Cronos: WCRO Token18.139975223142730465 CRO
0xa679e9c4b613e7796107d0f526c41faf105a47cf5482e7087df8a73bf91e285047844532022-09-24 17:12:5110 hrs 50 mins ago PhotonSwap Finance: Router Cronos: WCRO Token10 CRO
0x02a1ed46d5b8820a4bcad3956ab798a9f7f79b61e9835f8fd4f1e77c0ebac68047844392022-09-24 17:11:3110 hrs 51 mins ago PhotonSwap Finance: Router Cronos: WCRO Token10 CRO
0x31d1157b456987f0a492358d41e2d701b7e50b23c8833b1ea0bb1980c45b8fbf47843842022-09-24 17:06:1910 hrs 57 mins ago PhotonSwap Finance: Router0x854c3cdf79757043db6905e8922c1b0a2d9cf1ec97.133457630171674779 CRO
0x31d1157b456987f0a492358d41e2d701b7e50b23c8833b1ea0bb1980c45b8fbf47843842022-09-24 17:06:1910 hrs 57 mins ago Cronos: WCRO Token PhotonSwap Finance: Router97.133457630171674779 CRO
0xa60f8833da18c6d61f2d51519d99839653450acf38e464abdfe1ea5c6c3fd94d47842342022-09-24 16:52:0711 hrs 11 mins ago PhotonSwap Finance: Router Cronos: WCRO Token25 CRO
0xb45c587fd87dab487eeae45a58217678b89dc1b196e13e992cc600a0cecc4a6547839452022-09-24 16:24:4511 hrs 38 mins ago PhotonSwap Finance: Router0x5e5a136df24076c8b061b422a474bc707a177256615.975877284833621638 CRO
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Router02

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-11
*/

// Sources flattened with hardhat v2.1.2 https://hardhat.org

// File @uniswap/v2-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

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

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

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

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

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


// File @uniswap/lib/contracts/libraries/[email protected]

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeApprove: approve failed'
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::transferFrom: transferFrom failed'
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
    }
}


// File contracts/periphery/interfaces/IUniswapV2Router01.sol

pragma solidity >=0.6.2;

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

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

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


// File contracts/periphery/interfaces/IUniswapV2Router02.sol

pragma solidity >=0.6.2;

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

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


// File @uniswap/v2-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}


// File contracts/periphery/libraries/SafeMath.sol

pragma solidity =0.6.6;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}


// File contracts/periphery/libraries/UniswapV2Library.sol

pragma solidity >=0.5.0;

library UniswapV2Library {
    using SafeMath for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'01429e880a7972ebfbba904a5bbe32a816e78273e4b38ffa6bdeaebce8adba7c' // init code hash
            ))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}


// File contracts/periphery/interfaces/IERC20.sol

pragma solidity >=0.5.0;

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

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

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


// File contracts/periphery/interfaces/IWETH.sol

pragma solidity >=0.5.0;

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}


// File contracts/periphery/UniswapV2Router02.sol

pragma solidity =0.6.6;






contract UniswapV2Router02 is IUniswapV2Router02 {
    using SafeMath for uint;

    address public immutable override factory;
    address public immutable override WETH;

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');
        _;
    }

    constructor(address _factory, address _WETH) public {
        factory = _factory;
        WETH = _WETH;
    }

    receive() external payable {
        assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract
    }

    // **** ADD LIQUIDITY ****
    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {
            IUniswapV2Factory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IUniswapV2Pair(pair).mint(to);
    }
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
        (amountToken, amountETH) = _addLiquidity(
            token,
            WETH,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountETHMin
        );
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWETH(WETH).deposit{value: amountETH}();
        assert(IWETH(WETH).transfer(pair, amountETH));
        liquidity = IUniswapV2Pair(pair).mint(to);
        // refund dust eth, if any
        if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);
    }

    // **** REMOVE LIQUIDITY ****
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);
        (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {
        (amountToken, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountA, uint amountB) {
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountETH) {
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountETH) {
        (, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountETH) {
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountETHMin, to, deadline
        );
    }

    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = UniswapV2Library.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust eth, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);
    }

    // **** SWAP (supporting fee-on-transfer tokens) ****
    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = UniswapV2Library.sortTokens(input, output);
            IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        uint amountIn = msg.value;
        IWETH(WETH).deposit{value: amountIn}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(WETH).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).withdraw(amountOut);
        TransferHelper.safeTransferETH(to, amountOut);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
        return UniswapV2Library.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountOut)
    {
        return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountIn)
    {
        return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return UniswapV2Library.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return UniswapV2Library.getAmountsIn(factory, amountOut, path);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b506040516200479d3803806200479d8339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c614618620001856000398061015f5280610ce45280610d1f5280610e16528061103452806113be528061152452806118eb52806119e55280611a9b5280611b695280611caf5280611d375280611f7c5280611ff752806120a652806121725280612207528061227b528061277952806129ec5280612a425280612a765280612aea5280612c8a5280612dcd5280612e55525080610ea45280610f7b52806110fa5280611133528061126e528061144c528061150252806116725280611bfc5280611d695280611ecc52806122ad528061250652806126fe5280612727528061275752806128c45280612a205280612d1d5280612e875280613718528061375b5280613a3e5280613bbd5280613fed528061409b528061411b52506146186000f3fe60806040526004361061014f5760003560e01c80638803dbee116100b6578063c45a01551161006f578063c45a015514610a10578063d06ca61f14610a25578063ded9382a14610ada578063e8e3370014610b4d578063f305d71914610bcd578063fb3bdb4114610c1357610188565b80638803dbee146107df578063ad5c464814610875578063ad615dec146108a6578063af2979eb146108dc578063b6f9de951461092f578063baa2abde146109b357610188565b80634a25d94a116101085780634a25d94a146104f05780635b0d5984146105865780635c11d795146105f9578063791ac9471461068f5780637ff36ab51461072557806385f8c259146107a957610188565b806302751cec1461018d578063054d50d4146101f957806318cbafe5146102415780631f00ca74146103275780632195995c146103dc57806338ed17391461045a57610188565b3661018857336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018657fe5b005b600080fd5b34801561019957600080fd5b506101e0600480360360c08110156101b057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c97565b6040805192835260208301919091528051918290030190f35b34801561020557600080fd5b5061022f6004803603606081101561021c57600080fd5b5080359060208101359060400135610db1565b60408051918252519081900360200190f35b34801561024d57600080fd5b506102d7600480360360a081101561026457600080fd5b813591602081013591810190606081016040820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460208302840111600160201b831117156102bd57600080fd5b91935091506001600160a01b038135169060200135610dc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103135781810151838201526020016102fb565b505050509050019250505060405180910390f35b34801561033357600080fd5b506102d76004803603604081101561034a57600080fd5b81359190810190604081016020820135600160201b81111561036b57600080fd5b82018360208201111561037d57600080fd5b803590602001918460208302840111600160201b8311171561039e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110f3945050505050565b3480156103e857600080fd5b506101e0600480360361016081101561040057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611129565b34801561046657600080fd5b506102d7600480360360a081101561047d57600080fd5b813591602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460208302840111600160201b831117156104d657600080fd5b91935091506001600160a01b038135169060200135611223565b3480156104fc57600080fd5b506102d7600480360360a081101561051357600080fd5b813591602081013591810190606081016040820135600160201b81111561053957600080fd5b82018360208201111561054b57600080fd5b803590602001918460208302840111600160201b8311171561056c57600080fd5b91935091506001600160a01b03813516906020013561136e565b34801561059257600080fd5b5061022f60048036036101408110156105aa57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356114fa565b34801561060557600080fd5b50610186600480360360a081101561061c57600080fd5b813591602081013591810190606081016040820135600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b91935091506001600160a01b038135169060200135611608565b34801561069b57600080fd5b50610186600480360360a08110156106b257600080fd5b813591602081013591810190606081016040820135600160201b8111156106d857600080fd5b8201836020820111156106ea57600080fd5b803590602001918460208302840111600160201b8311171561070b57600080fd5b91935091506001600160a01b03813516906020013561189d565b6102d76004803603608081101561073b57600080fd5b81359190810190604081016020820135600160201b81111561075c57600080fd5b82018360208201111561076e57600080fd5b803590602001918460208302840111600160201b8311171561078f57600080fd5b91935091506001600160a01b038135169060200135611b21565b3480156107b557600080fd5b5061022f600480360360608110156107cc57600080fd5b5080359060208101359060400135611e74565b3480156107eb57600080fd5b506102d7600480360360a081101561080257600080fd5b813591602081013591810190606081016040820135600160201b81111561082857600080fd5b82018360208201111561083a57600080fd5b803590602001918460208302840111600160201b8311171561085b57600080fd5b91935091506001600160a01b038135169060200135611e81565b34801561088157600080fd5b5061088a611f7a565b604080516001600160a01b039092168252519081900360200190f35b3480156108b257600080fd5b5061022f600480360360608110156108c957600080fd5b5080359060208101359060400135611f9e565b3480156108e857600080fd5b5061022f600480360360c08110156108ff57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611fab565b6101866004803603608081101561094557600080fd5b81359190810190604081016020820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460208302840111600160201b8311171561099957600080fd5b91935091506001600160a01b03813516906020013561212c565b3480156109bf57600080fd5b506101e0600480360360e08110156109d657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356124b8565b348015610a1c57600080fd5b5061088a6126fc565b348015610a3157600080fd5b506102d760048036036040811015610a4857600080fd5b81359190810190604081016020820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612720945050505050565b348015610ae657600080fd5b506101e06004803603610140811015610afe57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561274d565b348015610b5957600080fd5b50610baf6004803603610100811015610b7157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612861565b60408051938452602084019290925282820152519081900360600190f35b610baf600480360360c0811015610be357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561299d565b6102d760048036036080811015610c2957600080fd5b81359190810190604081016020820135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b91935091506001600160a01b038135169060200135612c42565b6000808242811015610cde576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b610d0d897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6124b8565b9093509150610d1d898685612fc4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b50505050610da58583613118565b50965096945050505050565b6000610dbe848484613210565b949350505050565b60608142811015610e0c576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610e4657fe5b905060200201356001600160a01b03166001600160a01b031614610e9f576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b610efd7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110610f1057fe5b60200260200101511015610f555760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b610ff386866000818110610f6557fe5b905060200201356001600160a01b031633610fd97f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610fa757fe5b905060200201356001600160a01b03168b8b6001818110610fc457fe5b905060200201356001600160a01b031661344c565b85600081518110610fe657fe5b602002602001015161350c565b61103282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613669915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061107157fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b505050506110e884836001855103815181106110db57fe5b6020026020010151613118565b509695505050505050565b60606111207f000000000000000000000000000000000000000000000000000000000000000084846138af565b90505b92915050565b60008060006111597f00000000000000000000000000000000000000000000000000000000000000008f8f61344c565b9050600087611168578c61116c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111e257600080fd5b505af11580156111f6573d6000803e3d6000fd5b505050506112098f8f8f8f8f8f8f6124b8565b809450819550505050509b509b9950505050505050505050565b60608142811015611269576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6112c77f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b915086826001845103815181106112da57fe5b6020026020010151101561131f5760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b61132f86866000818110610f6557fe5b6110e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b606081428110156113b4576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106113ee57fe5b905060200201356001600160a01b03166001600160a01b031614611447576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b6114a57f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b915086826000815181106114b557fe5b60200260200101511115610f555760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b6000806115487f00000000000000000000000000000000000000000000000000000000000000008d7f000000000000000000000000000000000000000000000000000000000000000061344c565b9050600086611557578b61155b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050506115f78d8d8d8d8d8d611fab565b9d9c50505050505050505050505050565b804281101561164c576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6116c18585600081811061165c57fe5b905060200201356001600160a01b0316336116bb7f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b905060200201356001600160a01b03168a8a6001818110610fc457fe5b8a61350c565b6000858560001981018181106116d357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173857600080fd5b505afa15801561174c573d6000803e3d6000fd5b505050506040513d602081101561176257600080fd5b505160408051602088810282810182019093528882529293506117a49290918991899182918501908490808284376000920191909152508892506139e7915050565b8661185682888860001981018181106117b957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b505afa158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b50519063ffffffff613cf216565b10156118935760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b5050505050505050565b80428110156118e1576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061191b57fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b6119848585600081811061165c57fe5b6119c28585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506139e7915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051905086811015611a995760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050506118938482613118565b60608142811015611b67576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611b9e57fe5b905060200201356001600160a01b03166001600160a01b031614611bf7576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b611c557f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110611c6857fe5b60200260200101511015611cad5760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611ce957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611d957f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b84600081518110611da257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b505050506040513d6020811015611e2357600080fd5b5051611e2b57fe5b611e6a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b5095945050505050565b6000610dbe848484613d42565b60608142811015611ec7576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b611f257f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91508682600081518110611f3557fe5b6020026020010151111561131f5760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610dbe848484613e32565b60008142811015611ff1576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b612020887f000000000000000000000000000000000000000000000000000000000000000089898930896124b8565b604080516370a0823160e01b815230600482015290519194506120a492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d602081101561209d57600080fd5b5051612fc4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561210a57600080fd5b505af115801561211e573d6000803e3d6000fd5b505050506110e88483613118565b8042811015612170576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560008181106121a757fe5b905060200201356001600160a01b03166001600160a01b031614612200576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6122d97f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d602081101561235357600080fd5b505161235b57fe5b60008686600019810181811061236d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b5051604080516020898102828101820190935289825292935061243e9290918a918a9182918501908490808284376000920191909152508992506139e7915050565b87611856828989600019810181811061245357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b60008082428110156124ff576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b600061252c7f00000000000000000000000000000000000000000000000000000000000000008c8c61344c565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b505050506040513d60208110156125b157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156125fe57600080fd5b505af1158015612612573d6000803e3d6000fd5b505050506040513d604081101561262857600080fd5b508051602090910151909250905060006126428e8e613ede565b509050806001600160a01b03168e6001600160a01b031614612665578183612668565b82825b90975095508a8710156126ac5760405162461bcd60e51b815260040180806020018281038252602681526020018061451a6026913960400191505060405180910390fd5b898610156126eb5760405162461bcd60e51b81526004018080602001828103825260268152602001806144606026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606111207f00000000000000000000000000000000000000000000000000000000000000008484613300565b600080600061279d7f00000000000000000000000000000000000000000000000000000000000000008e7f000000000000000000000000000000000000000000000000000000000000000061344c565b90506000876127ac578c6127b0565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561282657600080fd5b505af115801561283a573d6000803e3d6000fd5b5050505061284c8e8e8e8e8e8e610c97565b909f909e509c50505050505050505050505050565b600080600083428110156128aa576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6128b88c8c8c8c8c8c613fbc565b909450925060006128ea7f00000000000000000000000000000000000000000000000000000000000000008e8e61344c565b90506128f88d33838861350c565b6129048c33838761350c565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d602081101561298657600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156129e6576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b612a148a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613fbc565b90945092506000612a667f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061344c565b9050612a748b33838861350c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612acf57600080fd5b505af1158015612ae3573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612b6857600080fd5b505af1158015612b7c573d6000803e3d6000fd5b505050506040513d6020811015612b9257600080fd5b5051612b9a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612bf257600080fd5b505af1158015612c06573d6000803e3d6000fd5b505050506040513d6020811015612c1c57600080fd5b5051925034841015612c3457612c3433853403613118565b505096509650969350505050565b60608142811015612c88576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110612cbf57fe5b905060200201356001600160a01b03166001600160a01b031614612d18576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b612d767f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91503482600081518110612d8657fe5b60200260200101511115612dcb5760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110612e0757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e3a57600080fd5b505af1158015612e4e573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612eb37f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b84600081518110612ec057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b5051612f4957fe5b612f8882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b81600081518110612f9557fe5b6020026020010151341115611e6a57611e6a3383600081518110612fb557fe5b60200260200101513403613118565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106130415780518252601f199092019160209182019101613022565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a3576040519150601f19603f3d011682016040523d82523d6000602084013e6130a8565b606091505b50915091508180156130d65750805115806130d657508080602001905160208110156130d357600080fd5b50515b6131115760405162461bcd60e51b815260040180806020018281038252602d81526020018061456b602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106131645780518252601f199092019160209182019101613145565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b505090508061320b5760405162461bcd60e51b81526004018080602001828103825260348152602001806144076034913960400191505060405180910390fd5b505050565b60008084116132505760405162461bcd60e51b815260040180806020018281038252602b815260200180614598602b913960400191505060405180910390fd5b6000831180156132605750600082115b61329b5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b60006132af856103e563ffffffff61423016565b905060006132c3828563ffffffff61423016565b905060006132e9836132dd886103e863ffffffff61423016565b9063ffffffff61429316565b90508082816132f457fe5b04979650505050505050565b6060600282511015613359576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561337157600080fd5b5060405190808252806020026020018201604052801561339b578160200160208202803683370190505b50905082816000815181106133ac57fe5b60200260200101818152505060005b6001835103811015613444576000806133fe878685815181106133da57fe5b60200260200101518786600101815181106133f157fe5b60200260200101516142e2565b9150915061342084848151811061341157fe5b60200260200101518383613210565b84846001018151811061342f57fe5b602090810291909101015250506001016133bb565b509392505050565b600080600061345b8585613ede565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f01429e880a7972ebfbba904a5bbe32a816e78273e4b38ffa6bdeaebce8adba7c609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106135915780518252601f199092019160209182019101613572565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5091509150818015613626575080511580613626575080806020019051602081101561362357600080fd5b50515b6136615760405162461bcd60e51b81526004018080602001828103825260318152602001806143d66031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156138a95760008084838151811061368757fe5b602002602001015185846001018151811061369e57fe5b60200260200101519150915060006136b68383613ede565b50905060008785600101815181106136ca57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146136f8578260006136fc565b6000835b91509150600060028a510388106137135788613754565b6137547f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061374757fe5b602002602001015161344c565b90506137817f0000000000000000000000000000000000000000000000000000000000000000888861344c565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156137be576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561382f578181015183820152602001613817565b50505050905090810190601f16801561385c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b50506001909901985061366c975050505050505050565b50505050565b6060600282511015613908576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561392057600080fd5b5060405190808252806020026020018201604052801561394a578160200160208202803683370190505b509050828160018351038151811061395e57fe5b60209081029190910101528151600019015b8015613444576000806139a08786600186038151811061398c57fe5b60200260200101518786815181106133f157fe5b915091506139c28484815181106139b357fe5b60200260200101518383613d42565b8460018503815181106139d157fe5b6020908102919091010152505060001901613970565b60005b600183510381101561320b57600080848381518110613a0557fe5b6020026020010151858460010181518110613a1c57fe5b6020026020010151915091506000613a348383613ede565b5090506000613a647f0000000000000000000000000000000000000000000000000000000000000000858561344c565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613aa557600080fd5b505afa158015613ab9573d6000803e3d6000fd5b505050506040513d6060811015613acf57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613b05578284613b08565b83835b91509150613b66828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b9550613b73868383613210565b945050505050600080856001600160a01b0316886001600160a01b031614613b9d57826000613ba1565b6000835b91509150600060028c51038a10613bb8578a613bec565b613bec7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061374757fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613c76578181015183820152602001613c5e565b50505050905090810190601f168015613ca35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613cc557600080fd5b505af1158015613cd9573d6000803e3d6000fd5b50506001909b019a506139ea9950505050505050505050565b80820382811115611123576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808411613d825760405162461bcd60e51b815260040180806020018281038252602c8152602001806143aa602c913960400191505060405180910390fd5b600083118015613d925750600082115b613dcd5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b6000613df16103e8613de5868863ffffffff61423016565b9063ffffffff61423016565b90506000613e0b6103e5613de5868963ffffffff613cf216565b9050613e286001828481613e1b57fe5b049063ffffffff61429316565b9695505050505050565b6000808411613e725760405162461bcd60e51b81526004018080602001828103825260258152602001806144ae6025913960400191505060405180910390fd5b600083118015613e825750600082115b613ebd5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b82613ece858463ffffffff61423016565b81613ed557fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613f325760405162461bcd60e51b815260040180806020018281038252602581526020018061443b6025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613f52578284613f55565b83835b90925090506001600160a01b038216613fb5576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561403657600080fd5b505afa15801561404a573d6000803e3d6000fd5b505050506040513d602081101561406057600080fd5b50516001600160a01b0316141561411357604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156140e657600080fd5b505af11580156140fa573d6000803e3d6000fd5b505050506040513d602081101561411057600080fd5b50505b6000806141417f00000000000000000000000000000000000000000000000000000000000000008b8b6142e2565b91509150816000148015614153575080155b1561416357879350869250614223565b6000614170898484613e32565b90508781116141c357858110156141b85760405162461bcd60e51b81526004018080602001828103825260268152602001806144606026913960400191505060405180910390fd5b889450925082614221565b60006141d0898486613e32565b9050898111156141dc57fe5b8781101561421b5760405162461bcd60e51b815260040180806020018281038252602681526020018061451a6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061424b5750508082028282828161424857fe5b04145b611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142f18585613ede565b50905060008061430288888861344c565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561433a57600080fd5b505afa15801561434e573d6000803e3d6000fd5b505050506040513d606081101561436457600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b038781169084161461439757808261439a565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e56414c49445f50415448000000556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20455850495245440000000000000000a26469706673582212208305e58e6f6ceb88157f7b1a45711a29901e467561f8c113f048fe25f21c614964736f6c63430006060033000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8750000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23

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

000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8750000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23

-----Decoded View---------------
Arg [0] : _factory (address): 0x462c98cae5affeed576c98a55daa922604e2d875
Arg [1] : _WETH (address): 0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875
Arg [1] : 0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23


Deployed ByteCode Sourcemap

16753:18549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17235:10;-1:-1:-1;;;;;17249:4:0;17235:18;;17228:26;;;;16753:18549;;12:1:-1;9;2:12;21385:673:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21385:673:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;21385:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;34246:262;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34246:262:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34246:262:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28554:850;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28554:850:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;28554:850:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;28554:850:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;28554:850:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;28554:850:0;;-1:-1:-1;28554:850:0;-1:-1:-1;;;;;;28554:850:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;28554:850:0;;;;;;;;;;;;;;;;;35046:253;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35046:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;35046:253:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;35046:253:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;35046:253:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;35046:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35046:253:0;;-1:-1:-1;35046:253:0;;-1:-1:-1;;;;;35046:253:0:i;22064:677::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22064:677:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22064:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25771:628::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25771:628:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;25771:628:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;25771:628:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25771:628:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25771:628:0;;-1:-1:-1;25771:628:0;-1:-1:-1;;;;;;25771:628:0;;;;;;;;:::i;27720:828::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27720:828:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27720:828:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27720:828:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27720:828:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27720:828:0;;-1:-1:-1;27720:828:0;-1:-1:-1;;;;;;27720:828:0;;;;;;;;:::i;24201:718::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24201:718:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;24201:718:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31587:714::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31587:714:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;31587:714:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;31587:714:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;31587:714:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31587:714:0;;-1:-1:-1;31587:714:0;-1:-1:-1;;;;;;31587:714:0;;;;;;;;:::i;33163:843::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33163:843:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;33163:843:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;33163:843:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;33163:843:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;33163:843:0;;-1:-1:-1;33163:843:0;-1:-1:-1;;;;;;33163:843:0;;;;;;;;:::i;27017:697::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27017:697:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27017:697:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27017:697:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27017:697:0;;-1:-1:-1;27017:697:0;-1:-1:-1;;;;;;27017:697:0;;;;;;;;:::i;34516:261::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34516:261:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34516:261:0;;;;;;;;;;;;:::i;26405:606::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26405:606:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;26405:606:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;26405:606:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26405:606:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26405:606:0;;-1:-1:-1;26405:606:0;-1:-1:-1;;;;;;26405:606:0;;;;;;;;:::i;16889:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16889:38:0;;;:::i;:::-;;;;-1:-1:-1;;;;;16889:38:0;;;;;;;;;;;;;;34050:188;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34050:188:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34050:188:0;;;;;;;;;;;;:::i;23495:700::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23495:700:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23495:700:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32307:850::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;32307:850:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;32307:850:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;32307:850:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;32307:850:0;;-1:-1:-1;32307:850:0;-1:-1:-1;;;;;;32307:850:0;;;;;;;;:::i;20514:865::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20514:865:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;20514:865:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16841:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16841:41:0;;;:::i;34785:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34785:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;34785:253:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;34785:253:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34785:253:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34785:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34785:253:0;;-1:-1:-1;34785:253:0;;-1:-1:-1;;;;;34785:253:0:i;22747:669::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22747:669:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22747:669:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18753:738::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18753:738:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;18753:738:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19497:974;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;19497:974:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29410:810::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;29410:810:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;29410:810:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;29410:810:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29410:810:0;;-1:-1:-1;29410:810:0;-1:-1:-1;;;;;;29410:810:0;;;;;;;;:::i;21385:673::-;21622:16;21640:14;21603:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;21694:196:::1;21724:5;21744:4;21763:9;21787:14;21816:12;21851:4;21871:8;21694:15;:196::i;:::-;21667:223:::0;;-1:-1:-1;21667:223:0;-1:-1:-1;21901:51:0::1;21929:5:::0;21936:2;21667:223;21901:27:::1;:51::i;:::-;21969:4;-1:-1:-1::0;;;;;21963:20:0::1;;21984:9;21963:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21963:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21963:31:0;;;;22005:45;22036:2;22040:9;22005:30;:45::i;:::-;21385:673:::0;;;;;;;;;;:::o;34246:262::-;34399:14;34438:62;34468:8;34478:9;34489:10;34438:29;:62::i;:::-;34431:69;34246:262;-1:-1:-1;;;;34246:262:0:o;28554:850::-;28768:21;28740:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28840:4:0::1;28815:29;:4:::0;;-1:-1:-1;;28820:15:0;;28815:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28815:21:0::1;-1:-1:-1::0;;;;;28815:29:0::1;;28807:71;;;::::0;;-1:-1:-1;;;28807:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28807:71:0;;;;;;;;;;;;;::::1;;28899:55;28930:7;28939:8;28949:4;;28899:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28899:30:0::1;::::0;-1:-1:-1;;;28899:55:0:i:1;:::-;28889:65;;29004:12;28973:7;28998:1;28981:7;:14;:18;28973:27;;;;;;;;;;;;;;:43;;28965:99;;;;-1:-1:-1::0;;;28965:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29075:141;29121:4;;29126:1;29121:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29121:7:0::1;29130:10;29142:51;29167:7;29176:4;;29181:1;29176:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29176:7:0::1;29185:4;;29190:1;29185:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29185:7:0::1;29142:24;:51::i;:::-;29195:7;29203:1;29195:10;;;;;;;;;;;;;;29075:31;:141::i;:::-;29227:35;29233:7;29242:4;;29227:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29256:4:0::1;::::0;-1:-1:-1;29227:5:0::1;::::0;-1:-1:-1;;29227:35:0:i:1;:::-;29279:4;-1:-1:-1::0;;;;;29273:20:0::1;;29294:7;29319:1;29302:7;:14;:18;29294:27;;;;;;;;;;;;;;29273:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29273:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29273:49:0;;;;29333:63;29364:2;29368:7;29393:1;29376:7;:14;:18;29368:27;;;;;;;;;;;;;;29333:30;:63::i;:::-;28554:850:::0;;;;;;;;;:::o;35046:253::-;35190:21;35236:55;35266:7;35275:9;35286:4;35236:29;:55::i;:::-;35229:62;;35046:253;;;;;:::o;22064:677::-;22370:12;22384;22409;22424:49;22449:7;22458:6;22466;22424:24;:49::i;:::-;22409:64;;22484:10;22497;:33;;22521:9;22497:33;;;-1:-1:-1;;22497:33:0;22541:80;;;-1:-1:-1;;;22541:80:0;;22569:10;22541:80;;;;22589:4;22541:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22484:46;;-1:-1:-1;;;;;;22541:27:0;;;;;:80;;;;;-1:-1:-1;;22541:80:0;;;;;;;;-1:-1:-1;22541:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;22541:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22541:80:0;;;;22653;22669:6;22677;22685:9;22696:10;22708;22720:2;22724:8;22653:15;:80::i;:::-;22632:101;;;;;;;;22064:677;;;;;;;;;;;;;;;;:::o;25771:628::-;25995:21;25976:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;26039:55:::1;26070:7;26079:8;26089:4;;26039:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26039:30:0::1;::::0;-1:-1:-1;;;26039:55:0:i:1;:::-;26029:65;;26144:12;26113:7;26138:1;26121:7;:14;:18;26113:27;;;;;;;;;;;;;;:43;;26105:99;;;;-1:-1:-1::0;;;26105:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26215:141;26261:4;;26266:1;26261:7;;;;;;26215:141;26367:24;26373:7;26382:4;;26367:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26388:2:0;;-1:-1:-1;26367:5:0::1;::::0;-1:-1:-1;;26367:24:0:i:1;27720:828::-:0;27934:21;27906:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28006:4:0::1;27981:29;:4:::0;;-1:-1:-1;;27986:15:0;;27981:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27981:21:0::1;-1:-1:-1::0;;;;;27981:29:0::1;;27973:71;;;::::0;;-1:-1:-1;;;27973:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27973:71:0;;;;;;;;;;;;;::::1;;28065:55;28095:7;28104:9;28115:4;;28065:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28065:29:0::1;::::0;-1:-1:-1;;;28065:55:0:i:1;:::-;28055:65;;28153:11;28139:7;28147:1;28139:10;;;;;;;;;;;;;;:25;;28131:77;;;;-1:-1:-1::0;;;28131:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24201:718:::0;24519:14;24546:12;24561:46;24586:7;24595:5;24602:4;24561:24;:46::i;:::-;24546:61;;24618:10;24631;:33;;24655:9;24631:33;;;-1:-1:-1;;24631:33:0;24675:80;;;-1:-1:-1;;;24675:80:0;;24703:10;24675:80;;;;24723:4;24675:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24618:46;;-1:-1:-1;;;;;;24675:27:0;;;;;:80;;;;;-1:-1:-1;;24675:80:0;;;;;;;;-1:-1:-1;24675:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;24675:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24675:80:0;;;;24778:133;24840:5;24847:9;24858:14;24874:12;24888:2;24892:8;24778:47;:133::i;:::-;24766:145;24201:718;-1:-1:-1;;;;;;;;;;;;;24201:718:0:o;31587:714::-;31821:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;31842:139:::1;31888:4;;31893:1;31888:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31888:7:0::1;31897:10;31909:51;31934:7;31943:4;;31948:1;31943:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31943:7:0::1;31952:4;;31957:1;31952:7;;;;;;31909:51;31962:8;31842:31;:139::i;:::-;31992:18;32020:4:::0;;-1:-1:-1;;32025:15:0;;32020:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32020:21:0::1;-1:-1:-1::0;;;;;32013:39:0::1;;32053:2;32013:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32013:43:0::1;-1:-1:-1::0;;;;;32013:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32013:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32013:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32013:43:0;32067:44:::1;::::0;;32013:43:::1;32067:44:::0;;::::1;::::0;;;;;;;;;;;32013:43;;-1:-1:-1;32067:44:0::1;::::0;;;32102:4;;;;;;32067:44;::::1;::::0;32102:4;;32067:44;32102:4;32067:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;32108:2:0;;-1:-1:-1;32067:34:0::1;::::0;-1:-1:-1;;32067:44:0:i:1;:::-;32210:12:::0;32144:62:::1;32192:13:::0;32151:4;;-1:-1:-1;;32156:15:0;;32151:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32151:21:0::1;-1:-1:-1::0;;;;;32144:39:0::1;;32184:2;32144:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32144:43:0::1;-1:-1:-1::0;;;;;32144:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32144:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32144:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32144:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;32122:171;;;;-1:-1:-1::0;;;32122:171:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17053:1;31587:714:::0;;;;;;;:::o;33163:843::-;33430:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33489:4:0::1;33464:29;:4:::0;;-1:-1:-1;;33469:15:0;;33464:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33464:21:0::1;-1:-1:-1::0;;;;;33464:29:0::1;;33456:71;;;::::0;;-1:-1:-1;;;33456:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;33456:71:0;;;;;;;;;;;;;::::1;;33538:139;33584:4;;33589:1;33584:7;;;;;;33538:139;33688:55;33723:4;;33688:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;33737:4:0::1;::::0;-1:-1:-1;33688:34:0::1;::::0;-1:-1:-1;;33688:55:0:i:1;:::-;33771:37;::::0;;-1:-1:-1;;;33771:37:0;;33802:4:::1;33771:37;::::0;::::1;::::0;;;33754:14:::1;::::0;-1:-1:-1;;;;;33778:4:0::1;33771:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;33771:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33771:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;33771:37:0;;-1:-1:-1;33827:25:0;;::::1;;33819:81;;;;-1:-1:-1::0;;;33819:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33917:4;-1:-1:-1::0;;;;;33911:20:0::1;;33932:9;33911:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;33911:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33911:31:0;;;;33953:45;33984:2;33988:9;33953:30;:45::i;27017:697::-:0;27233:21;27205:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;27291:4:::1;-1:-1:-1::0;;;;;27280:15:0::1;:4;;27285:1;27280:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;27280:7:0::1;-1:-1:-1::0;;;;;27280:15:0::1;;27272:57;;;::::0;;-1:-1:-1;;;27272:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27272:57:0;;;;;;;;;;;;;::::1;;27350:56;27381:7;27390:9;27401:4;;27350:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27350:30:0::1;::::0;-1:-1:-1;;;27350:56:0:i:1;:::-;27340:66;;27456:12;27425:7;27450:1;27433:7;:14;:18;27425:27;;;;;;;;;;;;;;:43;;27417:99;;;;-1:-1:-1::0;;;27417:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27533:4;-1:-1:-1::0;;;;;27527:19:0::1;;27554:7;27562:1;27554:10;;;;;;;;;;;;;;27527:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27527:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27527:40:0;;;;;27591:4;-1:-1:-1::0;;;;;27585:20:0::1;;27606:51;27631:7;27640:4;;27645:1;27640:7;;;;;;27606:51;27659:7;27667:1;27659:10;;;;;;;;;;;;;;27585:85;;;;;;;;;;;;;-1:-1:-1::0;;;;;27585:85:0::1;-1:-1:-1::0;;;;;27585:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27585:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27585:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27585:85:0;27578:93:::1;;;;27682:24;27688:7;27697:4;;27682:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27703:2:0;;-1:-1:-1;27682:5:0::1;::::0;-1:-1:-1;;27682:24:0:i:1;:::-;27017:697:::0;;;;;;;;:::o;34516:261::-;34669:13;34707:62;34736:9;34747;34758:10;34707:28;:62::i;26405:606::-;26629:21;26610:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;26673:55:::1;26703:7;26712:9;26723:4;;26673:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26673:29:0::1;::::0;-1:-1:-1;;;26673:55:0:i:1;:::-;26663:65;;26761:11;26747:7;26755:1;26747:10;;;;;;;;;;;;;;:25;;26739:77;;;;-1:-1:-1::0;;;26739:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16889:38:::0;;;:::o;34050:188::-;34147:12;34179:51;34202:7;34211:8;34221;34179:22;:51::i;23495:700::-;23761:14;23742:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;23804:196:::1;23834:5;23854:4;23873:9;23897:14;23926:12;23961:4;23981:8;23804:15;:196::i;:::-;24050:38;::::0;;-1:-1:-1;;;24050:38:0;;24082:4:::1;24050:38;::::0;::::1;::::0;;;23788:212;;-1:-1:-1;24011:78:0::1;::::0;-1:-1:-1;24039:5:0;;24046:2;;-1:-1:-1;;;;;24050:23:0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;24050:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24050:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;24050:38:0;24011:27:::1;:78::i;:::-;24106:4;-1:-1:-1::0;;;;;24100:20:0::1;;24121:9;24100:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24100:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24100:31:0;;;;24142:45;24173:2;24177:9;24142:30;:45::i;32307:850::-:0;32567:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;32612:4:::1;-1:-1:-1::0;;;;;32601:15:0::1;:4;;32606:1;32601:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32601:7:0::1;-1:-1:-1::0;;;;;32601:15:0::1;;32593:57;;;::::0;;-1:-1:-1;;;32593:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;32593:57:0;;;;;;;;;;;;;::::1;;32661:13;32677:9;32661:25;;32703:4;-1:-1:-1::0;;;;;32697:19:0::1;;32724:8;32697:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32697:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32697:38:0;;;;;32759:4;-1:-1:-1::0;;;;;32753:20:0::1;;32774:51;32799:7;32808:4;;32813:1;32808:7;;;;;;32774:51;32827:8;32753:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;32753:83:0::1;-1:-1:-1::0;;;;;32753:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32753:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32753:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32753:83:0;32746:91:::1;;;;32848:18;32876:4:::0;;-1:-1:-1;;32881:15:0;;32876:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32876:21:0::1;-1:-1:-1::0;;;;;32869:39:0::1;;32909:2;32869:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32869:43:0::1;-1:-1:-1::0;;;;;32869:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32869:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32869:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32869:43:0;32923:44:::1;::::0;;32869:43:::1;32923:44:::0;;::::1;::::0;;;;;;;;;;;32869:43;;-1:-1:-1;32923:44:0::1;::::0;;;32958:4;;;;;;32923:44;::::1;::::0;32958:4;;32923:44;32958:4;32923:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;32964:2:0;;-1:-1:-1;32923:34:0::1;::::0;-1:-1:-1;;32923:44:0:i:1;:::-;33066:12:::0;33000:62:::1;33048:13:::0;33007:4;;-1:-1:-1;;33012:15:0;;33007:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33007:21:0::1;-1:-1:-1::0;;;;;33000:39:0::1;;33040:2;33000:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;33000:43:0::1;-1:-1:-1::0;;;;;33000:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;20514:865:0::0;20768:12;20782;20749:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;20807:12:::1;20822:49;20847:7;20856:6;20864;20822:24;:49::i;:::-;20882:62;::::0;;-1:-1:-1;;;20882:62:0;;20916:10:::1;20882:62;::::0;::::1;::::0;-1:-1:-1;;;;;20882:33:0;::::1;:62:::0;;;;;;;;;;;;;;20807:64;;-1:-1:-1;20882:33:0;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;20882:33:0;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20882:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20882:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;21012:29:0::1;::::0;;-1:-1:-1;;;21012:29:0;;-1:-1:-1;;;;;21012:29:0;;::::1;;::::0;::::1;::::0;;;20982:12:::1;::::0;;;21012:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;20982:12;21012:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;21012:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21012:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;21012:29:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;21012:29:0;-1:-1:-1;21053:14:0::1;21072:43;21100:6:::0;21108;21072:27:::1;:43::i;:::-;21052:63;;;21157:6;-1:-1:-1::0;;;;;21147:16:0::1;:6;-1:-1:-1::0;;;;;21147:16:0::1;;:58;;21188:7;21197;21147:58;;;21167:7;21176;21147:58;21126:79:::0;;-1:-1:-1;21126:79:0;-1:-1:-1;21224:21:0;;::::1;;21216:72;;;;-1:-1:-1::0;;;21216:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21318:10;21307:7;:21;;21299:72;;;;-1:-1:-1::0;;;21299:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17053:1;;;;20514:865:::0;;;;;;;;;;;:::o;16841:41::-;;;:::o;34785:253::-;34929:21;34975:55;35006:7;35015:8;35025:4;34975:30;:55::i;22747:669::-;23036:16;23054:14;23081:12;23096:46;23121:7;23130:5;23137:4;23096:24;:46::i;:::-;23081:61;;23153:10;23166;:33;;23190:9;23166:33;;;-1:-1:-1;;23166:33:0;23210:80;;;-1:-1:-1;;;23210:80:0;;23238:10;23210:80;;;;23258:4;23210:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23153:46;;-1:-1:-1;;;;;;23210:27:0;;;;;:80;;;;;-1:-1:-1;;23210:80:0;;;;;;;;-1:-1:-1;23210:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;23210:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23210:80:0;;;;23328;23347:5;23354:9;23365:14;23381:12;23395:2;23399:8;23328:18;:80::i;:::-;23301:107;;;;-1:-1:-1;22747:669:0;-1:-1:-1;;;;;;;;;;;;;22747:669:0:o;18753:738::-;19041:12;19055;19069:14;19022:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;19117:85:::1;19131:6;19139;19147:14;19163;19179:10;19191;19117:13;:85::i;:::-;19096:106:::0;;-1:-1:-1;19096:106:0;-1:-1:-1;19213:12:0::1;19228:49;19253:7;19262:6:::0;19270;19228:24:::1;:49::i;:::-;19213:64;;19288:66;19320:6;19328:10;19340:4;19346:7;19288:31;:66::i;:::-;19365;19397:6;19405:10;19417:4;19423:7;19365:31;:66::i;:::-;19469:4;-1:-1:-1::0;;;;;19454:25:0::1;;19480:2;19454:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;19454:29:0::1;-1:-1:-1::0;;;;;19454:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19454:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19454:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19454:29:0;18753:738;;;;-1:-1:-1;19454:29:0;;-1:-1:-1;18753:738:0;;-1:-1:-1;;;;;;;;;18753:738:0:o;19497:974::-;19750:16;19768:14;19784;19731:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;19838:176:::1;19866:5;19886:4;19905:18;19938:9;19962:14;19991:12;19838:13;:176::i;:::-;19811:203:::0;;-1:-1:-1;19811:203:0;-1:-1:-1;20025:12:0::1;20040:46;20065:7;20074:5:::0;20081:4:::1;20040:24;:46::i;:::-;20025:61;;20097:69;20129:5;20136:10;20148:4;20154:11;20097:31;:69::i;:::-;20183:4;-1:-1:-1::0;;;;;20177:19:0::1;;20204:9;20177:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20177:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20177:39:0;;;;;20240:4;-1:-1:-1::0;;;;;20234:20:0::1;;20255:4;20261:9;20234:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;20234:37:0::1;-1:-1:-1::0;;;;;20234:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20234:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20234:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20234:37:0;20227:45:::1;;;;20310:4;-1:-1:-1::0;;;;;20295:25:0::1;;20321:2;20295:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;20295:29:0::1;-1:-1:-1::0;;;;;20295:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20295:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20295:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20295:29:0;;-1:-1:-1;20375:9:0::1;:21:::0;-1:-1:-1;20371:92:0::1;;;20398:65;20429:10;20453:9;20441;:21;20398:30;:65::i;:::-;17053:1;19497:974:::0;;;;;;;;;;;:::o;29410:810::-;29623:21;29595:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;29681:4:::1;-1:-1:-1::0;;;;;29670:15:0::1;:4;;29675:1;29670:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29670:7:0::1;-1:-1:-1::0;;;;;29670:15:0::1;;29662:57;;;::::0;;-1:-1:-1;;;29662:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;29662:57:0;;;;;;;;;;;;;::::1;;29740:55;29770:7;29779:9;29790:4;;29740:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29740:29:0::1;::::0;-1:-1:-1;;;29740:55:0:i:1;:::-;29730:65;;29828:9;29814:7;29822:1;29814:10;;;;;;;;;;;;;;:23;;29806:75;;;;-1:-1:-1::0;;;29806:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29898:4;-1:-1:-1::0;;;;;29892:19:0::1;;29919:7;29927:1;29919:10;;;;;;;;;;;;;;29892:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29892:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29892:40:0;;;;;29956:4;-1:-1:-1::0;;;;;29950:20:0::1;;29971:51;29996:7;30005:4;;30010:1;30005:7;;;;;;29971:51;30024:7;30032:1;30024:10;;;;;;;;;;;;;;29950:85;;;;;;;;;;;;;-1:-1:-1::0;;;;;29950:85:0::1;-1:-1:-1::0;;;;;29950:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29950:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29950:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;29950:85:0;29943:93:::1;;;;30047:24;30053:7;30062:4;;30047:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;30068:2:0;;-1:-1:-1;30047:5:0::1;::::0;-1:-1:-1;;30047:24:0:i:1;:::-;30134:7;30142:1;30134:10;;;;;;;;;;;;;;30122:9;:22;30118:94;;;30146:66;30177:10;30201:7;30209:1;30201:10;;;;;;;;;;;;;;30189:9;:22;30146:30;:66::i;1571:449::-:0;1803:45;;;-1:-1:-1;;;;;1803:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1803:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1792:57:0;;;;1757:12;;1771:17;;1792:10;;;;1803:45;1792:57;;;25:18:-1;1792:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1792:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1756:93:0;;;;1882:7;:57;;;;-1:-1:-1;1894:11:0;;:16;;:44;;;1925:4;1914:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1914:24:0;1894:44;1860:152;;;;-1:-1:-1;;;1860:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1571:449;;;;;:::o;2534:217::-;2647:12;;;2607;2647;;;;;;;;;-1:-1:-1;;;;;2625:7:0;;;2640:5;;2625:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2625:35:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2606:54:0;;;2679:7;2671:72;;;;-1:-1:-1;;;2671:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2534:217;;;:::o;13182:517::-;13275:14;13321:1;13310:8;:12;13302:68;;;;-1:-1:-1;;;13302:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13401:1;13389:9;:13;:31;;;;;13419:1;13406:10;:14;13389:31;13381:84;;;;-1:-1:-1;;;13381:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:20;13499:17;:8;13512:3;13499:17;:12;:17;:::i;:::-;13476:40;-1:-1:-1;13527:14:0;13544:31;13476:40;13564:10;13544:31;:19;:31;:::i;:::-;13527:48;-1:-1:-1;13586:16:0;13605:40;13629:15;13605:19;:9;13619:4;13605:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;13586:59;;13680:11;13668:9;:23;;;;;;;13182:517;-1:-1:-1;;;;;;;13182:517:0:o;14374:511::-;14475:21;14532:1;14517:4;:11;:16;;14509:59;;;;;-1:-1:-1;;;14509:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14600:4;:11;14589:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14589:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;14589:23:0;;14579:33;;14636:8;14623:7;14631:1;14623:10;;;;;;;;;;;;;:21;;;;;14660:6;14655:223;14686:1;14672:4;:11;:15;14668:1;:19;14655:223;;;14710:14;14726:15;14745:42;14757:7;14766:4;14771:1;14766:7;;;;;;;;;;;;;;14775:4;14780:1;14784;14780:5;14775:11;;;;;;;;;;;;;;14745;:42::i;:::-;14709:78;;;;14819:47;14832:7;14840:1;14832:10;;;;;;;;;;;;;;14844:9;14855:10;14819:12;:47::i;:::-;14802:7;14810:1;14814;14810:5;14802:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;14689:3:0;;14655:223;;;;14374:511;;;;;:::o;11699:478::-;11788:12;11814:14;11830;11848:26;11859:6;11867;11848:10;:26::i;:::-;12012:32;;;-1:-1:-1;;12012:32:0;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;12012:32:0;;;;;12002:43;;;;;;-1:-1:-1;;;;;;11915:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11915:251:0;;;;;;;11905:262;;;;;;;;;11699:478;-1:-1:-1;;;;;11699:478:0:o;2028:498::-;2299:51;;;-1:-1:-1;;;;;2299:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2299:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2288:63:0;;;;2253:12;;2267:17;;2288:10;;;;2299:51;2288:63;;;25:18:-1;2288:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2288:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2252:99:0;;;;2384:7;:57;;;;-1:-1:-1;2396:11:0;;:16;;:44;;;2427:4;2416:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2416:24:0;2396:44;2362:156;;;;-1:-1:-1;;;2362:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2028:498;;;;;;:::o;25030:735::-;25137:6;25132:626;25163:1;25149:4;:11;:15;25145:1;:19;25132:626;;;25187:13;25202:14;25221:4;25226:1;25221:7;;;;;;;;;;;;;;25230:4;25235:1;25239;25235:5;25230:11;;;;;;;;;;;;;;25186:56;;;;25258:14;25277:42;25305:5;25312:6;25277:27;:42::i;:::-;25257:62;;;25334:14;25351:7;25359:1;25363;25359:5;25351:14;;;;;;;;;;;;;;25334:31;;25381:15;25398;25426:6;-1:-1:-1;;;;;25417:15:0;:5;-1:-1:-1;;;;;25417:15:0;;:61;;25459:9;25475:1;25417:61;;;25441:1;25445:9;25417:61;25380:98;;;;25493:10;25524:1;25510:4;:11;:15;25506:1;:19;:82;;25585:3;25506:82;;;25528:54;25553:7;25562:6;25570:4;25575:1;25579;25575:5;25570:11;;;;;;;;;;;;;;25528:24;:54::i;:::-;25493:95;;25618:48;25643:7;25652:5;25659:6;25618:24;:48::i;:::-;-1:-1:-1;;;;;25603:69:0;;25691:10;25703;25715:2;25729:1;25719:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;25719:12:0;87:42:-1;143:17;;-1:-1;25719:12:0;;25603:143;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25603:143:0;-1:-1:-1;;;;;25603:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25603:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25603:143:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;25166:3:0;;;;;-1:-1:-1;25132:626:0;;-1:-1:-1;;;;;;;;25132:626:0;;;25030:735;;;:::o;14966:532::-;15067:21;15124:1;15109:4;:11;:16;;15101:59;;;;;-1:-1:-1;;;15101:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15192:4;:11;15181:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15181:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;15181:23:0;;15171:33;;15245:9;15215:7;15240:1;15223:7;:14;:18;15215:27;;;;;;;;;;;;;;;;;:39;15279:11;;-1:-1:-1;;15279:15:0;15265:226;15296:5;;15265:226;;15324:14;15340:15;15359:42;15371:7;15380:4;15389:1;15385;:5;15380:11;;;;;;;;;;;;;;15393:4;15398:1;15393:7;;;;;;;15359:42;15323:78;;;;15433:46;15445:7;15453:1;15445:10;;;;;;;;;;;;;;15457:9;15468:10;15433:11;:46::i;:::-;15416:7;15428:1;15424;:5;15416:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;15303:3:0;15265:226;;30367:1214;30480:6;30475:1099;30506:1;30492:4;:11;:15;30488:1;:19;30475:1099;;;30530:13;30545:14;30564:4;30569:1;30564:7;;;;;;;;;;;;;;30573:4;30578:1;30582;30578:5;30573:11;;;;;;;;;;;;;;30529:56;;;;30601:14;30620:42;30648:5;30655:6;30620:27;:42::i;:::-;30600:62;;;30677:19;30714:48;30739:7;30748:5;30755:6;30714:24;:48::i;:::-;30677:86;;30778:16;30809:17;30897:13;30912;30930:4;-1:-1:-1;;;;;30930:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30930:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30930:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30930:18:0;;;;;;;-1:-1:-1;;;;;30896:52:0;;;;-1:-1:-1;30896:52:0;;-1:-1:-1;30964:17:0;;-1:-1:-1;;;;;31005:15:0;;;;;;;:61;;31047:8;31057;31005:61;;;31024:8;31034;31005:61;30963:103;;;;31095:56;31138:12;31102:5;-1:-1:-1;;;;;31095:23:0;;31127:4;31095:38;;;;;;;;;;;;;-1:-1:-1;;;;;31095:38:0;-1:-1:-1;;;;;31095:38:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;31095:56:0;31081:70;;31181:71;31211:11;31224:12;31238:13;31181:29;:71::i;:::-;31166:86;;30475:1099;;;;31283:15;31300;31328:6;-1:-1:-1;;;;;31319:15:0;:5;-1:-1:-1;;;;;31319:15:0;;:67;;31364:12;31383:1;31319:67;;;31343:1;31347:12;31319:67;31282:104;;;;31401:10;31432:1;31418:4;:11;:15;31414:1;:19;:82;;31493:3;31414:82;;;31436:54;31461:7;31470:6;31478:4;31483:1;31487;31483:5;31478:11;;;;;;;31436:54;31549:12;;;31559:1;31549:12;;;;;;;;;;-1:-1:-1;;;31511:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;31511:51:0;;;;;;;;;;;;;;;;;;;;;;31401:95;;-1:-1:-1;31511:9:0;;;;;;31521:10;;31533;;31401:95;;31549:12;;31511:51;;;;;;;;31549:12;;31511:51;;;;31549:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31511:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31511:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;30509:3:0;;;;;-1:-1:-1;30475:1099:0;;-1:-1:-1;;;;;;;;;;30475:1099:0;10715:129;10799:5;;;10794:16;;;;10786:50;;;;;-1:-1:-1;;;10786:50:0;;;;;;;;;;;;-1:-1:-1;;;10786:50:0;;;;;;;;;;;;;;13820:472;13913:13;13959:1;13947:9;:13;13939:70;;;;-1:-1:-1;;;13939:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14040:1;14028:9;:13;:31;;;;;14058:1;14045:10;:14;14028:31;14020:84;;;;-1:-1:-1;;;14020:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14115:14;14132:34;14161:4;14132:24;:9;14146;14132:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;14115:51;-1:-1:-1;14177:16:0;14196:34;14226:3;14196:25;:10;14211:9;14196:25;:14;:25;:::i;:34::-;14177:53;;14252:32;14282:1;14265:11;14253:9;:23;;;;;;;14252:32;:29;:32;:::i;:::-;14241:43;13820:472;-1:-1:-1;;;;;;13820:472:0:o;12739:321::-;12821:12;12864:1;12854:7;:11;12846:61;;;;-1:-1:-1;;;12846:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12937:1;12926:8;:12;:28;;;;;12953:1;12942:8;:12;12926:28;12918:81;;;;-1:-1:-1;;;12918:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13044:8;13020:21;:7;13032:8;13020:21;:11;:21;:::i;:::-;:32;;;;;;;12739:321;-1:-1:-1;;;;12739:321:0:o;11258:349::-;11333:14;11349;11394:6;-1:-1:-1;;;;;11384:16:0;:6;-1:-1:-1;;;;;11384:16:0;;;11376:66;;;;-1:-1:-1;;;11376:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11481:6;-1:-1:-1;;;;;11472:15:0;:6;-1:-1:-1;;;;;11472:15:0;;:53;;11510:6;11518;11472:53;;;11491:6;11499;11472:53;11453:72;;-1:-1:-1;11453:72:0;-1:-1:-1;;;;;;11544:20:0;;11536:63;;;;;-1:-1:-1;;;11536:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11258:349;;;;;:::o;17357:1390::-;17670:50;;;-1:-1:-1;;;17670:50:0;;-1:-1:-1;;;;;17670:50:0;;;;;;;;;;;;;;;;17575:12;;;;;;17688:7;17670:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;17670:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17670:50:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17670:50:0;-1:-1:-1;;;;;17670:64:0;;17666:150;;;17751:53;;;-1:-1:-1;;;17751:53:0;;-1:-1:-1;;;;;17751:53:0;;;;;;;;;;;;;;;;17769:7;17751:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;17751:37:0;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;17751:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17751:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17666:150:0;17827:13;17842;17859:53;17888:7;17897:6;17905;17859:28;:53::i;:::-;17826:86;;;;17927:8;17939:1;17927:13;:30;;;;-1:-1:-1;17944:13:0;;17927:30;17923:817;;;17996:14;;-1:-1:-1;18012:14:0;;-1:-1:-1;17923:817:0;;;18060:19;18082:58;18105:14;18121:8;18131;18082:22;:58::i;:::-;18060:80;;18177:14;18159;:32;18155:574;;18238:10;18220:14;:28;;18212:79;;;;-1:-1:-1;;;18212:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18332:14;;-1:-1:-1;18348:14:0;-1:-1:-1;18348:14:0;18155:574;;;18404:19;18426:58;18449:14;18465:8;18475;18426:22;:58::i;:::-;18404:80;;18528:14;18510;:32;;18503:40;;;;18588:10;18570:14;:28;;18562:79;;;;-1:-1:-1;;;18562:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18682:14;-1:-1:-1;18698:14:0;;-1:-1:-1;18155:574:0;17923:817;;17357:1390;;;;;;;;;;;:::o;10852:142::-;10904:6;10931;;;:30;;-1:-1:-1;;10946:5:0;;;10960:1;10955;10946:5;10955:1;10941:15;;;;;:20;10931:30;10923:63;;;;;-1:-1:-1;;;10923:63:0;;;;;;;;;;;;-1:-1:-1;;;10923:63:0;;;;;;;;;;;;;;10579:128;10663:5;;;10658:16;;;;10650:49;;;;;-1:-1:-1;;;10650:49:0;;;;;;;;;;;;-1:-1:-1;;;10650:49:0;;;;;;;;;;;;;;12235:391;12328:13;12343;12370:14;12389:26;12400:6;12408;12389:10;:26::i;:::-;12369:46;;;12427:13;12442;12475:32;12483:7;12492:6;12500;12475:7;:32::i;:::-;-1:-1:-1;;;;;12460:60:0;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12460:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12460:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12460:62:0;;;;;;;-1:-1:-1;;;;;12426:96:0;;;;-1:-1:-1;12426:96:0;;-1:-1:-1;;;;;;12556:16:0;;;;;;;:62;;12599:8;12609;12556:62;;;12576:8;12586;12556:62;12533:85;;;;-1:-1:-1;12235:391:0;-1:-1:-1;;;;;;;12235:391:0:o

Swarm Source

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