Contract 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc8d33d44edeea69e14e3d030b9ae3643523edfca0066c578a466b675c402e8d6Any Swap Out Nat...10310412022-05-23 19:35:244 hrs 3 mins ago0xd5498d6878f83e0ea0dbcf4ce1ad44c9944b4c58 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c04 CLV0.0046248
0x9b9c51faa4b13548b4574e5bc623a444b92f2b0e9c25904f5da35d2e12f3fbdeAny Swap In Auto10308522022-05-23 18:53:364 hrs 45 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.004338125
0xa49c21816311bbc87a630e5d409dec5ca22409eac646350d92b0463e33f25a72Any Swap Out10299032022-05-23 15:20:428 hrs 18 mins ago0xc5d4b74359938cb6457016ea8dbe82078dcc2312 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0016714
0xfa70d5818fc4599963f08206b553ceba5af5cda59fbae3924b5288ecd1748257Any Swap Out10298322022-05-23 15:05:128 hrs 34 mins ago0x5d5596940f6f9c9ac67482c756387c1d14851bfe IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0016714
0x43e8621f9abe072e83c2e076fd051ad14756691b8127bb32e40154f8e9713e23Any Swap Out10297732022-05-23 14:51:188 hrs 47 mins ago0x3242cb0b1442eee588c8fb7f6e428496c8aba207 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0016714
0x0cad149175362cd8a53a571827239794148836233193722dd4551275fcf80fc0Any Swap Out10297122022-05-23 14:37:189 hrs 1 min ago0x5f11a43456abb6b9cab927374c78b99bd4953069 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0016714
0x4877d2360c6e4980dbf5ea6ebe2fae54b25353d68e1c105c31fc1f6d95826155Any Swap Out10296482022-05-23 14:23:429 hrs 15 mins ago0x390e8b0260f3d00e42c5c3d3dd8deedef94dc1c7 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0016714
0x998f0c302b8293ecb039b9c38c12ab1b50e130e59bf0516b7e001270c4299fd2Any Swap In Auto10267332022-05-23 3:45:0019 hrs 54 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.004337465
0x21a9e63b1eaff1b6ab236ece6bd7074392c237dc6aa029949cf763b51f29234cAny Swap Out Nat...10265822022-05-23 3:12:1220 hrs 27 mins ago0x50aa76adfaeea11e56d3c34ccb161a8a62e54d64 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0688.73 CLV0.0023124
0xa090653c236ef7fdef3993903c0a8f3a62a6b613f0ca8bc063ce9284ba00ab69Any Swap Out10232972022-05-22 15:13:241 day 8 hrs ago0xcbbb123936d627d91e9b41455b4ec9715b433333 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0025089
0x4d6664fe5b180ebe509d3f53f82a9a36ea2e90bbfb021a3d8ce1ddb3a62562cbAny Swap Out10228382022-05-22 13:33:481 day 10 hrs ago0x05f7f81ef8b158be44b96a3a3bd5351bdf28946c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001672
0xa34010200511748e86ea154456dfe5ac8d8e696067683b15fd13d6ee6fb827fcAny Swap Out10224792022-05-22 12:15:481 day 11 hrs ago0x05f7f81ef8b158be44b96a3a3bd5351bdf28946c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0016714
0x4e182c8183bf2d22edb5b4998df3681449294267a821a10f0975446ad9b70a95Any Swap In Auto10224312022-05-22 12:05:181 day 11 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00216271
0xd745a2b8941b6589fd3073df9e40e27ab9534e94da396e6bff170dc3a8268beeAny Swap In Auto10224232022-05-22 12:03:061 day 11 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00204083
0x18f615b1869aa41cd04be4069bda34661dcd177bc32a0dd2aaae5b97d00b9b7aAny Swap In Auto10221622022-05-22 11:06:181 day 12 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00321805
0xe5a9738621c9e48fdea2565f1e607432aa2c96a3bee3ce4637c365b168032537Any Swap In Auto10221422022-05-22 11:02:061 day 12 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
0x88c02ec77166065563455827eb42e3b51b786b5f659c41f0f412bf0086d2d556Any Swap Out10219852022-05-22 10:27:121 day 13 hrs ago0x253b95ce71e3ab066aa82c0c20c545a657682655 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.0016714
0x9fd5d01387e32b3c5b5d642ac669f14779b056aef1e78aea2532679ac778ae7cAny Swap In Auto10217862022-05-22 9:41:241 day 13 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309749
0x0920ab63adce4797cb1a353d1639b3a0d0b11c915229adbe620d6d3980a62536Any Swap In Auto10210672022-05-22 7:03:001 day 16 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
0x3fe0c22e30ee9f628f23bf161a803e312edbfeb4859fa0cc9019a896d8049b0fAny Swap In Auto10185492022-05-21 21:57:482 days 1 hr ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
0x4ef05b801eeeb6391b15795c2c48a7f06511b667777ffe9427d467aa7b8c1336Any Swap In Auto10185372022-05-21 21:54:542 days 1 hr ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
0x57543caea605b8fdfa57caa9bd319b07b9da980c39472721cadb684b3f65100fAny Swap In Auto10185212022-05-21 21:51:422 days 1 hr ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
0xe24387821301f97cc6381c1a133b5b77c7b05254d4cd57aaca5bdbbf45352d1eAny Swap In Auto10184922022-05-21 21:45:122 days 1 hr ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
0x8d1dd5a47136718875394204e3af2cd10e670f8287a59d79ffa66b85a8449ddfAny Swap In Auto10184362022-05-21 21:32:002 days 2 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
0x474c083be01ee4f46e6cb779cef86e270e7c58bc026e73dc23d4aa928c0d5171Any Swap In Auto10183452022-05-21 21:12:482 days 2 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.00309683
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9b9c51faa4b13548b4574e5bc623a444b92f2b0e9c25904f5da35d2e12f3fbde10308522022-05-23 18:53:364 hrs 45 mins ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xd5498d6878f83e0ea0dbcf4ce1ad44c9944b4c58426.55 CLV
0x9b9c51faa4b13548b4574e5bc623a444b92f2b0e9c25904f5da35d2e12f3fbde10308522022-05-23 18:53:364 hrs 45 mins ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0426.55 CLV
0x998f0c302b8293ecb039b9c38c12ab1b50e130e59bf0516b7e001270c4299fd210267332022-05-23 3:45:0019 hrs 54 mins ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xebd53184feaf310050c37a2c71fd93f49242d5b866.95 CLV
0x998f0c302b8293ecb039b9c38c12ab1b50e130e59bf0516b7e001270c4299fd210267332022-05-23 3:45:0019 hrs 54 mins ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c066.95 CLV
0x21a9e63b1eaff1b6ab236ece6bd7074392c237dc6aa029949cf763b51f29234c10265822022-05-23 3:12:1220 hrs 27 mins ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536688.73 CLV
0x70e90aa9fa209b935c19483996c15ea062548581b69c9ed1628b99398df71b8b10170572022-05-21 16:30:002 days 7 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x50aa76adfaeea11e56d3c34ccb161a8a62e54d64664.75 CLV
0x70e90aa9fa209b935c19483996c15ea062548581b69c9ed1628b99398df71b8b10170572022-05-21 16:30:002 days 7 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0664.75 CLV
0xb8635c4acd6486fad47a8a3533a0fa0ab470369c2c397cc8c72d0e91d3eb910110169242022-05-21 16:00:362 days 7 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x381a034325dcf0687888815461f26f5f8c559e1331.845001622982380919 CLV
0xb8635c4acd6486fad47a8a3533a0fa0ab470369c2c397cc8c72d0e91d3eb910110169242022-05-21 16:00:362 days 7 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c031.845001622982380919 CLV
0xec3cc9d9900c884b2b4eb73eed1a7456b28386951cb09937de395e03fa61997310168692022-05-21 15:49:062 days 7 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x5bf564f17a88f02f2f22d1e47b6a15ae7fb1c1602 CLV
0xec3cc9d9900c884b2b4eb73eed1a7456b28386951cb09937de395e03fa61997310168692022-05-21 15:49:062 days 7 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c02 CLV
0x859c42a7b41b46f589279d755fafd4bb1f4cc7660186d241f5ddd48e5b0a62af10168272022-05-21 15:39:302 days 7 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x50aa76adfaeea11e56d3c34ccb161a8a62e54d6428 CLV
0x859c42a7b41b46f589279d755fafd4bb1f4cc7660186d241f5ddd48e5b0a62af10168272022-05-21 15:39:302 days 7 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c028 CLV
0x97abe8204e3ea7366a78f841afc63d7b560106a4afe324174490476ff09c391410167912022-05-21 15:31:362 days 8 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xdf92199ad019931bf8bfe4c31f6919c31e0e897c2 CLV
0x97abe8204e3ea7366a78f841afc63d7b560106a4afe324174490476ff09c391410167912022-05-21 15:31:362 days 8 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c02 CLV
0xc8f9e3f88f7b93e617b81f49ba963ba828fdc3efc6d6ac428061666dec74b44110166322022-05-21 14:57:002 days 8 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x46f5ce6f9e9e9f122a61f4d1eb8aa94c1eff16c72 CLV
0xc8f9e3f88f7b93e617b81f49ba963ba828fdc3efc6d6ac428061666dec74b44110166322022-05-21 14:57:002 days 8 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c02 CLV
0xf46fa44cb0f06a86c250d732af1cca026c8dd1d11b835d54ac1a8e03e863143410164412022-05-21 14:13:302 days 9 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x4c997b316cc562485e66fb1822d6c4cefc294acf2 CLV
0xf46fa44cb0f06a86c250d732af1cca026c8dd1d11b835d54ac1a8e03e863143410164412022-05-21 14:13:302 days 9 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c02 CLV
0x0d979612177a0052c22e9348f8e4c92e47653cf3b31df4d33f0a260a620eedcc10162172022-05-21 13:24:002 days 10 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xb6f157768880cf8c97253caf3d6385568aeb2d312 CLV
0x0d979612177a0052c22e9348f8e4c92e47653cf3b31df4d33f0a260a620eedcc10162172022-05-21 13:24:002 days 10 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c02 CLV
0x1981823ab4264d864f5f92caafba7678c5beb55ee8929e9620a44a437b43ed4010159702022-05-21 12:29:302 days 11 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x675a1b9e6bead1e3fa57ea86ae3023c31ab535462.01 CLV
0x1981823ab4264d864f5f92caafba7678c5beb55ee8929e9620a44a437b43ed4010159702022-05-21 12:29:302 days 11 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c02.01 CLV
0xd859423777fbddc5c186ccb049357188025ca050228bfcaf5ab6e5ac44bfc9b210158172022-05-21 11:56:242 days 11 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x8766748ec73c50043f57d9291b5491537faeab112.01 CLV
0xd859423777fbddc5c186ccb049357188025ca050228bfcaf5ab6e5ac44bfc9b210158172022-05-21 11:56:242 days 11 hrs ago 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c02.01 CLV
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV6Router

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at clvscan.com on 2022-04-12
*/

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-02-25
*/

/**
 *Submitted for verification at BscScan.com on 2022-01-28
*/

/**
 *Submitted for verification at snowtrace.io on 2022-01-28
*/

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

pragma solidity >=0.8.2;

interface ISushiswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

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

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

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

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

library SushiswapV2Library {
    using SafeMathSushiswap 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, 'SushiswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'SushiswapV2Library: 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(uint160(uint256(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'e18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303' // 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,) = ISushiswapV2Pair(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, 'SushiswapV2Library: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'SushiswapV2Library: 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, 'SushiswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: 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, 'SushiswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: 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, 'SushiswapV2Library: 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, 'SushiswapV2Library: 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);
        }
    }
}

// helper methods for interacting with ERC20 tokens and sending NATIVE that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint 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: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint 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: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint 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: TRANSFER_FROM_FAILED');
    }

    function safeTransferNative(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: NATIVE_TRANSFER_FAILED');
    }
}

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

interface AnyswapV1ERC20 {
    function mint(address to, uint256 amount) external returns (bool);
    function burn(address from, uint256 amount) external returns (bool);
    function setMinter(address _auth) external;
    function applyMinter() external;
    function revokeMinter(address _auth) external;
    function changeVault(address newVault) external returns (bool);
    function depositVault(uint amount, address to) external returns (uint);
    function withdrawVault(address from, uint amount, address to) external returns (uint);
    function underlying() external view returns (address);
    function deposit(uint amount, address to) external returns (uint);
    function withdraw(uint amount, address to) external returns (uint);
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyswapV6Router {
    using SafeERC20 for IERC20;
    using SafeMathSushiswap for uint;

    address public immutable factory;
    address public immutable wNATIVE;

    bool public enableSwapTrade;
    modifier swapTradeEnabled() {
        require(enableSwapTrade, 'AnyswapV6Router: SwapTrade disabled');
        _;
    }

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

    constructor(address _factory, address _wNATIVE, address _mpc) {
        _newMPC = _mpc;
        _newMPCEffectiveTime = block.timestamp;
        factory = _factory;
        wNATIVE = _wNATIVE;
    }

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

    address private _oldMPC;
    address private _newMPC;
    uint256 private _newMPCEffectiveTime;


    event LogChangeMPC(address indexed oldMPC, address indexed newMPC, uint indexed effectiveTime, uint chainID);
    event LogChangeRouter(address indexed oldRouter, address indexed newRouter, uint chainID);
    event LogAnySwapIn(bytes32 indexed txhash, address indexed token, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, string to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForTokens(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForNative(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);

    modifier onlyMPC() {
        require(msg.sender == mpc(), "AnyswapV3Router: FORBIDDEN");
        _;
    }

    function mpc() public view returns (address) {
        if (block.timestamp >= _newMPCEffectiveTime) {
            return _newMPC;
        }
        return _oldMPC;
    }

    function cID() public view returns (uint id) {
        assembly {id := chainid()}
    }

    function setEnableSwapTrade(bool enable) external onlyMPC {
        enableSwapTrade = enable;
    }

    function changeMPC(address newMPC) public onlyMPC returns (bool) {
        require(newMPC != address(0), "AnyswapV3Router: address(0x0)");
        _oldMPC = mpc();
        _newMPC = newMPC;
        _newMPCEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeMPC(_oldMPC, _newMPC, _newMPCEffectiveTime, cID());
        return true;
    }

    function changeVault(address token, address newVault) public onlyMPC returns (bool) {
        require(newVault != address(0), "AnyswapV3Router: address(0x0)");
        return AnyswapV1ERC20(token).changeVault(newVault);
    }

    function setMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).setMinter(_auth);
    }

    function applyMinter(address token) external onlyMPC {
        return AnyswapV1ERC20(token).applyMinter();
    }

    function revokeMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).revokeMinter(_auth);
    }

    function _anySwapOut(address from, address token, address to, uint amount, uint toChainID) internal {
        AnyswapV1ERC20(token).burn(from, amount);
        emit LogAnySwapOut(token, from, to, amount, cID(), toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to`
    function anySwapOut(address token, address to, uint amount, uint toChainID) external {
        _anySwapOut(msg.sender, token, to, amount, toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to` by minting with `underlying`
    function anySwapOutUnderlying(address token, address to, uint amount, uint toChainID) external {
        IERC20(AnyswapV1ERC20(token).underlying()).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, address to, uint toChainID) external payable {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    function anySwapOut(address[] calldata tokens, address[] calldata to, uint[] calldata amounts, uint[] calldata toChainIDs) external {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapOut(msg.sender, tokens[i], to[i], amounts[i], toChainIDs[i]);
        }
    }

    function anySwapOut(address token, string memory to, uint amount, uint toChainID) external {
        AnyswapV1ERC20(token).burn(msg.sender, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutUnderlying(address token, string memory to, uint amount, uint toChainID) external {
        IERC20(AnyswapV1ERC20(token).underlying()).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, string memory to, uint toChainID) external payable {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    function _anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) internal {
        AnyswapV1ERC20(token).mint(to, amount);
        emit LogAnySwapIn(txs, token, to, amount, fromChainID, cID());
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    // triggered by `anySwapOut`
    function anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying`
    function anySwapInUnderlying(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20(token).withdrawVault(to, amount, to);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying` if possible
    function anySwapInAuto(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20 _anyToken = AnyswapV1ERC20(token);
        address _underlying = _anyToken.underlying();
        if (_underlying != address(0) && IERC20(_underlying).balanceOf(token) >= amount) {
            if (_underlying == wNATIVE) {
                _anyToken.withdrawVault(to, amount, address(this));
                IwNATIVE(wNATIVE).withdraw(amount);
                TransferHelper.safeTransferNative(to, amount);
            } else {
                _anyToken.withdrawVault(to, amount, to);
            }
        }
    }

    function depositNative(address token, address to) external payable returns (uint) {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        AnyswapV1ERC20(token).depositVault(msg.value, to);
        return msg.value;
    }

    function withdrawNative(address token, uint amount, address to) external returns (uint) {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        AnyswapV1ERC20(token).withdrawVault(msg.sender, amount, address(this));
        IwNATIVE(wNATIVE).withdraw(amount);
        TransferHelper.safeTransferNative(to, amount);
        return amount;
    }

    // extracts mpc fee from bridge fees
    function anySwapFeeTo(address token, uint amount) external onlyMPC {
        address _mpc = mpc();
        AnyswapV1ERC20(token).mint(_mpc, amount);
        AnyswapV1ERC20(token).withdrawVault(_mpc, amount, _mpc);
    }

    function anySwapIn(bytes32[] calldata txs, address[] calldata tokens, address[] calldata to, uint256[] calldata amounts, uint[] calldata fromChainIDs) external onlyMPC {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapIn(txs[i], tokens[i], to[i], amounts[i], fromChainIDs[i]);
        }
    }

    // **** 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,) = SushiswapV2Library.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 ? SushiswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            ISushiswapV2Pair(SushiswapV2Library.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokensUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        AnyswapV1ERC20(path[0]).depositVault(amountIn, msg.sender);
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForTokens`
    function anySwapInExactTokensForTokens(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'SushiswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0], SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, to);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNative(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNativeUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        AnyswapV1ERC20(path[0]).depositVault(amountIn, msg.sender);
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForNative`
    function anySwapInExactTokensForNative(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        require(path[path.length - 1] == wNATIVE, 'AnyswapV3Router: INVALID_PATH');
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'AnyswapV3Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0],  SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, address(this));
        IwNATIVE(wNATIVE).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferNative(to, amounts[amounts.length - 1]);
    }

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

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

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

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

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_wNATIVE","type":"address"},{"internalType":"address","name":"_mpc","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"string","name":"to","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMPC","type":"address"},{"indexed":true,"internalType":"address","name":"newMPC","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"LogChangeMPC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":true,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"LogChangeRouter","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"anySwapFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"txs","type":"bytes32[]"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"fromChainIDs","type":"uint256[]"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInAuto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"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"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForNative","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"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"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"toChainIDs","type":"uint256[]"}],"name":"anySwapOut","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNative","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNativeUnderlying","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokens","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokensUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cID","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMPC","type":"address"}],"name":"changeMPC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"depositNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"enableSwapTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableSwapTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b506040516200445738038062004457833981016040819052620000349162000081565b600180546001600160a01b0319166001600160a01b03928316179055426002559182166080521660a052620000cb565b80516001600160a01b03811681146200007c57600080fd5b919050565b6000806000606084860312156200009757600080fd5b620000a28462000064565b9250620000b26020850162000064565b9150620000c26040850162000064565b90509250925092565b60805160a0516142c562000192600039600081816102230152818161055901528181610845015281816109050152818161125a0152818161144301528181611519015281816115cb0152818161165f01528181611afd01528181611baf01528181611c4301528181611d8b01528181611ec3015281816121690152818161221b01526122af01526000818161060b01528181610c5901528181610e2001528181610f38015281816113060152818161243d01528181612fe4015261303401526142c56000f3fe6080604052600436106102135760003560e01c8063825bb13c11610118578063ad615dec116100a0578063d8b9f6101161006f578063d8b9f6101461066d578063d9e35bb21461068d578063dcfb77b1146106ad578063edbdf5e2146106cd578063f75c2664146106ed57600080fd5b8063ad615dec146105d9578063c45a0155146105f9578063c604b0b81461062d578063d06ca61f1461064d57600080fd5b806387cc6e2f116100e757806387cc6e2f146105275780638fd903f51461054757806399a2f2d7146105935780639f122d6c146105a6578063a5e56571146105c657600080fd5b8063825bb13c146104a7578063832e9492146104c757806385f8c259146104e757806387bafe5f1461050757600080fd5b8063353cb3a81161019b578063540dd52c1161016a578063540dd52c146104215780635b7b018c1461043457806365782f56146104545780636a45397214610474578063701bb8911461049457600080fd5b8063353cb3a8146103975780633f88de89146103c1578063456862aa146103e157806352a397d51461040157600080fd5b80630bb57203116101e25780630bb57203146102ea5780631f00ca741461030a578063241dc2df1461033757806325121b76146103575780632fc1e7281461037757600080fd5b80630175b1c414610257578063049b4e7e14610277578063054d50d414610297578063085c6d5e146102ca57600080fd5b3661025257336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610250576102506136d7565b005b600080fd5b34801561026357600080fd5b50610250610272366004613702565b610702565b34801561028357600080fd5b5061025061029236600461380b565b6109f4565b3480156102a357600080fd5b506102b76102b236600461386b565b610abc565b6040519081526020015b60405180910390f35b3480156102d657600080fd5b506102506102e53660046138a5565b610ad1565b3480156102f657600080fd5b5061025061030536600461390e565b610b1c565b34801561031657600080fd5b5061032a61032536600461398b565b610c52565b6040516102c19190613a49565b34801561034357600080fd5b50610250610352366004613a8d565b610c88565b34801561036357600080fd5b50610250610372366004613ad3565b610c9b565b34801561038357600080fd5b5061032a610392366004613bc4565b610d9e565b3480156103a357600080fd5b506000546103b19060ff1681565b60405190151581526020016102c1565b3480156103cd57600080fd5b506102506103dc366004613702565b611019565b3480156103ed57600080fd5b506103b16103fc366004613c49565b6110d7565b34801561040d57600080fd5b5061032a61041c366004613bc4565b6111d3565b61025061042f366004613c82565b611517565b34801561044057600080fd5b506103b161044f366004613cdb565b611729565b34801561046057600080fd5b5061025061046f36600461390e565b611860565b34801561048057600080fd5b5061025061048f36600461390e565b611975565b6102b76104a2366004613c49565b611af9565b3480156104b357600080fd5b506102506104c2366004613702565b611d3b565b3480156104d357600080fd5b506102b76104e2366004613cf8565b611d87565b3480156104f357600080fd5b506102b761050236600461386b565b611f39565b34801561051357600080fd5b50610250610522366004613c49565b611f46565b34801561053357600080fd5b50610250610542366004613d3a565b611fd6565b34801561055357600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c1565b34801561059f57600080fd5b50466102b7565b3480156105b257600080fd5b506102506105c1366004613c49565b612101565b6102506105d4366004613d66565b612167565b3480156105e557600080fd5b506102b76105f436600461386b565b612383565b34801561060557600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561063957600080fd5b5061025061064836600461380b565b612390565b34801561065957600080fd5b5061032a61066836600461398b565b612436565b34801561067957600080fd5b5061025061068836600461390e565b612463565b34801561069957600080fd5b506102506106a8366004613cdb565b61256c565b3480156106b957600080fd5b506102506106c8366004613da7565b6125f6565b3480156106d957600080fd5b506102506106e8366004613a8d565b6126a7565b3480156106f957600080fd5b5061057b612743565b61070a612743565b6001600160a01b0316336001600160a01b0316146107435760405162461bcd60e51b815260040161073a90613e6b565b60405180910390fd5b6107508585858585612773565b60008490506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b99190613ea2565b90506001600160a01b0381161580159061083e57506040516370a0823160e01b81526001600160a01b0387811660048301528591908316906370a0823190602401602060405180830381865afa158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b9190613ebf565b10155b156109eb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316141561097857604051620e75bb60e21b81526001600160a01b038316906239d6ec906108ab90889088903090600401613ed8565b6020604051808303816000875af11580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190613ebf565b50604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561095157600080fd5b505af1158015610965573d6000803e3d6000fd5b50505050610973858561284c565b6109eb565b604051620e75bb60e21b81526001600160a01b038316906239d6ec906109a690889088908290600401613ed8565b6020604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190613ebf565b505b50505050505050565b610a6d338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613ea2565b6001600160a01b031692919061291d565b336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798585465b86604051610aae9493929190613f53565b60405180910390a350505050565b6000610ac9848484612977565b949350505050565b610ad9612743565b6001600160a01b0316336001600160a01b031614610b095760405162461bcd60e51b815260040161073a90613e6b565b6000805460ff1916911515919091179055565b60005460ff16610b3e5760405162461bcd60e51b815260040161073a90613f82565b8142811015610b5f5760405162461bcd60e51b815260040161073a90613fc5565b85856000818110610b7257610b72613ffc565b9050602002016020810190610b879190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af1158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190614012565b506001600160a01b038416337ffea6abdf4fd32f20966dff7619354cd82cd43dc78a3bee479f04c74dbfc585b388888c8c465b89604051610c409695949392919061402f565b60405180910390a35050505050505050565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612a45565b90505b92915050565b610c953385858585612bdb565b50505050565b610ca3612743565b6001600160a01b0316336001600160a01b031614610cd35760405162461bcd60e51b815260040161073a90613e6b565b60005b87811015610d9157610d7f8b8b83818110610cf357610cf3613ffc565b905060200201358a8a84818110610d0c57610d0c613ffc565b9050602002016020810190610d219190613cdb565b898985818110610d3357610d33613ffc565b9050602002016020810190610d489190613cdb565b888886818110610d5a57610d5a613ffc565b90506020020135878787818110610d7357610d73613ffc565b90506020020135612773565b80610d89816140af565b915050610cd6565b5050505050505050505050565b6060610da8612743565b6001600160a01b0316336001600160a01b031614610dd85760405162461bcd60e51b815260040161073a90613e6b565b60005460ff16610dfa5760405162461bcd60e51b815260040161073a90613f82565b8242811015610e1b5760405162461bcd60e51b815260040161073a90613fc5565b610e797f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b9150878260018451610e8b91906140ca565b81518110610e9b57610e9b613ffc565b60200260200101511015610f075760405162461bcd60e51b815260206004820152602d60248201527f5375736869737761705632526f757465723a20494e53554646494349454e545f60448201526c13d55514155517d05353d55395609a1b606482015260840161073a565b610fcd8a88886000818110610f1e57610f1e613ffc565b9050602002016020810190610f339190613cdb565b610fac7f00000000000000000000000000000000000000000000000000000000000000008b8b6000818110610f6a57610f6a613ffc565b9050602002016020810190610f7f9190613cdb565b8c8c6001818110610f9257610f92613ffc565b9050602002016020810190610fa79190613cdb565b612e28565b85600081518110610fbf57610fbf613ffc565b602002602001015187612773565b61100c828888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250612f01915050565b5098975050505050505050565b611021612743565b6001600160a01b0316336001600160a01b0316146110515760405162461bcd60e51b815260040161073a90613e6b565b61105e8585858585612773565b604051620e75bb60e21b81526001600160a01b038516906239d6ec9061108c90869086908290600401613ed8565b6020604051808303816000875af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf9190613ebf565b505050505050565b60006110e1612743565b6001600160a01b0316336001600160a01b0316146111115760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166111675760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6040516360e232a960e01b81526001600160a01b0383811660048301528416906360e232a9906024016020604051808303816000875af11580156111af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7f9190614012565b60606111dd612743565b6001600160a01b0316336001600160a01b03161461120d5760405162461bcd60e51b815260040161073a90613e6b565b60005460ff1661122f5760405162461bcd60e51b815260040161073a90613f82565b82428110156112505760405162461bcd60e51b815260040161073a90613fc5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687876112876001826140ca565b81811061129657611296613ffc565b90506020020160208101906112ab9190613cdb565b6001600160a01b0316146113015760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20494e56414c49445f50415448000000604482015260640161073a565b61135f7f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b915087826001845161137191906140ca565b8151811061138157611381613ffc565b602002602001015110156113eb5760405162461bcd60e51b815260206004820152602b60248201527f416e79737761705633526f757465723a20494e53554646494349454e545f4f5560448201526a1514155517d05353d5539560aa1b606482015260840161073a565b6114028a88886000818110610f1e57610f1e613ffc565b61144182888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612f01915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855161147f91906140ca565b8151811061148f5761148f613ffc565b60200260200101516040518263ffffffff1660e01b81526004016114b591815260200190565b600060405180830381600087803b1580156114cf57600080fd5b505af11580156114e3573d6000803e3d6000fd5b5050505061100c8583600185516114fa91906140ca565b8151811061150a5761150a613ffc565b602002602001015161284c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a39190613ea2565b6001600160a01b0316146115c95760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d09190614012565b6116dc576116dc6136d7565b336001600160a01b0384167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798434468660405161171c9493929190613f53565b60405180910390a3505050565b6000611733612743565b6001600160a01b0316336001600160a01b0316146117635760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166117b95760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6117c1612743565b60008054610100600160a81b0319166101006001600160a01b0393841602179055600180546001600160a01b031916918416919091179055611806426202a30061412b565b60028190556001546000546001600160a01b0391821691610100909104167fcda32bc39904597666dfa9f9c845714756e1ffffad55b52e0d344673a21981214660405190815260200160405180910390a45060015b919050565b60005460ff166118825760405162461bcd60e51b815260040161073a90613f82565b81428110156118a35760405162461bcd60e51b815260040161073a90613fc5565b858560008181106118b6576118b6613ffc565b90506020020160208101906118cb9190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190614012565b506001600160a01b038416337f278277e0209c347189add7bd92411973b5f6b8644f7ac62ea1be984ce993f8f488888c8c46610c2d565b60005460ff166119975760405162461bcd60e51b815260040161073a90613f82565b81428110156119b85760405162461bcd60e51b815260040161073a90613fc5565b611a4a33878760008181106119cf576119cf613ffc565b90506020020160208101906119e49190613cdb565b8a898960008181106119f8576119f8613ffc565b9050602002016020810190611a0d9190613cdb565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b85856000818110611a5d57611a5d613ffc565b9050602002016020810190611a729190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae59190613ebf565b50858560008181106118b6576118b6613ffc565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b879190613ea2565b6001600160a01b031614611bad5760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c0857600080fd5b505af1158015611c1c573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015611c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb49190614012565b611cc057611cc06136d7565b604051630bebbf4d60e41b81523460048201526001600160a01b03838116602483015284169063bebbf4d0906044016020604051808303816000875af1158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190613ebf565b50349392505050565b611d43612743565b6001600160a01b0316336001600160a01b031614611d735760405162461bcd60e51b815260040161073a90613e6b565b611d808585858585612773565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190613ea2565b6001600160a01b031614611e3b5760405162461bcd60e51b815260040161073a906140e1565b604051620e75bb60e21b81526001600160a01b038516906239d6ec90611e6990339087903090600401613ed8565b6020604051808303816000875af1158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190613ebf565b50604051632e1a7d4d60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015611f0f57600080fd5b505af1158015611f23573d6000803e3d6000fd5b50505050611f31828461284c565b509092915050565b6000610ac9848484613103565b611f4e612743565b6001600160a01b0316336001600160a01b031614611f7e5760405162461bcd60e51b815260040161073a90613e6b565b60405163cfbd488560e01b81526001600160a01b03828116600483015283169063cfbd4885906024015b600060405180830381600087803b158015611fc257600080fd5b505af11580156110cf573d6000803e3d6000fd5b611fde612743565b6001600160a01b0316336001600160a01b03161461200e5760405162461bcd60e51b815260040161073a90613e6b565b6000612018612743565b6040516340c10f1960e01b81526001600160a01b03808316600483015260248201859052919250908416906340c10f19906044016020604051808303816000875af115801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190614012565b50604051620e75bb60e21b81526001600160a01b038416906239d6ec906120be90849086908290600401613ed8565b6020604051808303816000875af11580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190613ebf565b612109612743565b6001600160a01b0316336001600160a01b0316146121395760405162461bcd60e51b815260040161073a90613e6b565b604051637e51dad560e11b81526001600160a01b03828116600483015283169063fca3b5aa90602401611fa8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f39190613ea2565b6001600160a01b0316146122195760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561227457600080fd5b505af1158015612288573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190614012565b61232c5761232c6136d7565b6001600160a01b0380831690339085167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a3446604080519283526020830191909152810186905260600160405180910390a4505050565b6000610ac98484846131cc565b604051632770a7eb60e21b8152336004820152602481018390526001600160a01b03851690639dc29fac906044016020604051808303816000875af11580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190614012565b50336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b79858546610a9d565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612cb2565b60005460ff166124855760405162461bcd60e51b815260040161073a90613f82565b81428110156124a65760405162461bcd60e51b815260040161073a90613fc5565b6124bd33878760008181106119cf576119cf613ffc565b858560008181106124d0576124d0613ffc565b90506020020160208101906124e59190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125589190613ebf565b5085856000818110610b7257610b72613ffc565b612574612743565b6001600160a01b0316336001600160a01b0316146125a45760405162461bcd60e51b815260040161073a90613e6b565b806001600160a01b0316630d707df86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125df57600080fd5b505af1158015611d80573d6000803e3d6000fd5b50565b60005b8781101561269c5761268a338a8a8481811061261757612617613ffc565b905060200201602081019061262c9190613cdb565b89898581811061263e5761263e613ffc565b90506020020160208101906126539190613cdb565b88888681811061266557612665613ffc565b9050602002013587878781811061267e5761267e613ffc565b90506020020135612bdb565b80612694816140af565b9150506125f9565b505050505050505050565b6126eb338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b6001600160a01b0380841690339086167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a8546604080519283526020830191909152810186905260600160405180910390a450505050565b6000600254421061275e57506001546001600160a01b031690565b5060005461010090046001600160a01b031690565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528516906340c10f19906044016020604051808303816000875af11580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190614012565b50826001600160a01b0316846001600160a01b0316867faac9ce45fe3adf5143598c4f18a369591a20a3384aedaf1b525d29127e1fcd5585856128264690565b604080519384526020840192909252908201526060015b60405180910390a45050505050565b604080516000808252602082019092526001600160a01b0384169083906040516128769190614143565b60006040518083038185875af1925050503d80600081146128b3576040519150601f19603f3d011682016040523d82523d6000602084013e6128b8565b606091505b50509050806129185760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201526511905253115160d21b606482015260840161073a565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c9590859061325c565b60008084116129cc5760405162461bcd60e51b815260206004820152602d602482015260008051602061427083398151915260448201526c17d25394155517d05353d55395609a1b606482015260840161073a565b6000831180156129dc5750600082115b6129f85760405162461bcd60e51b815260040161073a9061415f565b6000612a06856103e56133e3565b90506000612a1482856133e3565b90506000612a2e83612a28886103e86133e3565b90613447565b9050612a3a81836141ad565b979650505050505050565b6060600282511015612a995760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612ab357612ab3613754565b604051908082528060200260200182016040528015612adc578160200160208202803683370190505b509050828160018351612aef91906140ca565b81518110612aff57612aff613ffc565b602002602001018181525050600060018351612b1b91906140ca565b90505b8015612bd357600080612b6e8786612b376001876140ca565b81518110612b4757612b47613ffc565b6020026020010151878681518110612b6157612b61613ffc565b6020026020010151613491565b91509150612b96848481518110612b8757612b87613ffc565b60200260200101518383613103565b84612ba26001866140ca565b81518110612bb257612bb2613ffc565b60200260200101818152505050508080612bcb906141cf565b915050612b1e565b509392505050565b604051632770a7eb60e21b81526001600160a01b03868116600483015260248201849052851690639dc29fac906044016020604051808303816000875af1158015612c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4e9190614012565b50826001600160a01b0316856001600160a01b0316856001600160a01b03167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a85612c964690565b604080519283526020830191909152810186905260600161283d565b6060600282511015612d065760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612d2057612d20613754565b604051908082528060200260200182016040528015612d49578160200160208202803683370190505b5090508281600081518110612d6057612d60613ffc565b60200260200101818152505060005b60018351612d7d91906140ca565b811015612bd357600080612dc387868581518110612d9d57612d9d613ffc565b602002602001015187866001612db3919061412b565b81518110612b6157612b61613ffc565b91509150612deb848481518110612ddc57612ddc613ffc565b60200260200101518383612977565b84612df785600161412b565b81518110612e0757612e07613ffc565b60200260200101818152505050508080612e20906140af565b915050612d6f565b6000806000612e37858561355b565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001612edf9291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527fe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b60005b60018351612f1291906140ca565b811015610c9557600080848381518110612f2e57612f2e613ffc565b602002602001015185846001612f44919061412b565b81518110612f5457612f54613ffc565b6020026020010151915091506000612f6c838361355b565b509050600087612f7d86600161412b565b81518110612f8d57612f8d613ffc565b60200260200101519050600080836001600160a01b0316866001600160a01b031614612fbb57826000612fbf565b6000835b91509150600060028a51612fd391906140ca565b8810612fdf578861302d565b61302d7f0000000000000000000000000000000000000000000000000000000000000000878c6130108c600261412b565b8151811061302057613020613ffc565b6020026020010151612e28565b905061305a7f00000000000000000000000000000000000000000000000000000000000000008888612e28565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613097576020820181803683370190505b506040518563ffffffff1660e01b81526004016130b794939291906141e6565b600060405180830381600087803b1580156130d157600080fd5b505af11580156130e5573d6000803e3d6000fd5b505050505050505050505080806130fb906140af565b915050612f04565b60008084116131595760405162461bcd60e51b815260206004820152602e602482015260008051602061427083398151915260448201526d17d3d55514155517d05353d5539560921b606482015260840161073a565b6000831180156131695750600082115b6131855760405162461bcd60e51b815260040161073a9061415f565b600061319d6103e861319786886133e3565b906133e3565b905060006131b16103e56131978689613655565b90506131c26001612a2883856141ad565b9695505050505050565b600080841161321b5760405162461bcd60e51b8152602060048201526027602482015260008051602061427083398151915260448201526617d05353d5539560ca1b606482015260840161073a565b60008311801561322b5750600082115b6132475760405162461bcd60e51b815260040161073a9061415f565b8261325285846133e3565b610ac991906141ad565b61326e826001600160a01b03166136a0565b6132ba5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161073a565b600080836001600160a01b0316836040516132d59190614143565b6000604051808303816000865af19150503d8060008114613312576040519150601f19603f3d011682016040523d82523d6000602084013e613317565b606091505b5091509150816133695760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161073a565b805115610c9557808060200190518101906133849190614012565b610c955760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161073a565b60008115806134045750508082028282828161340157613401614197565b04145b610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161073a565b80820182811015610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161073a565b60008060006134a0858561355b565b5090506000806134b1888888612e28565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156134ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613512919061422a565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b03161461354957808261354c565b81815b90999098509650505050505050565b600080826001600160a01b0316846001600160a01b031614156135d05760405162461bcd60e51b815260206004820152602760248201527f53757368697377617056324c6962726172793a204944454e544943414c5f41446044820152664452455353455360c81b606482015260840161073a565b826001600160a01b0316846001600160a01b0316106135f05782846135f3565b83835b90925090506001600160a01b03821661364e5760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a205a45524f5f41444452455353604482015260640161073a565b9250929050565b80820382811115610c825760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161073a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610ac95750141592915050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03811681146125f357600080fd5b600080600080600060a0868803121561371a57600080fd5b85359450602086013561372c816136ed565b9350604086013561373c816136ed565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561379357613793613754565b604052919050565b600082601f8301126137ac57600080fd5b813567ffffffffffffffff8111156137c6576137c6613754565b6137d9601f8201601f191660200161376a565b8181528460208386010111156137ee57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561382157600080fd5b843561382c816136ed565b9350602085013567ffffffffffffffff81111561384857600080fd5b6138548782880161379b565b949794965050505060408301359260600135919050565b60008060006060848603121561388057600080fd5b505081359360208301359350604090920135919050565b80151581146125f357600080fd5b6000602082840312156138b757600080fd5b81356138c281613897565b9392505050565b60008083601f8401126138db57600080fd5b50813567ffffffffffffffff8111156138f357600080fd5b6020830191508360208260051b850101111561364e57600080fd5b600080600080600080600060c0888a03121561392957600080fd5b8735965060208801359550604088013567ffffffffffffffff81111561394e57600080fd5b61395a8a828b016138c9565b909650945050606088013561396e816136ed565b969995985093969295946080840135945060a09093013592915050565b6000806040838503121561399e57600080fd5b8235915060208084013567ffffffffffffffff808211156139be57600080fd5b818601915086601f8301126139d257600080fd5b8135818111156139e4576139e4613754565b8060051b91506139f584830161376a565b8181529183018401918481019089841115613a0f57600080fd5b938501935b83851015613a395784359250613a29836136ed565b8282529385019390850190613a14565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613a8157835183529284019291840191600101613a65565b50909695505050505050565b60008060008060808587031215613aa357600080fd5b8435613aae816136ed565b93506020850135613abe816136ed565b93969395505050506040820135916060013590565b60008060008060008060008060008060a08b8d031215613af257600080fd5b8a3567ffffffffffffffff80821115613b0a57600080fd5b613b168e838f016138c9565b909c509a5060208d0135915080821115613b2f57600080fd5b613b3b8e838f016138c9565b909a50985060408d0135915080821115613b5457600080fd5b613b608e838f016138c9565b909850965060608d0135915080821115613b7957600080fd5b613b858e838f016138c9565b909650945060808d0135915080821115613b9e57600080fd5b50613bab8d828e016138c9565b915080935050809150509295989b9194979a5092959850565b60008060008060008060008060e0898b031215613be057600080fd5b883597506020890135965060408901359550606089013567ffffffffffffffff811115613c0c57600080fd5b613c188b828c016138c9565b9096509450506080890135613c2c816136ed565b979a969950949793969295929450505060a08201359160c0013590565b60008060408385031215613c5c57600080fd5b8235613c67816136ed565b91506020830135613c77816136ed565b809150509250929050565b600080600060608486031215613c9757600080fd5b8335613ca2816136ed565b9250602084013567ffffffffffffffff811115613cbe57600080fd5b613cca8682870161379b565b925050604084013590509250925092565b600060208284031215613ced57600080fd5b81356138c2816136ed565b600080600060608486031215613d0d57600080fd5b8335613d18816136ed565b9250602084013591506040840135613d2f816136ed565b809150509250925092565b60008060408385031215613d4d57600080fd5b8235613d58816136ed565b946020939093013593505050565b600080600060608486031215613d7b57600080fd5b8335613d86816136ed565b92506020840135613d96816136ed565b929592945050506040919091013590565b6000806000806000806000806080898b031215613dc357600080fd5b883567ffffffffffffffff80821115613ddb57600080fd5b613de78c838d016138c9565b909a50985060208b0135915080821115613e0057600080fd5b613e0c8c838d016138c9565b909850965060408b0135915080821115613e2557600080fd5b613e318c838d016138c9565b909650945060608b0135915080821115613e4a57600080fd5b50613e578b828c016138c9565b999c989b5096995094979396929594505050565b6020808252601a908201527f416e79737761705633526f757465723a20464f5242494444454e000000000000604082015260600190565b600060208284031215613eb457600080fd5b81516138c2816136ed565b600060208284031215613ed157600080fd5b5051919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b60005b83811015613f16578181015183820152602001613efe565b83811115610c955750506000910152565b60008151808452613f3f816020860160208601613efb565b601f01601f19169290920160200192915050565b608081526000613f666080830187613f27565b6020830195909552506040810192909252606090910152919050565b60208082526023908201527f416e79737761705636526f757465723a205377617054726164652064697361626040820152621b195960ea1b606082015260800190565b60208082526018908201527f416e79737761705633526f757465723a20455850495245440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561402457600080fd5b81516138c281613897565b60a0808252810186905260008760c08301825b89811015614072578235614055816136ed565b6001600160a01b0316825260209283019290910190600101614042565b50602084019790975250506040810193909352606083019190915260809091015292915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156140c3576140c3614099565b5060010190565b6000828210156140dc576140dc614099565b500390565b6020808252602a908201527f416e79737761705633526f757465723a20756e6465726c79696e67206973206e6040820152696f7420774e415449564560b01b606082015260800190565b6000821982111561413e5761413e614099565b500190565b60008251614155818460208701613efb565b9190910192915050565b6020808252602a908201526000805160206142708339815191526040820152695f4c495155494449545960b01b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826141ca57634e487b7160e01b600052601260045260246000fd5b500490565b6000816141de576141de614099565b506000190190565b84815283602082015260018060a01b03831660408201526080606082015260006131c26080830184613f27565b80516001600160701b038116811461185b57600080fd5b60008060006060848603121561423f57600080fd5b61424884614213565b925061425660208501614213565b9150604084015163ffffffff81168114613d2f57600080fdfe53757368697377617056324c6962726172793a20494e53554646494349454e54a2646970667358221220c17babedbab069763375fabccc1245cac6dcebfc453595e3a48e4d855008db3364736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001376c97c5c512d2d6f9173a9a3a016b6140b4536000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c

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

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001376c97c5c512d2d6f9173a9a3a016b6140b4536000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c

-----Decoded View---------------
Arg [0] : _factory (address): 0x0000000000000000000000000000000000000000
Arg [1] : _wNATIVE (address): 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536
Arg [2] : _mpc (address): 0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000001376c97c5c512d2d6f9173a9a3a016b6140b4536
Arg [2] : 000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c


Deployed ByteCode Sourcemap

10670:15628:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11409:10;-1:-1:-1;;;;;11423:7:0;11409:21;;11402:29;;;;:::i;:::-;10670:15628;;;;;17707:718;;;;;;;;;;-1:-1:-1;17707:718:0;;;;;:::i;:::-;;:::i;15925:284::-;;;;;;;;;;-1:-1:-1;15925:284:0;;;;;:::i;:::-;;:::i;25306:246::-;;;;;;;;;;-1:-1:-1;25306:246:0;;;;;:::i;:::-;;:::i;:::-;;;2895:25:1;;;2883:2;2868:18;25306:246:0;;;;;;;;12967:101;;;;;;;;;;-1:-1:-1;12967:101:0;;;;;:::i;:::-;;:::i;20816:433::-;;;;;;;;;;-1:-1:-1;20816:433:0;;;;;:::i;:::-;;:::i;26058:237::-;;;;;;;;;;-1:-1:-1;26058:237:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14408:157::-;;;;;;;;;;-1:-1:-1;14408:157:0;;;;;:::i;:::-;;:::i;19542:319::-;;;;;;;;;;-1:-1:-1;19542:319:0;;;;;:::i;:::-;;:::i;22110:665::-;;;;;;;;;;-1:-1:-1;22110:665:0;;;;;:::i;:::-;;:::i;10856:27::-;;;;;;;;;;-1:-1:-1;10856:27:0;;;;;;;;;;;9596:14:1;;9589:22;9571:41;;9559:2;9544:18;10856:27:0;9431:187:1;17337:245:0;;;;;;;;;;-1:-1:-1;17337:245:0;;;;;:::i;:::-;;:::i;13441:228::-;;;;;;;;;;-1:-1:-1;13441:228:0;;;;;:::i;:::-;;:::i;24170:903::-;;;;;;;;;;-1:-1:-1;24170:903:0;;;;;:::i;:::-;;:::i;16217:411::-;;;;;;:::i;:::-;;:::i;13076:357::-;;;;;;;;;;-1:-1:-1;13076:357:0;;;;;:::i;:::-;;:::i;22876:433::-;;;;;;;;;;-1:-1:-1;22876:433:0;;;;;:::i;:::-;;:::i;23410:615::-;;;;;;;;;;-1:-1:-1;23410:615:0;;;;;:::i;:::-;;:::i;18433:407::-;;;;;;:::i;:::-;;:::i;17051:173::-;;;;;;;;;;-1:-1:-1;17051:173:0;;;;;:::i;:::-;;:::i;18848:413::-;;;;;;;;;;-1:-1:-1;18848:413:0;;;;;:::i;:::-;;:::i;25560:245::-;;;;;;;;;;-1:-1:-1;25560:245:0;;;;;:::i;:::-;;:::i;13937:136::-;;;;;;;;;;-1:-1:-1;13937:136:0;;;;;:::i;:::-;;:::i;19311:223::-;;;;;;;;;;-1:-1:-1;19311:223:0;;;;;:::i;:::-;;:::i;10815:32::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11743:32:1;;;11725:51;;11713:2;11698:18;10815:32:0;11579:203:1;12870:89:0;;;;;;;;;;-1:-1:-1;12942:9:0;12870:89;;13677:130;;;;;;;;;;-1:-1:-1;13677:130:0;;;;;:::i;:::-;;:::i;14976:405::-;;;;;;:::i;:::-;;:::i;25117:181::-;;;;;;;;;;-1:-1:-1;25117:181:0;;;;;:::i;:::-;;:::i;10776:32::-;;;;;;;;;;;;;;;15683:234;;;;;;;;;;-1:-1:-1;15683:234:0;;;;;:::i;:::-;;:::i;25813:237::-;;;;;;;;;;-1:-1:-1;25813:237:0;;;;;:::i;:::-;;:::i;21350:615::-;;;;;;;;;;-1:-1:-1;21350:615:0;;;;;:::i;:::-;;:::i;13815:114::-;;;;;;;;;;-1:-1:-1;13815:114:0;;;;;:::i;:::-;;:::i;15389:286::-;;;;;;;;;;-1:-1:-1;15389:286:0;;;;;:::i;:::-;;:::i;14690:278::-;;;;;;;;;;-1:-1:-1;14690:278:0;;;;;:::i;:::-;;:::i;12688:174::-;;;;;;;;;;;;;:::i;17707:718::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;;;;;;;;;17829:47:::1;17840:3;17845:5;17852:2;17856:6;17864:11;17829:10;:47::i;:::-;17887:24;17929:5;17887:48;;17946:19;17968:9;-1:-1:-1::0;;;;;17968:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17946:44:::0;-1:-1:-1;;;;;;18005:25:0;::::1;::::0;;::::1;::::0;:75:::1;;-1:-1:-1::0;18034:36:0::1;::::0;-1:-1:-1;;;18034:36:0;;-1:-1:-1;;;;;11743:32:1;;;18034:36:0::1;::::0;::::1;11725:51:1::0;18074:6:0;;18034:29;;::::1;::::0;::::1;::::0;11698:18:1;;18034:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;18005:75;18001:417;;;18116:7;-1:-1:-1::0;;;;;18101:22:0::1;:11;-1:-1:-1::0;;;;;18101:22:0::1;;18097:310;;;18144:50;::::0;-1:-1:-1;;;18144:50:0;;-1:-1:-1;;;;;18144:23:0;::::1;::::0;::::1;::::0;:50:::1;::::0;18168:2;;18172:6;;18188:4:::1;::::0;18144:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18213:34:0::1;::::0;-1:-1:-1;;;18213:34:0;;::::1;::::0;::::1;2895:25:1::0;;;18222:7:0::1;-1:-1:-1::0;;;;;18213:26:0::1;::::0;::::1;::::0;2868:18:1;;18213:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18266:45;18300:2;18304:6;18266:33;:45::i;:::-;18097:310;;;18352:39;::::0;-1:-1:-1;;;18352:39:0;;-1:-1:-1;;;;;18352:23:0;::::1;::::0;::::1;::::0;:39:::1;::::0;18376:2;;18380:6;;18376:2;;18352:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18097:310;17818:607;;17707:718:::0;;;;;:::o;15925:284::-;16037:86;16097:10;16109:5;16116:6;16059:5;-1:-1:-1;;;;;16044:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16037:59:0;;:86;;:59;:86::i;:::-;16160:10;-1:-1:-1;;;;;16139:62:0;;;16172:2;16176:6;12942:9;16184:5;16191:9;16139:62;;;;;;;;;:::i;:::-;;;;;;;;15925:284;;;;:::o;25306:246::-;25441:14;25480:64;25512:8;25522:9;25533:10;25480:31;:64::i;:::-;25473:71;25306:246;-1:-1:-1;;;;25306:246:0:o;12967:101::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;13036:15:::1;:24:::0;;-1:-1:-1;;13036:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12967:101::o;20816:433::-;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;21060:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;21096:4:::2;;21101:1;21096:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21081:50;::::0;-1:-1:-1;;;21081:50:0;;21110:10:::2;21081:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;21081:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;21081:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;21147:94:0;::::2;21184:10;21147:94;21178:4:::0;;21200:8;21210:12;12942:9;21224:5:::2;21231:9;21147:94;;;;;;;;;;;:::i;:::-;;;;;;;;11003:1:::1;20816:433:::0;;;;;;;:::o;26058:237::-;26184:21;26230:57;26262:7;26271:9;26282:4;26230:31;:57::i;:::-;26223:64;;26058:237;;;;;:::o;14408:157::-;14504:53;14516:10;14528:5;14535:2;14539:6;14547:9;14504:11;:53::i;:::-;14408:157;;;;:::o;19542:319::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;19726:6:::1;19721:133;19738:17:::0;;::::1;19721:133;;;19777:65;19788:3;;19792:1;19788:6;;;;;;;:::i;:::-;;;;;;;19796;;19803:1;19796:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19807:2;;19810:1;19807:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19814:7;;19822:1;19814:10;;;;;;;:::i;:::-;;;;;;;19826:12;;19839:1;19826:15;;;;;;;:::i;:::-;;;;;;;19777:10;:65::i;:::-;19757:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19721:133;;;;19542:319:::0;;;;;;;;;;:::o;22110:665::-;22404:21;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;10937:15:::1;::::0;::::1;;10929:63;;;;-1:-1:-1::0;;;10929:63:0::1;;;;;;;:::i;:::-;22385:8:::2;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::2;;;;;;;:::i;:::-;22448:57:::3;22481:7;22490:8;22500:4;;22448:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22448:32:0::3;::::0;-1:-1:-1;;;22448:57:0:i:3;:::-;22438:67;;22555:12;22524:7;22549:1;22532:7;:14;:18;;;;:::i;:::-;22524:27;;;;;;;;:::i;:::-;;;;;;;:43;;22516:101;;;::::0;-1:-1:-1;;;22516:101:0;;18831:2:1;22516:101:0::3;::::0;::::3;18813:21:1::0;18870:2;18850:18;;;18843:30;18909:34;18889:18;;;18882:62;-1:-1:-1;;;18960:18:1;;;18953:43;19013:19;;22516:101:0::3;18629:409:1::0;22516:101:0::3;22628:104;22639:3;22644:4;;22649:1;22644:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22653:53;22680:7;22689:4;;22694:1;22689:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22698:4;;22703:1;22698:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22653:26;:53::i;:::-;22708:7;22716:1;22708:10;;;;;;;;:::i;:::-;;;;;;;22720:11;22628:10;:104::i;:::-;22743:24;22749:7;22758:4;;22743:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22764:2:0;;-1:-1:-1;22743:5:0::3;::::0;-1:-1:-1;;22743:24:0:i:3;:::-;11003:1:::2;22110:665:::0;;;;;;;;;;:::o;17337:245::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;17465:47:::1;17476:3;17481:5;17488:2;17492:6;17500:11;17465:10;:47::i;:::-;17523:51;::::0;-1:-1:-1;;;17523:51:0;;-1:-1:-1;;;;;17523:35:0;::::1;::::0;::::1;::::0;:51:::1;::::0;17559:2;;17563:6;;17559:2;;17523:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17337:245:::0;;;;;:::o;13441:228::-;13519:4;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13544:22:0;::::1;13536:64;;;::::0;-1:-1:-1;;;13536:64:0;;19245:2:1;13536:64:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;13536:64:0::1;19043:353:1::0;13536:64:0::1;13618:43;::::0;-1:-1:-1;;;13618:43:0;;-1:-1:-1;;;;;11743:32:1;;;13618:43:0::1;::::0;::::1;11725:51:1::0;13618:33:0;::::1;::::0;::::1;::::0;11698:18:1;;13618:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24170:903::-:0;24464:21;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;10937:15:::1;::::0;::::1;;10929:63;;;;-1:-1:-1::0;;;10929:63:0::1;;;;;;;:::i;:::-;24445:8:::2;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24531:7:0::3;24506:32;:4:::0;;24511:15:::3;24525:1;24506:4:::0;24511:15:::3;:::i;:::-;24506:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24506:32:0::3;;24498:74;;;::::0;-1:-1:-1;;;24498:74:0;;19603:2:1;24498:74:0::3;::::0;::::3;19585:21:1::0;19642:2;19622:18;;;19615:30;19681:31;19661:18;;;19654:59;19730:18;;24498:74:0::3;19401:353:1::0;24498:74:0::3;24593:57;24626:7;24635:8;24645:4;;24593:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24593:32:0::3;::::0;-1:-1:-1;;;24593:57:0:i:3;:::-;24583:67;;24700:12;24669:7;24694:1;24677:7;:14;:18;;;;:::i;:::-;24669:27;;;;;;;;:::i;:::-;;;;;;;:43;;24661:99;;;::::0;-1:-1:-1;;;24661:99:0;;19961:2:1;24661:99:0::3;::::0;::::3;19943:21:1::0;20000:2;19980:18;;;19973:30;20039:34;20019:18;;;20012:62;-1:-1:-1;;;20090:18:1;;;20083:41;20141:19;;24661:99:0::3;19759:407:1::0;24661:99:0::3;24771:105;24782:3;24787:4;;24792:1;24787:7;;;;;;;:::i;24771:105::-;24887:35;24893:7;24902:4;;24887:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24916:4:0::3;::::0;-1:-1:-1;24887:5:0::3;::::0;-1:-1:-1;;24887:35:0:i:3;:::-;24942:7;-1:-1:-1::0;;;;;24933:26:0::3;;24960:7;24985:1;24968:7;:14;:18;;;;:::i;:::-;24960:27;;;;;;;;:::i;:::-;;;;;;;24933:55;;;;;;;;;;;;;2895:25:1::0;;2883:2;2868:18;;2749:177;24933:55:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;24999:66;25033:2;25037:7;25062:1;25045:7;:14;:18;;;;:::i;:::-;25037:27;;;;;;;;:::i;:::-;;;;;;;24999:33;:66::i;16217:411::-:0;16366:7;-1:-1:-1;;;;;16328:45:0;16343:5;-1:-1:-1;;;;;16328:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16328:45:0;;16320:100;;;;-1:-1:-1;;;16320:100:0;;;;;;;:::i;:::-;16440:7;-1:-1:-1;;;;;16431:25:0;;16464:9;16431:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16494:44:0;;-1:-1:-1;;;16494:44:0;;-1:-1:-1;;;;;16884:32:1;;;16494:44:0;;;16866:51:1;16528:9:0;16933:18:1;;;16926:34;16503:7:0;16494:26;;-1:-1:-1;16494:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;16494:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16487:52;;;;:::i;:::-;16576:10;-1:-1:-1;;;;;16555:65:0;;;16588:2;16592:9;12942;16610;16555:65;;;;;;;;;:::i;:::-;;;;;;;;16217:411;;;:::o;13076:357::-;13135:4;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13160:20:0;::::1;13152:62;;;::::0;-1:-1:-1;;;13152:62:0;;19245:2:1;13152:62:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;13152:62:0::1;19043:353:1::0;13152:62:0::1;13235:5;:3;:5::i;:::-;13225:7;:15:::0;;-1:-1:-1;;;;;;13225:15:0::1;;-1:-1:-1::0;;;;;13225:15:0;;::::1;;;::::0;;-1:-1:-1;13251:16:0;;-1:-1:-1;;;;;;13251:16:0::1;::::0;;::::1;::::0;;;::::1;::::0;;13301:27:::1;:15;13319:9;13301:27;:::i;:::-;13278:20;:50:::0;;;13366:7:::1;::::0;::::1;13357::::0;-1:-1:-1;;;;;13366:7:0;;::::1;::::0;::::1;13357::::0;;::::1;;13344:59;12942:9:::0;13344:59:::1;::::0;2895:25:1;;;2883:2;2868:18;13344:59:0::1;;;;;;;-1:-1:-1::0;13421:4:0::1;12671:1;13076:357:::0;;;:::o;22876:433::-;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;23120:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;23156:4:::2;;23161:1;23156:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23141:50;::::0;-1:-1:-1;;;23141:50:0;;23170:10:::2;23141:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;23141:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;23141:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;23207:94:0;::::2;23244:10;23207:94;23238:4:::0;;23260:8;23270:12;12942:9;23284:5:::2;12870:89:::0;23410:615;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;23664:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;23685:92:::2;23747:10;23759:4;;23764:1;23759:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23768:8;23707:4;;23712:1;23707:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23692:34:0::2;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;23685:92;23803:4;;23808:1;23803:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23788:58;::::0;-1:-1:-1;;;23788:58:0;;::::2;::::0;::::2;20889:25:1::0;;;23835:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;23788:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;23788:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23872:4;;23877:1;23872:7;;;;;;;:::i;18433:407::-:0;18509:4;18572:7;-1:-1:-1;;;;;18534:45:0;18549:5;-1:-1:-1;;;;;18534:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18534:45:0;;18526:100;;;;-1:-1:-1;;;18526:100:0;;;;;;;:::i;:::-;18646:7;-1:-1:-1;;;;;18637:25:0;;18670:9;18637:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18700:44:0;;-1:-1:-1;;;18700:44:0;;-1:-1:-1;;;;;16884:32:1;;;18700:44:0;;;16866:51:1;18734:9:0;16933:18:1;;;16926:34;18709:7:0;18700:26;;-1:-1:-1;18700:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;18700:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18693:52;;;;:::i;:::-;18756:49;;-1:-1:-1;;;18756:49:0;;18791:9;18756:49;;;20889:25:1;-1:-1:-1;;;;;20950:32:1;;;20930:18;;;20923:60;18756:34:0;;;;;20862:18:1;;18756:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18823:9:0;;18433:407;-1:-1:-1;;;18433:407:0:o;17051:173::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;17169:47:::1;17180:3;17185:5;17192:2;17196:6;17204:11;17169:10;:47::i;:::-;17051:173:::0;;;;;:::o;18848:413::-;18930:4;18993:7;-1:-1:-1;;;;;18955:45:0;18970:5;-1:-1:-1;;;;;18955:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18955:45:0;;18947:100;;;;-1:-1:-1;;;18947:100:0;;;;;;;:::i;:::-;19058:70;;-1:-1:-1;;;19058:70:0;;-1:-1:-1;;;;;19058:35:0;;;;;:70;;19094:10;;19106:6;;19122:4;;19058:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19139:34:0;;-1:-1:-1;;;19139:34:0;;;;;2895:25:1;;;19148:7:0;-1:-1:-1;;;;;19139:26:0;;;;2868:18:1;;19139:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19184:45;19218:2;19222:6;19184:33;:45::i;:::-;-1:-1:-1;19247:6:0;;18848:413;-1:-1:-1;;18848:413:0:o;25560:245::-;25695:13;25733:64;25764:9;25775;25786:10;25733:30;:64::i;13937:136::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;14024:41:::1;::::0;-1:-1:-1;;;14024:41:0;;-1:-1:-1;;;;;11743:32:1;;;14024:41:0::1;::::0;::::1;11725:51:1::0;14024:34:0;::::1;::::0;::::1;::::0;11698:18:1;;14024:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;19311:223:::0;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;19389:12:::1;19404:5;:3;:5::i;:::-;19420:40;::::0;-1:-1:-1;;;19420:40:0;;-1:-1:-1;;;;;16884:32:1;;;19420:40:0::1;::::0;::::1;16866:51:1::0;16933:18;;;16926:34;;;19389:20:0;;-1:-1:-1;19420:26:0;;::::1;::::0;::::1;::::0;16839:18:1;;19420:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19471:55:0::1;::::0;-1:-1:-1;;;19471:55:0;;-1:-1:-1;;;;;19471:35:0;::::1;::::0;::::1;::::0;:55:::1;::::0;19507:4;;19513:6;;19507:4;;19471:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13677:130::-:0;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;13761:38:::1;::::0;-1:-1:-1;;;13761:38:0;;-1:-1:-1;;;;;11743:32:1;;;13761:38:0::1;::::0;::::1;11725:51:1::0;13761:31:0;::::1;::::0;::::1;::::0;11698:18:1;;13761:38:0::1;11579:203:1::0;14976:405:0;15119:7;-1:-1:-1;;;;;15081:45:0;15096:5;-1:-1:-1;;;;;15081:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15081:45:0;;15073:100;;;;-1:-1:-1;;;15073:100:0;;;;;;;:::i;:::-;15193:7;-1:-1:-1;;;;;15184:25:0;;15217:9;15184:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15247:44:0;;-1:-1:-1;;;15247:44:0;;-1:-1:-1;;;;;16884:32:1;;;15247:44:0;;;16866:51:1;15281:9:0;16933:18:1;;;16926:34;15256:7:0;15247:26;;-1:-1:-1;15247:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;15247:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15240:52;;;;:::i;:::-;-1:-1:-1;;;;;15308:65:0;;;;15329:10;;15308:65;;;15345:9;12942;15308:65;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;15308:65:0;;;;;;;14976:405;;;:::o;25117:181::-;25205:12;25237:53;25262:7;25271:8;25281;25237:24;:53::i;15683:234::-;15785:46;;-1:-1:-1;;;15785:46:0;;15812:10;15785:46;;;16866:51:1;16933:18;;;16926:34;;;-1:-1:-1;;;;;15785:26:0;;;;;16839:18:1;;15785:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15868:10:0;-1:-1:-1;;;;;15847:62:0;;;15880:2;15884:6;12942:9;15892:5;12870:89;25813:237;25939:21;25985:57;26018:7;26027:8;26037:4;25985:32;:57::i;21350:615::-;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;21604:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;21625:92:::2;21687:10;21699:4;;21704:1;21699:7;;;;;;;:::i;21625:92::-;21743:4;;21748:1;21743:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21728:58;::::0;-1:-1:-1;;;21728:58:0;;::::2;::::0;::::2;20889:25:1::0;;;21775:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;21728:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;21728:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21812:4;;21817:1;21812:7;;;;;;;:::i;13815:114::-:0;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;13901:5:::1;-1:-1:-1::0;;;;;13886:33:0::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;12671:1;13815:114:::0;:::o;15389:286::-;15537:6;15532:136;15549:17;;;15532:136;;;15588:68;15600:10;15612:6;;15619:1;15612:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15623:2;;15626:1;15623:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15630:7;;15638:1;15630:10;;;;;;;:::i;:::-;;;;;;;15642;;15653:1;15642:13;;;;;;;:::i;:::-;;;;;;;15588:11;:68::i;:::-;15568:3;;;;:::i;:::-;;;;15532:136;;;;15389:286;;;;;;;;:::o;14690:278::-;14796:86;14856:10;14868:5;14875:6;14818:5;-1:-1:-1;;;;;14803:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14796:86;-1:-1:-1;;;;;14898:62:0;;;;14919:10;;14898:62;;;14935:6;12942:9;14898:62;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14898:62:0;;;;;;;14690:278;;;;:::o;12688:174::-;12724:7;12767:20;;12748:15;:39;12744:86;;-1:-1:-1;12811:7:0;;-1:-1:-1;;;;;12811:7:0;;12688:174::o;12744:86::-;-1:-1:-1;12847:7:0;;;;;-1:-1:-1;;;;;12847:7:0;;12688:174::o;16708:229::-;16819:38;;-1:-1:-1;;;16819:38:0;;-1:-1:-1;;;;;16884:32:1;;;16819:38:0;;;16866:51:1;16933:18;;;16926:34;;;16819:26:0;;;;;16839:18:1;;16819:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16898:2;-1:-1:-1;;;;;16873:56:0;16891:5;-1:-1:-1;;;;;16873:56:0;16886:3;16873:56;16902:6;16910:11;16923:5;12942:9;;12870:89;16923:5;16873:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;;21273:34;21184:2;21169:18;16873:56:0;;;;;;;;16708:229;;;;;:::o;6960:201::-;7071:12;;;7033;7071;;;;;;;;;-1:-1:-1;;;;;7050:7:0;;;7064:5;;7050:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7032:52;;;7103:7;7095:58;;;;-1:-1:-1;;;7095:58:0;;21799:2:1;7095:58:0;;;21781:21:1;21838:2;21818:18;;;21811:30;21877:34;21857:18;;;21850:62;-1:-1:-1;;;21928:18:1;;;21921:36;21974:19;;7095:58:0;21597:402:1;7095:58:0;7021:140;6960:201;;:::o;9506:::-;9630:68;;;-1:-1:-1;;;;;22262:15:1;;;9630:68:0;;;22244:34:1;22314:15;;22294:18;;;22287:43;22346:18;;;;22339:34;;;9630:68:0;;;;;;;;;;22179:18:1;;;;9630:68:0;;;;;;;;-1:-1:-1;;;;;9630:68:0;-1:-1:-1;;;9630:68:0;;;9604:95;;9623:5;;9604:18;:95::i;3335:521::-;3428:14;3474:1;3463:8;:12;3455:70;;;;-1:-1:-1;;;3455:70:0;;22586:2:1;3455:70:0;;;22568:21:1;22625:2;22605:18;;;22598:30;-1:-1:-1;;;;;;;;;;;22644:18:1;;;22637:62;-1:-1:-1;;;22715:18:1;;;22708:43;22768:19;;3455:70:0;22384:409:1;3455:70:0;3556:1;3544:9;:13;:31;;;;;3574:1;3561:10;:14;3544:31;3536:86;;;;-1:-1:-1;;;3536:86:0;;;;;;;:::i;:::-;3633:20;3656:17;:8;3669:3;3656:12;:17::i;:::-;3633:40;-1:-1:-1;3684:14:0;3701:31;3633:40;3721:10;3701:19;:31::i;:::-;3684:48;-1:-1:-1;3743:16:0;3762:40;3786:15;3762:19;:9;3776:4;3762:13;:19::i;:::-;:23;;:40::i;:::-;3743:59;-1:-1:-1;3825:23:0;3743:59;3825:9;:23;:::i;:::-;3813:35;3335:521;-1:-1:-1;;;;;;;3335:521:0:o;5129:534::-;5230:21;5287:1;5272:4;:11;:16;;5264:61;;;;-1:-1:-1;;;5264:61:0;;23765:2:1;5264:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;5264:61:0;23563:356:1;5264:61:0;5357:4;:11;5346:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5346:23:0;;5336:33;;5410:9;5380:7;5405:1;5388:7;:14;:18;;;;:::i;:::-;5380:27;;;;;;;;:::i;:::-;;;;;;:39;;;;;5435:6;5458:1;5444:4;:11;:15;;;;:::i;:::-;5435:24;;5430:226;5461:5;;5430:226;;5489:14;;5524:42;5536:7;5545:4;5550:5;5554:1;5550;:5;:::i;:::-;5545:11;;;;;;;;:::i;:::-;;;;;;;5558:4;5563:1;5558:7;;;;;;;;:::i;:::-;;;;;;;5524:11;:42::i;:::-;5488:78;;;;5598:46;5610:7;5618:1;5610:10;;;;;;;;:::i;:::-;;;;;;;5622:9;5633:10;5598:11;:46::i;:::-;5581:7;5589:5;5593:1;5589;:5;:::i;:::-;5581:14;;;;;;;;:::i;:::-;;;;;;:63;;;;;5473:183;;5468:3;;;;;:::i;:::-;;;;5430:226;;;;5129:534;;;;;:::o;14081:231::-;14192:40;;-1:-1:-1;;;14192:40:0;;-1:-1:-1;;;;;16884:32:1;;;14192:40:0;;;16866:51:1;16933:18;;;16926:34;;;14192:26:0;;;;;16839:18:1;;14192:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14275:2;-1:-1:-1;;;;;14248:56:0;14269:4;-1:-1:-1;;;;;14248:56:0;14262:5;-1:-1:-1;;;;;14248:56:0;;14279:6;14287:5;12942:9;;12870:89;14287:5;14248:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14248:56:0;20994:319:1;4535:513:0;4636:21;4693:1;4678:4;:11;:16;;4670:61;;;;-1:-1:-1;;;4670:61:0;;23765:2:1;4670:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;4670:61:0;23563:356:1;4670:61:0;4763:4;:11;4752:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4752:23:0;;4742:33;;4799:8;4786:7;4794:1;4786:10;;;;;;;;:::i;:::-;;;;;;:21;;;;;4823:6;4818:223;4849:1;4835:4;:11;:15;;;;:::i;:::-;4831:1;:19;4818:223;;;4873:14;4889:15;4908:42;4920:7;4929:4;4934:1;4929:7;;;;;;;;:::i;:::-;;;;;;;4938:4;4943:1;4947;4943:5;;;;:::i;:::-;4938:11;;;;;;;;:::i;4908:42::-;4872:78;;;;4982:47;4995:7;5003:1;4995:10;;;;;;;;:::i;:::-;;;;;;;5007:9;5018:10;4982:12;:47::i;:::-;4965:7;4973:5;:1;4977;4973:5;:::i;:::-;4965:14;;;;;;;;:::i;:::-;;;;;;:64;;;;;4857:184;;4852:3;;;;;:::i;:::-;;;;4818:223;;1834:490;1923:12;1949:14;1965;1983:26;1994:6;2002;1983:10;:26::i;:::-;2158:32;;-1:-1:-1;;24292:2:1;24288:15;;;24284:24;;2158:32:0;;;24272:37:1;24343:15;;;24339:24;24325:12;;;24318:46;1948:61:0;;-1:-1:-1;1948:61:0;-1:-1:-1;2122:7:0;;24380:12:1;;2158:32:0;;;;;;;;;;;;2148:43;;;;;;2061:251;;;;;;;;-1:-1:-1;;;;;;24762:26:1;;24825:2;24821:15;;;;-1:-1:-1;;24817:53:1;24813:1;24804:11;;24797:74;24896:2;24887:12;;24880:28;24938:66;24933:2;24924:12;;24917:88;25030:2;25021:12;;24403:636;2061:251:0;;;;-1:-1:-1;;2061:251:0;;;;;;;;;2051:262;;2061:251;2051:262;;;;;1834:490;-1:-1:-1;;;;;;1834:490:0:o;19972:743::-;20079:6;20074:634;20105:1;20091:4;:11;:15;;;;:::i;:::-;20087:1;:19;20074:634;;;20129:13;20144:14;20163:4;20168:1;20163:7;;;;;;;;:::i;:::-;;;;;;;20172:4;20177:1;20181;20177:5;;;;:::i;:::-;20172:11;;;;;;;;:::i;:::-;;;;;;;20128:56;;;;20200:14;20219:44;20249:5;20256:6;20219:29;:44::i;:::-;-1:-1:-1;20199:64:0;-1:-1:-1;20278:14:0;20295:7;20303:5;:1;20307;20303:5;:::i;:::-;20295:14;;;;;;;;:::i;:::-;;;;;;;20278:31;;20325:15;20342;20370:6;-1:-1:-1;;;;;20361:15:0;:5;-1:-1:-1;;;;;20361:15:0;;:61;;20403:9;20419:1;20361:61;;;20385:1;20389:9;20361:61;20324:98;;;;20437:10;20468:1;20454:4;:11;:15;;;;:::i;:::-;20450:1;:19;:84;;20531:3;20450:84;;;20472:56;20499:7;20508:6;20516:4;20521:5;:1;20525;20521:5;:::i;:::-;20516:11;;;;;;;;:::i;:::-;;;;;;;20472:26;:56::i;:::-;20437:97;;20566:50;20593:7;20602:5;20609:6;20566:26;:50::i;:::-;-1:-1:-1;;;;;20549:73:0;;20641:10;20653;20665:2;20679:1;20669:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20669:12:0;;20549:147;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20113:595;;;;;;;20108:3;;;;;:::i;:::-;;;;20074:634;;3977:476;4070:13;4116:1;4104:9;:13;4096:72;;;;-1:-1:-1;;;4096:72:0;;25710:2:1;4096:72:0;;;25692:21:1;25749:2;25729:18;;;25722:30;-1:-1:-1;;;;;;;;;;;25768:18:1;;;25761:62;-1:-1:-1;;;25839:18:1;;;25832:44;25893:19;;4096:72:0;25508:410:1;4096:72:0;4199:1;4187:9;:13;:31;;;;;4217:1;4204:10;:14;4187:31;4179:86;;;;-1:-1:-1;;;4179:86:0;;;;;;;:::i;:::-;4276:14;4293:34;4322:4;4293:24;:9;4307;4293:13;:24::i;:::-;:28;;:34::i;:::-;4276:51;-1:-1:-1;4338:16:0;4357:34;4387:3;4357:25;:10;4372:9;4357:14;:25::i;:34::-;4338:53;-1:-1:-1;4413:32:0;4443:1;4414:23;4338:53;4414:9;:23;:::i;4413:32::-;4402:43;3977:476;-1:-1:-1;;;;;;3977:476:0:o;2888:325::-;2970:12;3013:1;3003:7;:11;2995:63;;;;-1:-1:-1;;;2995:63:0;;26125:2:1;2995:63:0;;;26107:21:1;26164:2;26144:18;;;26137:30;-1:-1:-1;;;;;;;;;;;26183:18:1;;;26176:62;-1:-1:-1;;;26254:18:1;;;26247:37;26301:19;;2995:63:0;25923:403:1;2995:63:0;3088:1;3077:8;:12;:28;;;;;3104:1;3093:8;:12;3077:28;3069:83;;;;-1:-1:-1;;;3069:83:0;;;;;;;:::i;:::-;3197:8;3173:21;:7;3185:8;3173:11;:21::i;:::-;:32;;;;:::i;10065:598::-;10153:27;10161:5;-1:-1:-1;;;;;10153:25:0;;:27::i;:::-;10145:71;;;;-1:-1:-1;;;10145:71:0;;26533:2:1;10145:71:0;;;26515:21:1;26572:2;26552:18;;;26545:30;26611:33;26591:18;;;26584:61;26662:18;;10145:71:0;26331:355:1;10145:71:0;10290:12;10304:23;10339:5;-1:-1:-1;;;;;10331:19:0;10351:4;10331:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10289:67;;;;10375:7;10367:52;;;;-1:-1:-1;;;10367:52:0;;26893:2:1;10367:52:0;;;26875:21:1;;;26912:18;;;26905:30;26971:34;26951:18;;;26944:62;27023:18;;10367:52:0;26691:356:1;10367:52:0;10436:17;;:21;10432:224;;10578:10;10567:30;;;;;;;;;;;;:::i;:::-;10559:85;;;;-1:-1:-1;;;10559:85:0;;27254:2:1;10559:85:0;;;27236:21:1;27293:2;27273:18;;;27266:30;27332:34;27312:18;;;27305:62;-1:-1:-1;;;27383:18:1;;;27376:40;27433:19;;10559:85:0;27052:406:1;1028:178:0;1080:6;1132;;;:30;;-1:-1:-1;;1147:5:0;;;1161:1;1156;1147:5;1156:1;1142:15;;;;:::i;:::-;;:20;1132:30;1124:63;;;;-1:-1:-1;;;1124:63:0;;27665:2:1;1124:63:0;;;27647:21:1;27704:2;27684:18;;;27677:30;-1:-1:-1;;;27723:18:1;;;27716:50;27783:18;;1124:63:0;27463:344:1;683:164:0;792:5;;;787:16;;;;779:49;;;;-1:-1:-1;;;779:49:0;;28014:2:1;779:49:0;;;27996:21:1;28053:2;28033:18;;;28026:30;-1:-1:-1;;;28072:18:1;;;28065:50;28132:18;;779:49:0;27812:344:1;2382:393:0;2475:13;2490;2517:14;2536:26;2547:6;2555;2536:10;:26::i;:::-;2516:46;;;2574:13;2589;2624:32;2632:7;2641:6;2649;2624:7;:32::i;:::-;-1:-1:-1;;;;;2607:62:0;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2573:98;-1:-1:-1;;;;;2573:98:0;;;-1:-1:-1;;;;;2573:98:0;;;2715:6;-1:-1:-1;;;;;2705:16:0;:6;-1:-1:-1;;;;;2705:16:0;;:62;;2748:8;2758;2705:62;;;2725:8;2735;2705:62;2682:85;;;;-1:-1:-1;2382:393:0;-1:-1:-1;;;;;;;2382:393:0:o;1389:353::-;1464:14;1480;1525:6;-1:-1:-1;;;;;1515:16:0;:6;-1:-1:-1;;;;;1515:16:0;;;1507:68;;;;-1:-1:-1;;;1507:68:0;;29011:2:1;1507:68:0;;;28993:21:1;29050:2;29030:18;;;29023:30;29089:34;29069:18;;;29062:62;-1:-1:-1;;;29140:18:1;;;29133:37;29187:19;;1507:68:0;28809:403:1;1507:68:0;1614:6;-1:-1:-1;;;;;1605:15:0;:6;-1:-1:-1;;;;;1605:15:0;;:53;;1643:6;1651;1605:53;;;1624:6;1632;1605:53;1586:72;;-1:-1:-1;1586:72:0;-1:-1:-1;;;;;;1677:20:0;;1669:65;;;;-1:-1:-1;;;1669:65:0;;29419:2:1;1669:65:0;;;29401:21:1;;;29438:18;;;29431:30;29497:34;29477:18;;;29470:62;29549:18;;1669:65:0;29217:356:1;1669:65:0;1389:353;;;;;:::o;855:165::-;964:5;;;959:16;;;;951:50;;;;-1:-1:-1;;;951:50:0;;29780:2:1;951:50:0;;;29762:21:1;29819:2;29799:18;;;29792:30;-1:-1:-1;;;29838:18:1;;;29831:51;29899:18;;951:50:0;29578:345:1;8885:374:0;8945:4;9168:20;;9011:66;9208:15;;;;;:42;;-1:-1:-1;9227:23:0;;;9200:51;-1:-1:-1;;8885:374:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:594;377:6;385;393;401;409;462:3;450:9;441:7;437:23;433:33;430:53;;;479:1;476;469:12;430:53;515:9;502:23;492:33;;575:2;564:9;560:18;547:32;588:31;613:5;588:31;:::i;:::-;638:5;-1:-1:-1;695:2:1;680:18;;667:32;708:33;667:32;708:33;:::i;:::-;282:594;;;;-1:-1:-1;760:7:1;;814:2;799:18;;786:32;;-1:-1:-1;865:3:1;850:19;837:33;;282:594;-1:-1:-1;;282:594:1:o;881:127::-;942:10;937:3;933:20;930:1;923:31;973:4;970:1;963:15;997:4;994:1;987:15;1013:275;1084:2;1078:9;1149:2;1130:13;;-1:-1:-1;;1126:27:1;1114:40;;1184:18;1169:34;;1205:22;;;1166:62;1163:88;;;1231:18;;:::i;:::-;1267:2;1260:22;1013:275;;-1:-1:-1;1013:275:1:o;1293:531::-;1336:5;1389:3;1382:4;1374:6;1370:17;1366:27;1356:55;;1407:1;1404;1397:12;1356:55;1443:6;1430:20;1469:18;1465:2;1462:26;1459:52;;;1491:18;;:::i;:::-;1535:55;1578:2;1559:13;;-1:-1:-1;;1555:27:1;1584:4;1551:38;1535:55;:::i;:::-;1615:2;1606:7;1599:19;1661:3;1654:4;1649:2;1641:6;1637:15;1633:26;1630:35;1627:55;;;1678:1;1675;1668:12;1627:55;1743:2;1736:4;1728:6;1724:17;1717:4;1708:7;1704:18;1691:55;1791:1;1766:16;;;1784:4;1762:27;1755:38;;;;1770:7;1293:531;-1:-1:-1;;;1293:531:1:o;1829:594::-;1925:6;1933;1941;1949;2002:3;1990:9;1981:7;1977:23;1973:33;1970:53;;;2019:1;2016;2009:12;1970:53;2058:9;2045:23;2077:31;2102:5;2077:31;:::i;:::-;2127:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2210:18;2199:30;;2196:50;;;2242:1;2239;2232:12;2196:50;2265;2307:7;2298:6;2287:9;2283:22;2265:50;:::i;:::-;1829:594;;2255:60;;-1:-1:-1;;;;2362:2:1;2347:18;;2334:32;;2413:2;2398:18;2385:32;;1829:594;-1:-1:-1;1829:594:1:o;2428:316::-;2505:6;2513;2521;2574:2;2562:9;2553:7;2549:23;2545:32;2542:52;;;2590:1;2587;2580:12;2542:52;-1:-1:-1;;2613:23:1;;;2683:2;2668:18;;2655:32;;-1:-1:-1;2734:2:1;2719:18;;;2706:32;;2428:316;-1:-1:-1;2428:316:1:o;2931:118::-;3017:5;3010:13;3003:21;2996:5;2993:32;2983:60;;3039:1;3036;3029:12;3054:241;3110:6;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;3218:9;3205:23;3237:28;3259:5;3237:28;:::i;:::-;3284:5;3054:241;-1:-1:-1;;;3054:241:1:o;3300:367::-;3363:8;3373:6;3427:3;3420:4;3412:6;3408:17;3404:27;3394:55;;3445:1;3442;3435:12;3394:55;-1:-1:-1;3468:20:1;;3511:18;3500:30;;3497:50;;;3543:1;3540;3533:12;3497:50;3580:4;3572:6;3568:17;3556:29;;3640:3;3633:4;3623:6;3620:1;3616:14;3608:6;3604:27;3600:38;3597:47;3594:67;;;3657:1;3654;3647:12;3672:847;3803:6;3811;3819;3827;3835;3843;3851;3904:3;3892:9;3883:7;3879:23;3875:33;3872:53;;;3921:1;3918;3911:12;3872:53;3957:9;3944:23;3934:33;;4014:2;4003:9;3999:18;3986:32;3976:42;;4069:2;4058:9;4054:18;4041:32;4096:18;4088:6;4085:30;4082:50;;;4128:1;4125;4118:12;4082:50;4167:70;4229:7;4220:6;4209:9;4205:22;4167:70;:::i;:::-;4256:8;;-1:-1:-1;4141:96:1;-1:-1:-1;;4341:2:1;4326:18;;4313:32;4354:31;4313:32;4354:31;:::i;:::-;3672:847;;;;-1:-1:-1;3672:847:1;;;;4404:5;4456:3;4441:19;;4428:33;;-1:-1:-1;4508:3:1;4493:19;;;4480:33;;3672:847;-1:-1:-1;;3672:847:1:o;4524:1089::-;4617:6;4625;4678:2;4666:9;4657:7;4653:23;4649:32;4646:52;;;4694:1;4691;4684:12;4646:52;4730:9;4717:23;4707:33;;4759:2;4812;4801:9;4797:18;4784:32;4835:18;4876:2;4868:6;4865:14;4862:34;;;4892:1;4889;4882:12;4862:34;4930:6;4919:9;4915:22;4905:32;;4975:7;4968:4;4964:2;4960:13;4956:27;4946:55;;4997:1;4994;4987:12;4946:55;5033:2;5020:16;5055:2;5051;5048:10;5045:36;;;5061:18;;:::i;:::-;5107:2;5104:1;5100:10;5090:20;;5130:28;5154:2;5150;5146:11;5130:28;:::i;:::-;5192:15;;;5262:11;;;5258:20;;;5223:12;;;;5290:19;;;5287:39;;;5322:1;5319;5312:12;5287:39;5346:11;;;;5366:217;5382:6;5377:3;5374:15;5366:217;;;5462:3;5449:17;5436:30;;5479:31;5504:5;5479:31;:::i;:::-;5523:18;;;5399:12;;;;5561;;;;5366:217;;;5602:5;5592:15;;;;;;;;4524:1089;;;;;:::o;5618:632::-;5789:2;5841:21;;;5911:13;;5814:18;;;5933:22;;;5760:4;;5789:2;6012:15;;;;5986:2;5971:18;;;5760:4;6055:169;6069:6;6066:1;6063:13;6055:169;;;6130:13;;6118:26;;6199:15;;;;6164:12;;;;6091:1;6084:9;6055:169;;;-1:-1:-1;6241:3:1;;5618:632;-1:-1:-1;;;;;;5618:632:1:o;6255:525::-;6341:6;6349;6357;6365;6418:3;6406:9;6397:7;6393:23;6389:33;6386:53;;;6435:1;6432;6425:12;6386:53;6474:9;6461:23;6493:31;6518:5;6493:31;:::i;:::-;6543:5;-1:-1:-1;6600:2:1;6585:18;;6572:32;6613:33;6572:32;6613:33;:::i;:::-;6255:525;;6665:7;;-1:-1:-1;;;;6719:2:1;6704:18;;6691:32;;6770:2;6755:18;6742:32;;6255:525::o;6785:1720::-;7015:6;7023;7031;7039;7047;7055;7063;7071;7079;7087;7140:3;7128:9;7119:7;7115:23;7111:33;7108:53;;;7157:1;7154;7147:12;7108:53;7197:9;7184:23;7226:18;7267:2;7259:6;7256:14;7253:34;;;7283:1;7280;7273:12;7253:34;7322:70;7384:7;7375:6;7364:9;7360:22;7322:70;:::i;:::-;7411:8;;-1:-1:-1;7296:96:1;-1:-1:-1;7499:2:1;7484:18;;7471:32;;-1:-1:-1;7515:16:1;;;7512:36;;;7544:1;7541;7534:12;7512:36;7583:72;7647:7;7636:8;7625:9;7621:24;7583:72;:::i;:::-;7674:8;;-1:-1:-1;7557:98:1;-1:-1:-1;7762:2:1;7747:18;;7734:32;;-1:-1:-1;7778:16:1;;;7775:36;;;7807:1;7804;7797:12;7775:36;7846:72;7910:7;7899:8;7888:9;7884:24;7846:72;:::i;:::-;7937:8;;-1:-1:-1;7820:98:1;-1:-1:-1;8025:2:1;8010:18;;7997:32;;-1:-1:-1;8041:16:1;;;8038:36;;;8070:1;8067;8060:12;8038:36;8109:72;8173:7;8162:8;8151:9;8147:24;8109:72;:::i;:::-;8200:8;;-1:-1:-1;8083:98:1;-1:-1:-1;8288:3:1;8273:19;;8260:33;;-1:-1:-1;8305:16:1;;;8302:36;;;8334:1;8331;8324:12;8302:36;;8373:72;8437:7;8426:8;8415:9;8411:24;8373:72;:::i;:::-;8347:98;;8464:8;8454:18;;;8491:8;8481:18;;;6785:1720;;;;;;;;;;;;;:::o;8510:916::-;8650:6;8658;8666;8674;8682;8690;8698;8706;8759:3;8747:9;8738:7;8734:23;8730:33;8727:53;;;8776:1;8773;8766:12;8727:53;8812:9;8799:23;8789:33;;8869:2;8858:9;8854:18;8841:32;8831:42;;8920:2;8909:9;8905:18;8892:32;8882:42;;8975:2;8964:9;8960:18;8947:32;9002:18;8994:6;8991:30;8988:50;;;9034:1;9031;9024:12;8988:50;9073:70;9135:7;9126:6;9115:9;9111:22;9073:70;:::i;:::-;9162:8;;-1:-1:-1;9047:96:1;-1:-1:-1;;9247:3:1;9232:19;;9219:33;9261:31;9219:33;9261:31;:::i;:::-;8510:916;;;;-1:-1:-1;8510:916:1;;;;;;9311:5;;-1:-1:-1;;;9363:3:1;9348:19;;9335:33;;9415:3;9400:19;9387:33;;8510:916::o;9623:388::-;9691:6;9699;9752:2;9740:9;9731:7;9727:23;9723:32;9720:52;;;9768:1;9765;9758:12;9720:52;9807:9;9794:23;9826:31;9851:5;9826:31;:::i;:::-;9876:5;-1:-1:-1;9933:2:1;9918:18;;9905:32;9946:33;9905:32;9946:33;:::i;:::-;9998:7;9988:17;;;9623:388;;;;;:::o;10016:525::-;10103:6;10111;10119;10172:2;10160:9;10151:7;10147:23;10143:32;10140:52;;;10188:1;10185;10178:12;10140:52;10227:9;10214:23;10246:31;10271:5;10246:31;:::i;:::-;10296:5;-1:-1:-1;10352:2:1;10337:18;;10324:32;10379:18;10368:30;;10365:50;;;10411:1;10408;10401:12;10365:50;10434;10476:7;10467:6;10456:9;10452:22;10434:50;:::i;:::-;10424:60;;;10531:2;10520:9;10516:18;10503:32;10493:42;;10016:525;;;;;:::o;10546:247::-;10605:6;10658:2;10646:9;10637:7;10633:23;10629:32;10626:52;;;10674:1;10671;10664:12;10626:52;10713:9;10700:23;10732:31;10757:5;10732:31;:::i;10798:456::-;10875:6;10883;10891;10944:2;10932:9;10923:7;10919:23;10915:32;10912:52;;;10960:1;10957;10950:12;10912:52;10999:9;10986:23;11018:31;11043:5;11018:31;:::i;:::-;11068:5;-1:-1:-1;11120:2:1;11105:18;;11092:32;;-1:-1:-1;11176:2:1;11161:18;;11148:32;11189:33;11148:32;11189:33;:::i;:::-;11241:7;11231:17;;;10798:456;;;;;:::o;11259:315::-;11327:6;11335;11388:2;11376:9;11367:7;11363:23;11359:32;11356:52;;;11404:1;11401;11394:12;11356:52;11443:9;11430:23;11462:31;11487:5;11462:31;:::i;:::-;11512:5;11564:2;11549:18;;;;11536:32;;-1:-1:-1;;;11259:315:1:o;11787:456::-;11864:6;11872;11880;11933:2;11921:9;11912:7;11908:23;11904:32;11901:52;;;11949:1;11946;11939:12;11901:52;11988:9;11975:23;12007:31;12032:5;12007:31;:::i;:::-;12057:5;-1:-1:-1;12114:2:1;12099:18;;12086:32;12127:33;12086:32;12127:33;:::i;:::-;11787:456;;12179:7;;-1:-1:-1;;;12233:2:1;12218:18;;;;12205:32;;11787:456::o;12248:1404::-;12442:6;12450;12458;12466;12474;12482;12490;12498;12551:3;12539:9;12530:7;12526:23;12522:33;12519:53;;;12568:1;12565;12558:12;12519:53;12608:9;12595:23;12637:18;12678:2;12670:6;12667:14;12664:34;;;12694:1;12691;12684:12;12664:34;12733:70;12795:7;12786:6;12775:9;12771:22;12733:70;:::i;:::-;12822:8;;-1:-1:-1;12707:96:1;-1:-1:-1;12910:2:1;12895:18;;12882:32;;-1:-1:-1;12926:16:1;;;12923:36;;;12955:1;12952;12945:12;12923:36;12994:72;13058:7;13047:8;13036:9;13032:24;12994:72;:::i;:::-;13085:8;;-1:-1:-1;12968:98:1;-1:-1:-1;13173:2:1;13158:18;;13145:32;;-1:-1:-1;13189:16:1;;;13186:36;;;13218:1;13215;13208:12;13186:36;13257:72;13321:7;13310:8;13299:9;13295:24;13257:72;:::i;:::-;13348:8;;-1:-1:-1;13231:98:1;-1:-1:-1;13436:2:1;13421:18;;13408:32;;-1:-1:-1;13452:16:1;;;13449:36;;;13481:1;13478;13471:12;13449:36;;13520:72;13584:7;13573:8;13562:9;13558:24;13520:72;:::i;:::-;12248:1404;;;;-1:-1:-1;12248:1404:1;;-1:-1:-1;12248:1404:1;;;;;;13611:8;-1:-1:-1;;;12248:1404:1:o;13657:350::-;13859:2;13841:21;;;13898:2;13878:18;;;13871:30;13937:28;13932:2;13917:18;;13910:56;13998:2;13983:18;;13657:350::o;14012:251::-;14082:6;14135:2;14123:9;14114:7;14110:23;14106:32;14103:52;;;14151:1;14148;14141:12;14103:52;14183:9;14177:16;14202:31;14227:5;14202:31;:::i;14268:184::-;14338:6;14391:2;14379:9;14370:7;14366:23;14362:32;14359:52;;;14407:1;14404;14397:12;14359:52;-1:-1:-1;14430:16:1;;14268:184;-1:-1:-1;14268:184:1:o;14457:375::-;-1:-1:-1;;;;;14715:15:1;;;14697:34;;14762:2;14747:18;;14740:34;;;;14810:15;;;14805:2;14790:18;;14783:43;14647:2;14632:18;;14457:375::o;14837:258::-;14909:1;14919:113;14933:6;14930:1;14927:13;14919:113;;;15009:11;;;15003:18;14990:11;;;14983:39;14955:2;14948:10;14919:113;;;15050:6;15047:1;15044:13;15041:48;;;-1:-1:-1;;15085:1:1;15067:16;;15060:27;14837:258::o;15100:::-;15142:3;15180:5;15174:12;15207:6;15202:3;15195:19;15223:63;15279:6;15272:4;15267:3;15263:14;15256:4;15249:5;15245:16;15223:63;:::i;:::-;15340:2;15319:15;-1:-1:-1;;15315:29:1;15306:39;;;;15347:4;15302:50;;15100:258;-1:-1:-1;;15100:258:1:o;15363:435::-;15596:3;15585:9;15578:22;15559:4;15617:46;15658:3;15647:9;15643:19;15635:6;15617:46;:::i;:::-;15694:2;15679:18;;15672:34;;;;-1:-1:-1;15737:2:1;15722:18;;15715:34;;;;15780:2;15765:18;;;15758:34;15609:54;15363:435;-1:-1:-1;15363:435:1:o;15803:399::-;16005:2;15987:21;;;16044:2;16024:18;;;16017:30;16083:34;16078:2;16063:18;;16056:62;-1:-1:-1;;;16149:2:1;16134:18;;16127:33;16192:3;16177:19;;15803:399::o;16207:348::-;16409:2;16391:21;;;16448:2;16428:18;;;16421:30;16487:26;16482:2;16467:18;;16460:54;16546:2;16531:18;;16207:348::o;16560:127::-;16621:10;16616:3;16612:20;16609:1;16602:31;16652:4;16649:1;16642:15;16676:4;16673:1;16666:15;16971:245;17038:6;17091:2;17079:9;17070:7;17066:23;17062:32;17059:52;;;17107:1;17104;17097:12;17059:52;17139:9;17133:16;17158:28;17180:5;17158:28;:::i;17221:1001::-;17533:3;17546:22;;;17518:19;;17603:22;;;17485:4;17683:6;17656:3;17641:19;;17485:4;17717:304;17731:6;17728:1;17725:13;17717:304;;;17806:6;17793:20;17826:31;17851:5;17826:31;:::i;:::-;-1:-1:-1;;;;;17882:31:1;17870:44;;17937:4;17996:15;;;;17961:12;;;;17910:1;17746:9;17717:304;;;-1:-1:-1;18072:4:1;18057:20;;18050:36;;;;-1:-1:-1;;18117:2:1;18102:18;;18095:34;;;;18160:2;18145:18;;18138:34;;;;18203:3;18188:19;;;18181:35;18038:3;17221:1001;-1:-1:-1;;17221:1001:1:o;18227:127::-;18288:10;18283:3;18279:20;18276:1;18269:31;18319:4;18316:1;18309:15;18343:4;18340:1;18333:15;18359:135;18398:3;-1:-1:-1;;18419:17:1;;18416:43;;;18439:18;;:::i;:::-;-1:-1:-1;18486:1:1;18475:13;;18359:135::o;18499:125::-;18539:4;18567:1;18564;18561:8;18558:34;;;18572:18;;:::i;:::-;-1:-1:-1;18609:9:1;;18499:125::o;20171:406::-;20373:2;20355:21;;;20412:2;20392:18;;;20385:30;20451:34;20446:2;20431:18;;20424:62;-1:-1:-1;;;20517:2:1;20502:18;;20495:40;20567:3;20552:19;;20171:406::o;20582:128::-;20622:3;20653:1;20649:6;20646:1;20643:13;20640:39;;;20659:18;;:::i;:::-;-1:-1:-1;20695:9:1;;20582:128::o;21318:274::-;21447:3;21485:6;21479:13;21501:53;21547:6;21542:3;21535:4;21527:6;21523:17;21501:53;:::i;:::-;21570:16;;;;;21318:274;-1:-1:-1;;21318:274:1:o;22798:406::-;23000:2;22982:21;;;23039:2;23019:18;;;23012:30;-1:-1:-1;;;;;;;;;;;23073:2:1;23058:18;;23051:62;-1:-1:-1;;;23144:2:1;23129:18;;23122:40;23194:3;23179:19;;22798:406::o;23209:127::-;23270:10;23265:3;23261:20;23258:1;23251:31;23301:4;23298:1;23291:15;23325:4;23322:1;23315:15;23341:217;23381:1;23407;23397:132;;23451:10;23446:3;23442:20;23439:1;23432:31;23486:4;23483:1;23476:15;23514:4;23511:1;23504:15;23397:132;-1:-1:-1;23543:9:1;;23341:217::o;23924:136::-;23963:3;23991:5;23981:39;;24000:18;;:::i;:::-;-1:-1:-1;;;24036:18:1;;23924:136::o;25044:459::-;25275:6;25264:9;25257:25;25318:6;25313:2;25302:9;25298:18;25291:34;25390:1;25386;25381:3;25377:11;25373:19;25365:6;25361:32;25356:2;25345:9;25341:18;25334:60;25430:3;25425:2;25414:9;25410:18;25403:31;25238:4;25451:46;25492:3;25481:9;25477:19;25469:6;25451:46;:::i;28161:188::-;28240:13;;-1:-1:-1;;;;;28282:42:1;;28272:53;;28262:81;;28339:1;28336;28329:12;28354:450;28441:6;28449;28457;28510:2;28498:9;28489:7;28485:23;28481:32;28478:52;;;28526:1;28523;28516:12;28478:52;28549:40;28579:9;28549:40;:::i;:::-;28539:50;;28608:49;28653:2;28642:9;28638:18;28608:49;:::i;:::-;28598:59;;28700:2;28689:9;28685:18;28679:25;28744:10;28737:5;28733:22;28726:5;28723:33;28713:61;;28770:1;28767;28760:12

Swarm Source

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