Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,630 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap Exact Token... | 20860379 | 57 days ago | IN | 0 ETH | 0.00114078 | ||||
Swap Exact Token... | 13047160 | 1196 days ago | IN | 0 ETH | 0.00970658 | ||||
Swap Exact Token... | 11858384 | 1380 days ago | IN | 0 ETH | 0.05057472 | ||||
Remove Liquidity... | 10954722 | 1519 days ago | IN | 0 ETH | 0.06721366 | ||||
Add Liquidity ET... | 10950919 | 1520 days ago | IN | 0.2 ETH | 0.06339263 | ||||
Remove Liquidity... | 10950267 | 1520 days ago | IN | 0 ETH | 0.04104991 | ||||
Remove Liquidity... | 10949503 | 1520 days ago | IN | 0 ETH | 0.02601748 | ||||
Remove Liquidity... | 10949321 | 1520 days ago | IN | 0 ETH | 0.03055106 | ||||
Add Liquidity | 10949264 | 1520 days ago | IN | 0 ETH | 0.0305264 | ||||
Add Liquidity ET... | 10949238 | 1520 days ago | IN | 1 ETH | 0.02651448 | ||||
Swap Exact Token... | 10948370 | 1520 days ago | IN | 0 ETH | 0.01412392 | ||||
Swap Exact Token... | 10948361 | 1520 days ago | IN | 0 ETH | 0.01385231 | ||||
Swap Exact Token... | 10948341 | 1520 days ago | IN | 0 ETH | 0.0135807 | ||||
Swap Exact Token... | 10948308 | 1520 days ago | IN | 0 ETH | 0.01434058 | ||||
Swap Exact Token... | 10948292 | 1520 days ago | IN | 0 ETH | 0.01432084 | ||||
Swap Exact Token... | 10948278 | 1520 days ago | IN | 0 ETH | 0.00227294 | ||||
Swap Exact Token... | 10948278 | 1520 days ago | IN | 0 ETH | 0.0146502 | ||||
Remove Liquidity... | 10941644 | 1521 days ago | IN | 0 ETH | 0.01921637 | ||||
Add Liquidity ET... | 10941537 | 1521 days ago | IN | 3 ETH | 0.02030954 | ||||
Add Liquidity ET... | 10941523 | 1521 days ago | IN | 3 ETH | 0.02252207 | ||||
Remove Liquidity... | 10935832 | 1522 days ago | IN | 0 ETH | 0.01967052 | ||||
Remove Liquidity... | 10926847 | 1524 days ago | IN | 0 ETH | 0.03181214 | ||||
Remove Liquidity... | 10924348 | 1524 days ago | IN | 0 ETH | 0.03058792 | ||||
Remove Liquidity... | 10910948 | 1526 days ago | IN | 0 ETH | 0.02952556 | ||||
Remove Liquidity... | 10904949 | 1527 days ago | IN | 0 ETH | 0.04696657 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
21046400 | 31 days ago | 0.06682784 ETH | ||||
21046400 | 31 days ago | 0.06682784 ETH | ||||
20860379 | 57 days ago | 0.07264995 ETH | ||||
20860379 | 57 days ago | 0.07264995 ETH | ||||
13047160 | 1196 days ago | 0.40610569 ETH | ||||
13047160 | 1196 days ago | 0.40610569 ETH | ||||
11858384 | 1380 days ago | 2.97391469 ETH | ||||
11858384 | 1380 days ago | 2.97391469 ETH | ||||
10954722 | 1519 days ago | 0.19999999 ETH | ||||
10954722 | 1519 days ago | 0.19999999 ETH | ||||
10950919 | 1520 days ago | 1 wei | ||||
10950919 | 1520 days ago | 0.19999999 ETH | ||||
10950267 | 1520 days ago | 0.10689302 ETH | ||||
10950267 | 1520 days ago | 0.10689302 ETH | ||||
10949503 | 1520 days ago | 0.99999999 ETH | ||||
10949503 | 1520 days ago | 0.99999999 ETH | ||||
10949238 | 1520 days ago | 1 wei | ||||
10949238 | 1520 days ago | 0.99999999 ETH | ||||
10948370 | 1520 days ago | 0.13612735 ETH | ||||
10948370 | 1520 days ago | 0.13612735 ETH | ||||
10948361 | 1520 days ago | 0.16541537 ETH | ||||
10948361 | 1520 days ago | 0.16541537 ETH | ||||
10948341 | 1520 days ago | 0.18783616 ETH | ||||
10948341 | 1520 days ago | 0.18783616 ETH | ||||
10948308 | 1520 days ago | 0.2157896 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
BtswapRouter
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-08-31 */ // File: solidity-common/contracts/library/SafeMath.sol pragma solidity >=0.5.0 <0.7.0; /** * 算术操作 */ library SafeMath { uint256 constant WAD = 10 ** 18; uint256 constant RAY = 10 ** 27; function wad() public pure returns (uint256) { return WAD; } function ray() public pure returns (uint256) { return RAY; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a <= b ? a : b; } function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function sqrt(uint256 a) internal pure returns (uint256 b) { if (a > 3) { b = a; uint256 x = a / 2 + 1; while (x < b) { b = x; x = (a / x + x) / 2; } } else if (a != 0) { b = 1; } } function wmul(uint256 a, uint256 b) internal pure returns (uint256) { return mul(a, b) / WAD; } function wmulRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, b), WAD / 2) / WAD; } function rmul(uint256 a, uint256 b) internal pure returns (uint256) { return mul(a, b) / RAY; } function rmulRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, b), RAY / 2) / RAY; } function wdiv(uint256 a, uint256 b) internal pure returns (uint256) { return div(mul(a, WAD), b); } function wdivRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, WAD), b / 2) / b; } function rdiv(uint256 a, uint256 b) internal pure returns (uint256) { return div(mul(a, RAY), b); } function rdivRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, RAY), b / 2) / b; } function wpow(uint256 x, uint256 n) internal pure returns (uint256) { uint256 result = WAD; while (n > 0) { if (n % 2 != 0) { result = wmul(result, x); } x = wmul(x, x); n /= 2; } return result; } function rpow(uint256 x, uint256 n) internal pure returns (uint256) { uint256 result = RAY; while (n > 0) { if (n % 2 != 0) { result = rmul(result, x); } x = rmul(x, x); n /= 2; } return result; } } // File: solidity-common/contracts/interface/IERC20.sol pragma solidity >=0.5.0 <0.7.0; /** * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md */ interface IERC20 { /** * 可选方法 */ function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); /** * 必须方法 */ function totalSupply() external view returns (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); } // File: contracts/library/TransferHelper.sol pragma solidity >=0.5.0 <0.7.0; library TransferHelper { function safeApprove(address token, address to, uint256 value) internal { (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, uint256 value) internal { (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, uint256 value) internal { (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 safeTransferETH(address to, uint256 value) internal { (bool success,) = to.call.value(value)(new bytes(0)); require(success, "TransferHelper: ETH_TRANSFER_FAILED"); } } // File: contracts/interface/IBtswapETH.sol pragma solidity >=0.5.0 <0.7.0; interface IBtswapETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; } // File: contracts/interface/IBtswapFactory.sol pragma solidity >=0.5.0 <0.7.0; interface IBtswapFactory { function FEE_RATE_DENOMINATOR() external view returns (uint256); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function feeRateNumerator() external view returns (uint256); function initCodeHash() external view returns (bytes32); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setRouter(address) external; function setFeeTo(address) external; function setFeeToSetter(address) external; function setFeeRateNumerator(uint256) external; function setInitCodeHash(bytes32) external; function sortTokens(address tokenA, address tokenB) external pure returns (address token0, address token1); function pairFor(address factory, address tokenA, address tokenB) external view returns (address pair); function getReserves(address factory, address tokenA, address tokenB) external view returns (uint256 reserveA, uint256 reserveB); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountIn); function getAmountsOut(address factory, uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(address factory, uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); event PairCreated(address indexed token0, address indexed token1, address pair, uint256); } // File: contracts/interface/IBtswapPairToken.sol pragma solidity >=0.5.0 <0.7.0; interface IBtswapPairToken { function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; function MINIMUM_LIQUIDITY() external pure returns (uint256); function router() external view returns (address); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address, address) external; function price(address token) external view returns (uint256); event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); } // File: contracts/interface/IBtswapRouter02.sol pragma solidity >=0.5.0 <0.7.0; interface IBtswapRouter02 { function factory() external pure returns (address); function WETH() external pure returns (address); function BT() external pure returns (address); function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external view returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function weth(address token) external view returns (uint256); function onTransfer(address sender, address recipient) external returns (bool); } // File: contracts/interface/IBtswapToken.sol pragma solidity >=0.5.0 <0.7.0; interface IBtswapToken { function swap(address account, address input, uint256 amount, address output) external returns (bool); function liquidity(address account, address pair) external returns (bool); } // File: contracts/interface/IBtswapWhitelistedRole.sol pragma solidity >=0.5.0 <0.7.0; interface IBtswapWhitelistedRole { function getWhitelistedsLength() external view returns (uint256); function isWhitelisted(address) external view returns (bool); function whitelisteds(uint256) external view returns (address); } // File: contracts/biz/BtswapRouter.sol pragma solidity >=0.5.0 <0.7.0; contract BtswapRouter is IBtswapRouter02 { using SafeMath for uint256; address public factory; address public WETH; address public BT; constructor(address _factory, address _WETH, address _BT) public { factory = _factory; WETH = _WETH; BT = _BT; } function() external payable { // only accept ETH via fallback from the WETH contract assert(msg.sender == WETH); } function pairFor(address tokenA, address tokenB) public view returns (address pair){ pair = IBtswapFactory(factory).pairFor(factory, tokenA, tokenB); } // **** ADD LIQUIDITY **** function _addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin ) internal returns (uint256 amountA, uint256 amountB) { // create the pair if it doesn"t exist yet if (IBtswapFactory(factory).getPair(tokenA, tokenB) == address(0)) { IBtswapFactory(factory).createPair(tokenA, tokenB); } (uint256 reserveA, uint256 reserveB) = IBtswapFactory(factory).getReserves(factory, tokenA, tokenB); if (reserveA == 0 && reserveB == 0) { (amountA, amountB) = (amountADesired, amountBDesired); } else { uint256 amountBOptimal = IBtswapFactory(factory).quote(amountADesired, reserveA, reserveB); if (amountBOptimal <= amountBDesired) { require(amountBOptimal >= amountBMin, "BtswapRouter: INSUFFICIENT_B_AMOUNT"); (amountA, amountB) = (amountADesired, amountBOptimal); } else { uint256 amountAOptimal = IBtswapFactory(factory).quote(amountBDesired, reserveB, reserveA); assert(amountAOptimal <= amountADesired); require(amountAOptimal >= amountAMin, "BtswapRouter: INSUFFICIENT_A_AMOUNT"); (amountA, amountB) = (amountAOptimal, amountBDesired); } } } function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external ensure(deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity) { (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin); address pair = pairFor(tokenA, tokenB); TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA); TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB); liquidity = IBtswapPairToken(pair).mint(to); IBtswapToken(BT).liquidity(msg.sender, pair); } function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable ensure(deadline) returns (uint256 amountToken, uint256 amountETH, uint256 liquidity) { (amountToken, amountETH) = _addLiquidity( token, WETH, amountTokenDesired, msg.value, amountTokenMin, amountETHMin ); address pair = pairFor(token, WETH); TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken); IBtswapETH(WETH).deposit.value(amountETH)(); assert(IBtswapETH(WETH).transfer(pair, amountETH)); liquidity = IBtswapPairToken(pair).mint(to); IBtswapToken(BT).liquidity(msg.sender, pair); // refund dust eth, if any if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH); } // **** REMOVE LIQUIDITY **** function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) public ensure(deadline) returns (uint256 amountA, uint256 amountB) { address pair = pairFor(tokenA, tokenB); // send liquidity to pair IBtswapPairToken(pair).transferFrom(msg.sender, pair, liquidity); (uint256 amount0, uint256 amount1) = IBtswapPairToken(pair).burn(to); IBtswapToken(BT).liquidity(msg.sender, pair); (address token0,) = IBtswapFactory(factory).sortTokens(tokenA, tokenB); (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0); require(amountA >= amountAMin, "BtswapRouter: INSUFFICIENT_A_AMOUNT"); require(amountB >= amountBMin, "BtswapRouter: INSUFFICIENT_B_AMOUNT"); } function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) public ensure(deadline) returns (uint256 amountToken, uint256 amountETH) { (amountToken, amountETH) = removeLiquidity( token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline ); TransferHelper.safeTransfer(token, to, amountToken); IBtswapETH(WETH).withdraw(amountETH); TransferHelper.safeTransferETH(to, amountETH); } function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB) { address pair = pairFor(tokenA, tokenB); uint256 value = approveMax ? uint256(- 1) : liquidity; IBtswapPairToken(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline); } function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH) { address pair = pairFor(token, WETH); uint256 value = approveMax ? uint256(- 1) : liquidity; IBtswapPairToken(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline); } // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) **** function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) public ensure(deadline) returns (uint256 amountETH) { (, amountETH) = removeLiquidity( token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline ); TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this))); IBtswapETH(WETH).withdraw(amountETH); TransferHelper.safeTransferETH(to, amountETH); } function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH) { address pair = pairFor(token, WETH); uint256 value = approveMax ? uint256(- 1) : liquidity; IBtswapPairToken(pair).permit(msg.sender, address(this), value, deadline, v, r, s); amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(token, liquidity, amountTokenMin, amountETHMin, to, deadline); } // **** SWAP **** // requires the initial amount to have already been sent to the first pair function _swap(uint256[] memory amounts, address[] memory path, address _to) internal { for (uint256 i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = IBtswapFactory(factory).sortTokens(input, output); uint256 amountInput = amounts[i]; uint256 amountOut = amounts[i + 1]; IBtswapToken(BT).swap(msg.sender, input, amountInput, output); (uint256 amount0Out, uint256 amount1Out) = input == token0 ? (uint256(0), amountOut) : (amountOut, uint256(0)); address to = i < path.length - 2 ? pairFor(output, path[i + 2]) : _to; IBtswapPairToken(pairFor(input, output)).swap(amount0Out, amount1Out, to, new bytes(0)); } } function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external ensure(deadline) returns (uint256[] memory amounts) { amounts = IBtswapFactory(factory).getAmountsOut(factory, amountIn, path); require(amounts[amounts.length - 1] >= amountOutMin, "BtswapRouter: INSUFFICIENT_OUTPUT_AMOUNT"); TransferHelper.safeTransferFrom(path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]); _swap(amounts, path, to); } function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external ensure(deadline) returns (uint256[] memory amounts) { amounts = IBtswapFactory(factory).getAmountsIn(factory, amountOut, path); require(amounts[0] <= amountInMax, "BtswapRouter: EXCESSIVE_INPUT_AMOUNT"); TransferHelper.safeTransferFrom(path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]); _swap(amounts, path, to); } function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable ensure(deadline) returns (uint256[] memory amounts){ require(path[0] == WETH, "BtswapRouter: INVALID_PATH"); amounts = IBtswapFactory(factory).getAmountsOut(factory, msg.value, path); require(amounts[amounts.length - 1] >= amountOutMin, "BtswapRouter: INSUFFICIENT_OUTPUT_AMOUNT"); IBtswapETH(WETH).deposit.value(amounts[0])(); assert(IBtswapETH(WETH).transfer(pairFor(path[0], path[1]), amounts[0])); _swap(amounts, path, to); } function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external ensure(deadline) returns (uint256[] memory amounts){ require(path[path.length - 1] == WETH, "BtswapRouter: INVALID_PATH"); amounts = IBtswapFactory(factory).getAmountsIn(factory, amountOut, path); require(amounts[0] <= amountInMax, "BtswapRouter: EXCESSIVE_INPUT_AMOUNT"); TransferHelper.safeTransferFrom(path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]); _swap(amounts, path, address(this)); IBtswapETH(WETH).withdraw(amounts[amounts.length - 1]); TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]); } function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external ensure(deadline) returns (uint256[] memory amounts){ require(path[path.length - 1] == WETH, "BtswapRouter: INVALID_PATH"); amounts = IBtswapFactory(factory).getAmountsOut(factory, amountIn, path); require(amounts[amounts.length - 1] >= amountOutMin, "BtswapRouter: INSUFFICIENT_OUTPUT_AMOUNT"); TransferHelper.safeTransferFrom(path[0], msg.sender, pairFor(path[0], path[1]), amounts[0]); _swap(amounts, path, address(this)); IBtswapETH(WETH).withdraw(amounts[amounts.length - 1]); TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]); } function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable ensure(deadline) returns (uint256[] memory amounts){ require(path[0] == WETH, "BtswapRouter: INVALID_PATH"); amounts = IBtswapFactory(factory).getAmountsIn(factory, amountOut, path); require(amounts[0] <= msg.value, "BtswapRouter: EXCESSIVE_INPUT_AMOUNT"); IBtswapETH(WETH).deposit.value(amounts[0])(); assert(IBtswapETH(WETH).transfer(pairFor(path[0], path[1]), amounts[0])); _swap(amounts, path, to); // refund dust eth, if any if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]); } // **** SWAP (supporting fee-on-transfer tokens) **** // requires the initial amount to have already been sent to the first pair function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal { for (uint256 i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = IBtswapFactory(factory).sortTokens(input, output); IBtswapPairToken pair = IBtswapPairToken(pairFor(input, output)); uint256 amountInput; uint256 amountOutput; {// scope to avoid stack too deep errors (uint256 reserve0, uint256 reserve1,) = pair.getReserves(); (uint256 reserveInput, uint256 reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0); amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput); amountOutput = IBtswapFactory(factory).getAmountOut(amountInput, reserveInput, reserveOutput); } IBtswapToken(BT).swap(msg.sender, input, amountInput, output); (uint256 amount0Out, uint256 amount1Out) = input == token0 ? (uint256(0), amountOutput) : (amountOutput, uint256(0)); address to = i < path.length - 2 ? pairFor(output, path[i + 2]) : _to; pair.swap(amount0Out, amount1Out, to, new bytes(0)); } } function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external ensure(deadline) { TransferHelper.safeTransferFrom(path[0], msg.sender, pairFor(path[0], path[1]), amountIn); uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to); _swapSupportingFeeOnTransferTokens(path, to); require(IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin, "BtswapRouter: INSUFFICIENT_OUTPUT_AMOUNT"); } function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable ensure(deadline) { require(path[0] == WETH, "BtswapRouter: INVALID_PATH"); uint256 amountIn = msg.value; IBtswapETH(WETH).deposit.value(amountIn)(); assert(IBtswapETH(WETH).transfer(pairFor(path[0], path[1]), amountIn)); uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to); _swapSupportingFeeOnTransferTokens(path, to); require(IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin, "BtswapRouter: INSUFFICIENT_OUTPUT_AMOUNT"); } function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external ensure(deadline) { require(path[path.length - 1] == WETH, "BtswapRouter: INVALID_PATH"); TransferHelper.safeTransferFrom(path[0], msg.sender, pairFor(path[0], path[1]), amountIn); _swapSupportingFeeOnTransferTokens(path, address(this)); uint256 amountOut = IERC20(WETH).balanceOf(address(this)); require(amountOut >= amountOutMin, "BtswapRouter: INSUFFICIENT_OUTPUT_AMOUNT"); IBtswapETH(WETH).withdraw(amountOut); TransferHelper.safeTransferETH(to, amountOut); } // **** LIBRARY FUNCTIONS **** function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) public view returns (uint256 amountB) { return IBtswapFactory(factory).quote(amountA, reserveA, reserveB); } function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) public view returns (uint256 amountOut){ return IBtswapFactory(factory).getAmountOut(amountIn, reserveIn, reserveOut); } function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) public view returns (uint256 amountIn){ return IBtswapFactory(factory).getAmountIn(amountOut, reserveIn, reserveOut); } function getAmountsOut(uint256 amountIn, address[] memory path) public view returns (uint256[] memory amounts){ return IBtswapFactory(factory).getAmountsOut(factory, amountIn, path); } function getAmountsIn(uint256 amountOut, address[] memory path) public view returns (uint256[] memory amounts){ return IBtswapFactory(factory).getAmountsIn(factory, amountOut, path); } function weth(address token) public view returns (uint256) { uint256 price = 0; if (WETH == token) { price = SafeMath.wad(); } else if (IBtswapFactory(factory).getPair(token, WETH) != address(0)) { price = IBtswapPairToken(IBtswapFactory(factory).getPair(token, WETH)).price(token); } else { uint256 length = IBtswapWhitelistedRole(factory).getWhitelistedsLength(); for (uint256 index = 0; index < length; index++) { address base = IBtswapWhitelistedRole(factory).whitelisteds(index); if (IBtswapFactory(factory).getPair(token, base) != address(0) && IBtswapFactory(factory).getPair(base, WETH) != address(0)) { uint256 price0 = IBtswapPairToken(IBtswapFactory(factory).getPair(token, base)).price(token); uint256 price1 = IBtswapPairToken(IBtswapFactory(factory).getPair(base, WETH)).price(base); price = price0.wmul(price1); break; } } } return price; } function onTransfer(address sender, address recipient) public onlyPair returns (bool) { IBtswapToken(BT).liquidity(sender, msg.sender); IBtswapToken(BT).liquidity(recipient, msg.sender); return true; } function isPair(address pair) public view returns (bool) { return IBtswapFactory(factory).getPair(IBtswapPairToken(pair).token0(), IBtswapPairToken(pair).token1()) == pair; } modifier onlyPair() { require(isPair(msg.sender), "BtswapRouter: caller is not the pair"); _; } modifier ensure(uint256 deadline) { require(deadline >= block.timestamp, "BtswapRouter: EXPIRED"); _; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"address","name":"_BT","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"BT","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"onTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"pairFor","outputs":[{"internalType":"address","name":"pair","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"weth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405162005375380380620053758339818101604052606081101561003557600080fd5b5080516020820151604090920151600080546001600160a01b039384166001600160a01b03199182161790915560018054948416948216949094179093556002805492909116919092161790556152e380620000926000396000f3fe6080604052600436106101c25760003560e01c806396ed28f9116100f7578063c45a015511610095578063e5e31b1311610064578063e5e31b1314610c6a578063e8e3370014610c9d578063f305d71914610d1d578063fb3bdb4114610d63576101c2565b8063c45a015514610b18578063d06ca61f14610b2d578063dab4b6fd14610be2578063ded9382a14610bf7576101c2565b8063af2979eb116100d1578063af2979eb146109b1578063b6f9de9514610a04578063baa2abde14610a88578063be20492f14610ae5576101c2565b806396ed28f91461090f578063ad5c464814610966578063ad615dec1461097b576101c2565b80635b0d5984116101645780637e779e331161013e5780637e779e33146107705780637ff36ab5146107bf57806385f8c259146108435780638803dbee14610879576101c2565b80635b0d5984146105d15780635c11d79514610644578063791ac947146106da576101c2565b80631f00ca74116101a05780631f00ca74146103725780632195995c1461042757806338ed1739146104a55780634a25d94a1461053b576101c2565b806302751cec146101d8578063054d50d41461024457806318cbafe51461028c575b6001546001600160a01b031633146101d657fe5b005b3480156101e457600080fd5b5061022b600480360360c08110156101fb57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610de7565b6040805192835260208301919091528051918290030190f35b34801561025057600080fd5b5061027a6004803603606081101561026757600080fd5b5080359060208101359060400135610ed5565b60408051918252519081900360200190f35b34801561029857600080fd5b50610322600480360360a08110156102af57600080fd5b813591602081013591810190606081016040820135600160201b8111156102d557600080fd5b8201836020820111156102e757600080fd5b803590602001918460208302840111600160201b8311171561030857600080fd5b91935091506001600160a01b038135169060200135610f64565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561035e578181015183820152602001610346565b505050509050019250505060405180910390f35b34801561037e57600080fd5b506103226004803603604081101561039557600080fd5b81359190810190604081016020820135600160201b8111156103b657600080fd5b8201836020820111156103c857600080fd5b803590602001918460208302840111600160201b831117156103e957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061132f945050505050565b34801561043357600080fd5b5061022b600480360361016081101561044b57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356114a1565b3480156104b157600080fd5b50610322600480360360a08110156104c857600080fd5b813591602081013591810190606081016040820135600160201b8111156104ee57600080fd5b82018360208201111561050057600080fd5b803590602001918460208302840111600160201b8311171561052157600080fd5b91935091506001600160a01b03813516906020013561157a565b34801561054757600080fd5b50610322600480360360a081101561055e57600080fd5b813591602081013591810190606081016040820135600160201b81111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460208302840111600160201b831117156105b757600080fd5b91935091506001600160a01b0381351690602001356117ba565b3480156105dd57600080fd5b5061027a60048036036101408110156105f557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611a1d565b34801561065057600080fd5b506101d6600480360360a081101561066757600080fd5b813591602081013591810190606081016040820135600160201b81111561068d57600080fd5b82018360208201111561069f57600080fd5b803590602001918460208302840111600160201b831117156106c057600080fd5b91935091506001600160a01b038135169060200135611af9565b3480156106e657600080fd5b506101d6600480360360a08110156106fd57600080fd5b813591602081013591810190606081016040820135600160201b81111561072357600080fd5b82018360208201111561073557600080fd5b803590602001918460208302840111600160201b8311171561075657600080fd5b91935091506001600160a01b038135169060200135611d6d565b34801561077c57600080fd5b506107ab6004803603604081101561079357600080fd5b506001600160a01b0381358116916020013516611f9b565b604080519115158252519081900360200190f35b610322600480360360808110156107d557600080fd5b81359190810190604081016020820135600160201b8111156107f657600080fd5b82018360208201111561080857600080fd5b803590602001918460208302840111600160201b8311171561082957600080fd5b91935091506001600160a01b0381351690602001356120ec565b34801561084f57600080fd5b5061027a6004803603606081101561086657600080fd5b50803590602081013590604001356124bb565b34801561088557600080fd5b50610322600480360360a081101561089c57600080fd5b813591602081013591810190606081016040820135600160201b8111156108c257600080fd5b8201836020820111156108d457600080fd5b803590602001918460208302840111600160201b831117156108f557600080fd5b91935091506001600160a01b038135169060200135612516565b34801561091b57600080fd5b5061094a6004803603604081101561093257600080fd5b506001600160a01b0381358116916020013516612704565b604080516001600160a01b039092168252519081900360200190f35b34801561097257600080fd5b5061094a612793565b34801561098757600080fd5b5061027a6004803603606081101561099e57600080fd5b50803590602081013590604001356127a2565b3480156109bd57600080fd5b5061027a600480360360c08110156109d457600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356127fd565b6101d660048036036080811015610a1a57600080fd5b81359190810190604081016020820135600160201b811115610a3b57600080fd5b820183602082011115610a4d57600080fd5b803590602001918460208302840111600160201b83111715610a6e57600080fd5b91935091506001600160a01b038135169060200135612952565b348015610a9457600080fd5b5061022b600480360360e0811015610aab57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612c68565b348015610af157600080fd5b5061027a60048036036020811015610b0857600080fd5b50356001600160a01b0316612fb3565b348015610b2457600080fd5b5061094a61360b565b348015610b3957600080fd5b5061032260048036036040811015610b5057600080fd5b81359190810190604081016020820135600160201b811115610b7157600080fd5b820183602082011115610b8357600080fd5b803590602001918460208302840111600160201b83111715610ba457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061361a945050505050565b348015610bee57600080fd5b5061094a613694565b348015610c0357600080fd5b5061022b6004803603610140811015610c1b57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356136a3565b348015610c7657600080fd5b506107ab60048036036020811015610c8d57600080fd5b50356001600160a01b0316613785565b348015610ca957600080fd5b50610cff6004803603610100811015610cc157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356138f6565b60408051938452602084019290925282820152519081900360600190f35b610cff600480360360c0811015610d3357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135613a93565b61032260048036036080811015610d7957600080fd5b81359190810190604081016020820135600160201b811115610d9a57600080fd5b820183602082011115610dac57600080fd5b803590602001918460208302840111600160201b83111715610dcd57600080fd5b91935091506001600160a01b038135169060200135613d3c565b6000808242811015610e2e576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600154610e4a908a906001600160a01b03168a8a8a308a612c68565b9093509150610e5a89868561413b565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b50505050610ec985836142a5565b50965096945050505050565b6000805460408051630153543560e21b815260048101879052602481018690526044810185905290516001600160a01b039092169163054d50d491606480820192602092909190829003018186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d6020811015610f5a57600080fd5b5051949350505050565b60608142811015610faa576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b031686866000198101818110610fc657fe5b905060200201356001600160a01b03166001600160a01b03161461101f576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051635dbdce3b60e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263bb7b9c769284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156110e857600080fd5b8101908080516040519392919084600160201b82111561110757600080fd5b90830190602082018581111561111c57600080fd5b82518660208202830111600160201b8211171561113857600080fd5b82525081516020918201928201910280838360005b8381101561116557818101518382015260200161114d565b505050509050016040525050509150868260018451038151811061118557fe5b602002602001015110156111ca5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b611247868660008181106111da57fe5b905060200201356001600160a01b03163361122d898960008181106111fb57fe5b905060200201356001600160a01b03168a8a600181811061121857fe5b905060200201356001600160a01b0316612704565b8560008151811061123a57fe5b602002602001015161439d565b611286828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506144fa915050565b60015482516001600160a01b0390911690632e1a7d4d90849060001981019081106112ad57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b50505050611324848360018551038151811061131757fe5b60200260200101516142a5565b509695505050505050565b60008054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018690526060604484018181528651606486015286519195939463192128b29486948a948a949193919260849092019160208087019202908190849084905b838110156113ac578181015183820152602001611394565b5050505090500194505050505060006040518083038186803b1580156113d157600080fd5b505afa1580156113e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561140e57600080fd5b8101908080516040519392919084600160201b82111561142d57600080fd5b90830190602082018581111561144257600080fd5b82518660208202830111600160201b8211171561145e57600080fd5b82525081516020918201928201910280838360005b8381101561148b578181015183820152602001611473565b5050505090500160405250505090505b92915050565b60008060006114b08e8e612704565b90506000876114bf578c6114c3565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050506115608f8f8f8f8f8f8f612c68565b809450819550505050509b509b9950505050505050505050565b606081428110156115c0576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600054604051635dbdce3b60e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263bb7b9c769284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561164c57600080fd5b505afa158015611660573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561168957600080fd5b8101908080516040519392919084600160201b8211156116a857600080fd5b9083019060208201858111156116bd57600080fd5b82518660208202830111600160201b821117156116d957600080fd5b82525081516020918201928201910280838360005b838110156117065781810151838201526020016116ee565b505050509050016040525050509150868260018451038151811061172657fe5b6020026020010151101561176b5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b61177b868660008181106111da57fe5b611324828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506144fa915050565b60608142811015611800576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600019810181811061181c57fe5b905060200201356001600160a01b03166001600160a01b031614611875576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263192128b29284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561190157600080fd5b505afa158015611915573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561193e57600080fd5b8101908080516040519392919084600160201b82111561195d57600080fd5b90830190602082018581111561197257600080fd5b82518660208202830111600160201b8211171561198e57600080fd5b82525081516020918201928201910280838360005b838110156119bb5781810151838201526020016119a3565b50505050905001604052505050915086826000815181106119d857fe5b602002602001015111156111ca5760405162461bcd60e51b81526004018080602001828103825260248152602001806151dc6024913960400191505060405180910390fd5b6001546000908190611a39908d906001600160a01b0316612704565b9050600086611a48578b611a4c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611ac257600080fd5b505af1158015611ad6573d6000803e3d6000fd5b50505050611ae88d8d8d8d8d8d6127fd565b9d9c50505050505050505050505050565b8042811015611b3d576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b611b9185856000818110611b4d57fe5b905060200201356001600160a01b031633611b8b88886000818110611b6e57fe5b905060200201356001600160a01b03168989600181811061121857fe5b8a61439d565b600085856000198101818110611ba357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c0857600080fd5b505afa158015611c1c573d6000803e3d6000fd5b505050506040513d6020811015611c3257600080fd5b50516040805160208881028281018201909352888252929350611c7492909189918991829185019084908082843760009201919091525088925061481d915050565b86611d268288886000198101818110611c8957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d6020811015611d1857600080fd5b50519063ffffffff614c6b16565b1015611d635760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b5050505050505050565b8042811015611db1576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b031685856000198101818110611dcd57fe5b905060200201356001600160a01b03166001600160a01b031614611e26576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b611e3685856000818110611b4d57fe5b611e7485858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061481d915050565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611ebf57600080fd5b505afa158015611ed3573d6000803e3d6000fd5b505050506040513d6020811015611ee957600080fd5b5051905086811015611f2c5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b60015460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611f7957600080fd5b505af1158015611f8d573d6000803e3d6000fd5b50505050611d6384826142a5565b6000611fa633613785565b611fe15760405162461bcd60e51b81526004018080602001828103825260248152602001806152446024913960400191505060405180910390fd5b6002546040805163b221728160e01b81526001600160a01b0386811660048301523360248301529151919092169163b22172819160448083019260209291908290030181600087803b15801561203657600080fd5b505af115801561204a573d6000803e3d6000fd5b505050506040513d602081101561206057600080fd5b50506002546040805163b221728160e01b81526001600160a01b0385811660048301523360248301529151919092169163b22172819160448083019260209291908290030181600087803b1580156120b757600080fd5b505af11580156120cb573d6000803e3d6000fd5b505050506040513d60208110156120e157600080fd5b506001949350505050565b60608142811015612132576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b0316868660008161214957fe5b905060200201356001600160a01b03166001600160a01b0316146121a2576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051635dbdce3b60e11b81526001600160a01b03909116600482018181523460248401819052606060448501908152606485018a9052929363bb7b9c769385938c928c9290608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561222d57600080fd5b505afa158015612241573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561226a57600080fd5b8101908080516040519392919084600160201b82111561228957600080fd5b90830190602082018581111561229e57600080fd5b82518660208202830111600160201b821117156122ba57600080fd5b82525081516020918201928201910280838360005b838110156122e75781810151838201526020016122cf565b505050509050016040525050509150868260018451038151811061230757fe5b6020026020010151101561234c5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db090849060009061236e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a157600080fd5b505af11580156123b5573d6000803e3d6000fd5b50506001546001600160a01b0316925063a9059cbb91506123dc90508888600081611b6e57fe5b846000815181106123e957fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561244057600080fd5b505af1158015612454573d6000803e3d6000fd5b505050506040513d602081101561246a57600080fd5b505161247257fe5b6124b1828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506144fa915050565b5095945050505050565b60008054604080516385f8c25960e01b815260048101879052602481018690526044810185905290516001600160a01b03909216916385f8c25991606480820192602092909190829003018186803b158015610f3057600080fd5b6060814281101561255c576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263192128b29284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b1580156125e857600080fd5b505afa1580156125fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561262557600080fd5b8101908080516040519392919084600160201b82111561264457600080fd5b90830190602082018581111561265957600080fd5b82518660208202830111600160201b8211171561267557600080fd5b82525081516020918201928201910280838360005b838110156126a257818101518382015260200161268a565b50505050905001604052505050915086826000815181106126bf57fe5b6020026020010151111561176b5760405162461bcd60e51b81526004018080602001828103825260248152602001806151dc6024913960400191505060405180910390fd5b60008054604080516336c8e07160e11b81526001600160a01b0392831660048201819052868416602483015292851660448201529051636d91c0e291606480820192602092909190829003018186803b15801561276057600080fd5b505afa158015612774573d6000803e3d6000fd5b505050506040513d602081101561278a57600080fd5b50519392505050565b6001546001600160a01b031681565b6000805460408051632b58577b60e21b815260048101879052602481018690526044810185905290516001600160a01b039092169163ad615dec91606480820192602092909190829003018186803b158015610f3057600080fd5b60008142811015612843576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b60015461285f9089906001600160a01b03168989893089612c68565b604080516370a0823160e01b815230600482015290519194506128e392508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156128b257600080fd5b505afa1580156128c6573d6000803e3d6000fd5b505050506040513d60208110156128dc57600080fd5b505161413b565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561293057600080fd5b505af1158015612944573d6000803e3d6000fd5b5050505061132484836142a5565b8042811015612996576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b031685856000816129ad57fe5b905060200201356001600160a01b03166001600160a01b031614612a06576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b60015460408051630d0e30db60e41b8152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b158015612a4e57600080fd5b505af1158015612a62573d6000803e3d6000fd5b50506001546001600160a01b0316925063a9059cbb9150612a8990508888600081611b6e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050506040513d6020811015612b0357600080fd5b5051612b0b57fe5b600086866000198101818110612b1d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612b8257600080fd5b505afa158015612b96573d6000803e3d6000fd5b505050506040513d6020811015612bac57600080fd5b50516040805160208981028281018201909352898252929350612bee9290918a918a91829185019084908082843760009201919091525089925061481d915050565b87611d268289896000198101818110612c0357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611cee57600080fd5b6000808242811015612caf576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6000612cbb8b8b612704565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612d1657600080fd5b505af1158015612d2a573d6000803e3d6000fd5b505050506040513d6020811015612d4057600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612d8d57600080fd5b505af1158015612da1573d6000803e3d6000fd5b505050506040513d6040811015612db757600080fd5b5080516020918201516002546040805163b221728160e01b81523360048201526001600160a01b0389811660248301529151949750929550169263b2217281926044808401938290030181600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b505050506040513d6020811015612e3d57600080fd5b81019080805190602001909291905050505060008060009054906101000a90046001600160a01b03166001600160a01b031663544caa568f8f6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b158015612ed457600080fd5b505afa158015612ee8573d6000803e3d6000fd5b505050506040513d6040811015612efe57600080fd5b505190506001600160a01b038e811690821614612f1c578183612f1f565b82825b90975095508a871015612f635760405162461bcd60e51b81526004018080602001828103825260238152602001806151b96023913960400191505060405180910390fd5b89861015612fa25760405162461bcd60e51b81526004018080602001828103825260238152602001806152216023913960400191505060405180910390fd5b505050505097509795505050505050565b60015460009081906001600160a01b038481169116141561304557731eae93c8544c7935815aadea5cc5aedd04326680637df38c5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561301257600080fd5b505af4158015613026573d6000803e3d6000fd5b505050506040513d602081101561303c57600080fd5b5051905061149b565b600080546001546040805163e6a4390560e01b81526001600160a01b03888116600483015292831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561309e57600080fd5b505afa1580156130b2573d6000803e3d6000fd5b505050506040513d60208110156130c857600080fd5b50516001600160a01b0316146131ba576000546001546040805163e6a4390560e01b81526001600160a01b03878116600483015292831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561313057600080fd5b505afa158015613144573d6000803e3d6000fd5b505050506040513d602081101561315a57600080fd5b5051604080516315d5220f60e31b81526001600160a01b0386811660048301529151919092169163aea91078916024808301926020929190829003018186803b1580156131a657600080fd5b505afa158015613026573d6000803e3d6000fd5b60008060009054906101000a90046001600160a01b03166001600160a01b031663b9b513d16040518163ffffffff1660e01b815260040160206040518083038186803b15801561320957600080fd5b505afa15801561321d573d6000803e3d6000fd5b505050506040513d602081101561323357600080fd5b5051905060005b81811015613603576000805460408051634b5fe2f960e01b81526004810185905290516001600160a01b0390921691634b5fe2f991602480820192602092909190829003018186803b15801561328f57600080fd5b505afa1580156132a3573d6000803e3d6000fd5b505050506040513d60208110156132b957600080fd5b5051600080546040805163e6a4390560e01b81526001600160a01b038b8116600483015280861660248301529151949550929391169163e6a43905916044808301926020929190829003018186803b15801561331457600080fd5b505afa158015613328573d6000803e3d6000fd5b505050506040513d602081101561333e57600080fd5b50516001600160a01b0316148015906133e35750600080546001546040805163e6a4390560e01b81526001600160a01b03868116600483015292831660248201529051919092169163e6a43905916044808301926020929190829003018186803b1580156133ab57600080fd5b505afa1580156133bf573d6000803e3d6000fd5b505050506040513d60208110156133d557600080fd5b50516001600160a01b031614155b156135fa57600080546040805163e6a4390560e01b81526001600160a01b038a8116600483015285811660248301529151919092169163e6a43905916044808301926020929190829003018186803b15801561343e57600080fd5b505afa158015613452573d6000803e3d6000fd5b505050506040513d602081101561346857600080fd5b5051604080516315d5220f60e31b81526001600160a01b038a811660048301529151919092169163aea91078916024808301926020929190829003018186803b1580156134b457600080fd5b505afa1580156134c8573d6000803e3d6000fd5b505050506040513d60208110156134de57600080fd5b5051600080546001546040805163e6a4390560e01b81526001600160a01b03888116600483015292831660248201529051949550929391169163e6a43905916044808301926020929190829003018186803b15801561353c57600080fd5b505afa158015613550573d6000803e3d6000fd5b505050506040513d602081101561356657600080fd5b5051604080516315d5220f60e31b81526001600160a01b0386811660048301529151919092169163aea91078916024808301926020929190829003018186803b1580156135b257600080fd5b505afa1580156135c6573d6000803e3d6000fd5b505050506040513d60208110156135dc57600080fd5b505190506135f0828263ffffffff614cb416565b9550505050613603565b5060010161323a565b505092915050565b6000546001600160a01b031681565b60008054604051635dbdce3b60e11b81526001600160a01b0390911660048201818152602483018690526060604484018181528651606486015286519195939463bb7b9c769486948a948a9491939192608490920191602080870192029081908490849083156113ac578181015183820152602001611394565b6002546001600160a01b031681565b600154600090819081906136c1908e906001600160a01b0316612704565b90506000876136d0578c6136d4565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561374a57600080fd5b505af115801561375e573d6000803e3d6000fd5b505050506137708e8e8e8e8e8e610de7565b909f909e509c50505050505050505050505050565b6000805460408051630dfe168160e01b815290516001600160a01b0380861693169163e6a43905918491630dfe1681916004808301926020929190829003018186803b1580156137d457600080fd5b505afa1580156137e8573d6000803e3d6000fd5b505050506040513d60208110156137fe57600080fd5b50516040805163d21220a760e01b815290516001600160a01b0388169163d21220a7916004808301926020929190829003018186803b15801561384057600080fd5b505afa158015613854573d6000803e3d6000fd5b505050506040513d602081101561386a57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b1580156138ba57600080fd5b505afa1580156138ce573d6000803e3d6000fd5b505050506040513d60208110156138e457600080fd5b50516001600160a01b03161492915050565b6000806000834281101561393f576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b61394d8c8c8c8c8c8c614cd8565b9094509250600061395e8d8d612704565b905061396c8d33838861439d565b6139788c33838761439d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156139d057600080fd5b505af11580156139e4573d6000803e3d6000fd5b505050506040513d60208110156139fa57600080fd5b50516002546040805163b221728160e01b81523360048201526001600160a01b038581166024830152915193965091169163b2217281916044808201926020929091908290030181600087803b158015613a5357600080fd5b505af1158015613a67573d6000803e3d6000fd5b505050506040513d6020811015613a7d57600080fd5b50949d939c50919a509198505050505050505050565b60008060008342811015613adc576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600154613af7908b906001600160a01b03168b348c8c614cd8565b6001549195509350600090613b16908c906001600160a01b0316612704565b9050613b248b33838861439d565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b7457600080fd5b505af1158015613b88573d6000803e3d6000fd5b50506001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015613be157600080fd5b505af1158015613bf5573d6000803e3d6000fd5b505050506040513d6020811015613c0b57600080fd5b5051613c1357fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015613c6b57600080fd5b505af1158015613c7f573d6000803e3d6000fd5b505050506040513d6020811015613c9557600080fd5b50516002546040805163b221728160e01b81523360048201526001600160a01b038581166024830152915193965091169163b2217281916044808201926020929091908290030181600087803b158015613cee57600080fd5b505af1158015613d02573d6000803e3d6000fd5b505050506040513d6020811015613d1857600080fd5b505034841015613d2e57613d2e338534036142a5565b505096509650969350505050565b60608142811015613d82576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600081613d9957fe5b905060200201356001600160a01b03166001600160a01b031614613df2576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018a905260606044840190815260648401899052919263192128b29284928c928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b158015613e7e57600080fd5b505afa158015613e92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613ebb57600080fd5b8101908080516040519392919084600160201b821115613eda57600080fd5b908301906020820185811115613eef57600080fd5b82518660208202830111600160201b82111715613f0b57600080fd5b82525081516020918201928201910280838360005b83811015613f38578181015183820152602001613f20565b5050505090500160405250505091503482600081518110613f5557fe5b60200260200101511115613f9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806151dc6024913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090613fbc57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015613fef57600080fd5b505af1158015614003573d6000803e3d6000fd5b50506001546001600160a01b0316925063a9059cbb915061402a90508888600081611b6e57fe5b8460008151811061403757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561408e57600080fd5b505af11580156140a2573d6000803e3d6000fd5b505050506040513d60208110156140b857600080fd5b50516140c057fe5b6140ff828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506144fa915050565b8160008151811061410c57fe5b60200260200101513411156124b1576124b1338360008151811061412c57fe5b602002602001015134036142a5565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106141b85780518252601f199092019160209182019101614199565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461421a576040519150601f19603f3d011682016040523d82523d6000602084013e61421f565b606091505b509150915081801561424d57508051158061424d575080806020019051602081101561424a57600080fd5b50515b61429e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106142f15780518252601f1990920191602091820191016142d2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614353576040519150601f19603f3d011682016040523d82523d6000602084013e614358565b606091505b50509050806143985760405162461bcd60e51b81526004018080602001828103825260238152602001806152686023913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106144225780518252601f199092019160209182019101614403565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614484576040519150601f19603f3d011682016040523d82523d6000602084013e614489565b606091505b50915091508180156144b75750805115806144b757508080602001905160208110156144b457600080fd5b50515b6144f25760405162461bcd60e51b815260040180806020018281038252602481526020018061528b6024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156148175760008084838151811061451857fe5b602002602001015185846001018151811061452f57fe5b60209081029190910101516000805460408051632a26552b60e11b81526001600160a01b038087166004830152808616602483015282519698509496509294939091169263544caa56926044808201939291829003018186803b15801561459557600080fd5b505afa1580156145a9573d6000803e3d6000fd5b505050506040513d60408110156145bf57600080fd5b505187519091506000908890869081106145d557fe5b6020026020010151905060008886600101815181106145f057fe5b60209081029190910181015160025460408051631ba0488760e21b81523360048201526001600160a01b038a811660248301526044820188905289811660648301529151939550911692636e81221c926084808401938290030181600087803b15801561465c57600080fd5b505af1158015614670573d6000803e3d6000fd5b505050506040513d602081101561468657600080fd5b5060009050806001600160a01b03878116908616146146a7578260006146ab565b6000835b91509150600060028b510389106146c257896146e2565b6146e2878c8b600201815181106146d557fe5b6020026020010151612704565b90506146ee8888612704565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561472b576020820181803883390190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561479c578181015183820152602001614784565b50505050905090810190601f1680156147c95780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156147eb57600080fd5b505af11580156147ff573d6000803e3d6000fd5b50506001909a0199506144fd98505050505050505050565b50505050565b60005b60018351038110156143985760008084838151811061483b57fe5b602002602001015185846001018151811061485257fe5b60209081029190910101516000805460408051632a26552b60e11b81526001600160a01b038087166004830152808616602483015282519698509496509294939091169263544caa56926044808201939291829003018186803b1580156148b857600080fd5b505afa1580156148cc573d6000803e3d6000fd5b505050506040513d60408110156148e257600080fd5b5051905060006148f28484612704565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561493357600080fd5b505afa158015614947573d6000803e3d6000fd5b505050506040513d606081101561495d57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461499a57828461499d565b83835b915091506149fb828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611cee57600080fd5b60005460408051630153543560e21b815260048101849052602481018690526044810185905290519298506001600160a01b039091169163054d50d491606480820192602092909190829003018186803b158015614a5857600080fd5b505afa158015614a6c573d6000803e3d6000fd5b505050506040513d6020811015614a8257600080fd5b505160025460408051631ba0488760e21b81523360048201526001600160a01b038e81166024830152604482018b90528d81166064830152915193985091169550636e81221c94506084808201945060209350908290030181600087803b158015614aec57600080fd5b505af1158015614b00573d6000803e3d6000fd5b505050506040513d6020811015614b1657600080fd5b5060009050806001600160a01b0388811690871614614b3757826000614b3b565b6000835b91509150600060028c51038a10614b52578a614b65565b614b65888d8c600201815181106146d557fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614bef578181015183820152602001614bd7565b50505050905090810190601f168015614c1c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614c3e57600080fd5b505af1158015614c52573d6000803e3d6000fd5b50506001909b019a506148209950505050505050505050565b6000614cad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615060565b9392505050565b6000670de0b6b3a7640000614cc984846150f7565b81614cd057fe5b049392505050565b600080546040805163e6a4390560e01b81526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b158015614d2f57600080fd5b505afa158015614d43573d6000803e3d6000fd5b505050506040513d6020811015614d5957600080fd5b50516001600160a01b03161415614df15760008054604080516364e329cb60e11b81526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b158015614dc457600080fd5b505af1158015614dd8573d6000803e3d6000fd5b505050506040513d6020811015614dee57600080fd5b50505b6000805460408051633274946160e01b81526001600160a01b03928316600482018190528c84166024830152928b166044820152815184939263327494619260648082019391829003018186803b158015614e4b57600080fd5b505afa158015614e5f573d6000803e3d6000fd5b505050506040513d6040811015614e7557600080fd5b508051602090910151909250905081158015614e8f575080155b15614e9f57879350869250615053565b6000805460408051632b58577b60e21b8152600481018c9052602481018690526044810185905290516001600160a01b039092169163ad615dec91606480820192602092909190829003018186803b158015614efa57600080fd5b505afa158015614f0e573d6000803e3d6000fd5b505050506040513d6020811015614f2457600080fd5b50519050878111614f795785811015614f6e5760405162461bcd60e51b81526004018080602001828103825260238152602001806152216023913960400191505060405180910390fd5b889450925082615051565b6000805460408051632b58577b60e21b8152600481018c9052602481018690526044810187905290516001600160a01b039092169163ad615dec91606480820192602092909190829003018186803b158015614fd457600080fd5b505afa158015614fe8573d6000803e3d6000fd5b505050506040513d6020811015614ffe57600080fd5b505190508981111561500c57fe5b8781101561504b5760405162461bcd60e51b81526004018080602001828103825260238152602001806151b96023913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081848411156150ef5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156150b457818101518382015260200161509c565b50505050905090810190601f1680156150e15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000826151065750600061149b565b8282028284828161511357fe5b0414614cad5760405162461bcd60e51b81526004018080602001828103825260218152602001806152006021913960400191505060405180910390fdfe427473776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54427473776170526f757465723a20494e56414c49445f50415448000000000000427473776170526f757465723a20455850495245440000000000000000000000427473776170526f757465723a20494e53554646494349454e545f415f414d4f554e54427473776170526f757465723a204558434553534956455f494e5055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77427473776170526f757465723a20494e53554646494349454e545f425f414d4f554e54427473776170526f757465723a2063616c6c6572206973206e6f742074686520706169725472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a7231582073f0d81d05ff7f6df45469641159ac1fae238723aa3f5fcd7c5462af4be159a764736f6c634300051000320000000000000000000000001fed2e360a5afb2ac4b047102a7012a57f3c8cab000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000cb4336d9aa2027f563437b721b34c56a3e7a23f4
Deployed Bytecode
0x6080604052600436106101c25760003560e01c806396ed28f9116100f7578063c45a015511610095578063e5e31b1311610064578063e5e31b1314610c6a578063e8e3370014610c9d578063f305d71914610d1d578063fb3bdb4114610d63576101c2565b8063c45a015514610b18578063d06ca61f14610b2d578063dab4b6fd14610be2578063ded9382a14610bf7576101c2565b8063af2979eb116100d1578063af2979eb146109b1578063b6f9de9514610a04578063baa2abde14610a88578063be20492f14610ae5576101c2565b806396ed28f91461090f578063ad5c464814610966578063ad615dec1461097b576101c2565b80635b0d5984116101645780637e779e331161013e5780637e779e33146107705780637ff36ab5146107bf57806385f8c259146108435780638803dbee14610879576101c2565b80635b0d5984146105d15780635c11d79514610644578063791ac947146106da576101c2565b80631f00ca74116101a05780631f00ca74146103725780632195995c1461042757806338ed1739146104a55780634a25d94a1461053b576101c2565b806302751cec146101d8578063054d50d41461024457806318cbafe51461028c575b6001546001600160a01b031633146101d657fe5b005b3480156101e457600080fd5b5061022b600480360360c08110156101fb57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610de7565b6040805192835260208301919091528051918290030190f35b34801561025057600080fd5b5061027a6004803603606081101561026757600080fd5b5080359060208101359060400135610ed5565b60408051918252519081900360200190f35b34801561029857600080fd5b50610322600480360360a08110156102af57600080fd5b813591602081013591810190606081016040820135600160201b8111156102d557600080fd5b8201836020820111156102e757600080fd5b803590602001918460208302840111600160201b8311171561030857600080fd5b91935091506001600160a01b038135169060200135610f64565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561035e578181015183820152602001610346565b505050509050019250505060405180910390f35b34801561037e57600080fd5b506103226004803603604081101561039557600080fd5b81359190810190604081016020820135600160201b8111156103b657600080fd5b8201836020820111156103c857600080fd5b803590602001918460208302840111600160201b831117156103e957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061132f945050505050565b34801561043357600080fd5b5061022b600480360361016081101561044b57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356114a1565b3480156104b157600080fd5b50610322600480360360a08110156104c857600080fd5b813591602081013591810190606081016040820135600160201b8111156104ee57600080fd5b82018360208201111561050057600080fd5b803590602001918460208302840111600160201b8311171561052157600080fd5b91935091506001600160a01b03813516906020013561157a565b34801561054757600080fd5b50610322600480360360a081101561055e57600080fd5b813591602081013591810190606081016040820135600160201b81111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460208302840111600160201b831117156105b757600080fd5b91935091506001600160a01b0381351690602001356117ba565b3480156105dd57600080fd5b5061027a60048036036101408110156105f557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611a1d565b34801561065057600080fd5b506101d6600480360360a081101561066757600080fd5b813591602081013591810190606081016040820135600160201b81111561068d57600080fd5b82018360208201111561069f57600080fd5b803590602001918460208302840111600160201b831117156106c057600080fd5b91935091506001600160a01b038135169060200135611af9565b3480156106e657600080fd5b506101d6600480360360a08110156106fd57600080fd5b813591602081013591810190606081016040820135600160201b81111561072357600080fd5b82018360208201111561073557600080fd5b803590602001918460208302840111600160201b8311171561075657600080fd5b91935091506001600160a01b038135169060200135611d6d565b34801561077c57600080fd5b506107ab6004803603604081101561079357600080fd5b506001600160a01b0381358116916020013516611f9b565b604080519115158252519081900360200190f35b610322600480360360808110156107d557600080fd5b81359190810190604081016020820135600160201b8111156107f657600080fd5b82018360208201111561080857600080fd5b803590602001918460208302840111600160201b8311171561082957600080fd5b91935091506001600160a01b0381351690602001356120ec565b34801561084f57600080fd5b5061027a6004803603606081101561086657600080fd5b50803590602081013590604001356124bb565b34801561088557600080fd5b50610322600480360360a081101561089c57600080fd5b813591602081013591810190606081016040820135600160201b8111156108c257600080fd5b8201836020820111156108d457600080fd5b803590602001918460208302840111600160201b831117156108f557600080fd5b91935091506001600160a01b038135169060200135612516565b34801561091b57600080fd5b5061094a6004803603604081101561093257600080fd5b506001600160a01b0381358116916020013516612704565b604080516001600160a01b039092168252519081900360200190f35b34801561097257600080fd5b5061094a612793565b34801561098757600080fd5b5061027a6004803603606081101561099e57600080fd5b50803590602081013590604001356127a2565b3480156109bd57600080fd5b5061027a600480360360c08110156109d457600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356127fd565b6101d660048036036080811015610a1a57600080fd5b81359190810190604081016020820135600160201b811115610a3b57600080fd5b820183602082011115610a4d57600080fd5b803590602001918460208302840111600160201b83111715610a6e57600080fd5b91935091506001600160a01b038135169060200135612952565b348015610a9457600080fd5b5061022b600480360360e0811015610aab57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612c68565b348015610af157600080fd5b5061027a60048036036020811015610b0857600080fd5b50356001600160a01b0316612fb3565b348015610b2457600080fd5b5061094a61360b565b348015610b3957600080fd5b5061032260048036036040811015610b5057600080fd5b81359190810190604081016020820135600160201b811115610b7157600080fd5b820183602082011115610b8357600080fd5b803590602001918460208302840111600160201b83111715610ba457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061361a945050505050565b348015610bee57600080fd5b5061094a613694565b348015610c0357600080fd5b5061022b6004803603610140811015610c1b57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356136a3565b348015610c7657600080fd5b506107ab60048036036020811015610c8d57600080fd5b50356001600160a01b0316613785565b348015610ca957600080fd5b50610cff6004803603610100811015610cc157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356138f6565b60408051938452602084019290925282820152519081900360600190f35b610cff600480360360c0811015610d3357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135613a93565b61032260048036036080811015610d7957600080fd5b81359190810190604081016020820135600160201b811115610d9a57600080fd5b820183602082011115610dac57600080fd5b803590602001918460208302840111600160201b83111715610dcd57600080fd5b91935091506001600160a01b038135169060200135613d3c565b6000808242811015610e2e576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600154610e4a908a906001600160a01b03168a8a8a308a612c68565b9093509150610e5a89868561413b565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b50505050610ec985836142a5565b50965096945050505050565b6000805460408051630153543560e21b815260048101879052602481018690526044810185905290516001600160a01b039092169163054d50d491606480820192602092909190829003018186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d6020811015610f5a57600080fd5b5051949350505050565b60608142811015610faa576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b031686866000198101818110610fc657fe5b905060200201356001600160a01b03166001600160a01b03161461101f576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051635dbdce3b60e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263bb7b9c769284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156110e857600080fd5b8101908080516040519392919084600160201b82111561110757600080fd5b90830190602082018581111561111c57600080fd5b82518660208202830111600160201b8211171561113857600080fd5b82525081516020918201928201910280838360005b8381101561116557818101518382015260200161114d565b505050509050016040525050509150868260018451038151811061118557fe5b602002602001015110156111ca5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b611247868660008181106111da57fe5b905060200201356001600160a01b03163361122d898960008181106111fb57fe5b905060200201356001600160a01b03168a8a600181811061121857fe5b905060200201356001600160a01b0316612704565b8560008151811061123a57fe5b602002602001015161439d565b611286828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506144fa915050565b60015482516001600160a01b0390911690632e1a7d4d90849060001981019081106112ad57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b50505050611324848360018551038151811061131757fe5b60200260200101516142a5565b509695505050505050565b60008054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018690526060604484018181528651606486015286519195939463192128b29486948a948a949193919260849092019160208087019202908190849084905b838110156113ac578181015183820152602001611394565b5050505090500194505050505060006040518083038186803b1580156113d157600080fd5b505afa1580156113e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561140e57600080fd5b8101908080516040519392919084600160201b82111561142d57600080fd5b90830190602082018581111561144257600080fd5b82518660208202830111600160201b8211171561145e57600080fd5b82525081516020918201928201910280838360005b8381101561148b578181015183820152602001611473565b5050505090500160405250505090505b92915050565b60008060006114b08e8e612704565b90506000876114bf578c6114c3565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050506115608f8f8f8f8f8f8f612c68565b809450819550505050509b509b9950505050505050505050565b606081428110156115c0576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600054604051635dbdce3b60e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263bb7b9c769284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561164c57600080fd5b505afa158015611660573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561168957600080fd5b8101908080516040519392919084600160201b8211156116a857600080fd5b9083019060208201858111156116bd57600080fd5b82518660208202830111600160201b821117156116d957600080fd5b82525081516020918201928201910280838360005b838110156117065781810151838201526020016116ee565b505050509050016040525050509150868260018451038151811061172657fe5b6020026020010151101561176b5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b61177b868660008181106111da57fe5b611324828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506144fa915050565b60608142811015611800576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600019810181811061181c57fe5b905060200201356001600160a01b03166001600160a01b031614611875576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263192128b29284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561190157600080fd5b505afa158015611915573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561193e57600080fd5b8101908080516040519392919084600160201b82111561195d57600080fd5b90830190602082018581111561197257600080fd5b82518660208202830111600160201b8211171561198e57600080fd5b82525081516020918201928201910280838360005b838110156119bb5781810151838201526020016119a3565b50505050905001604052505050915086826000815181106119d857fe5b602002602001015111156111ca5760405162461bcd60e51b81526004018080602001828103825260248152602001806151dc6024913960400191505060405180910390fd5b6001546000908190611a39908d906001600160a01b0316612704565b9050600086611a48578b611a4c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611ac257600080fd5b505af1158015611ad6573d6000803e3d6000fd5b50505050611ae88d8d8d8d8d8d6127fd565b9d9c50505050505050505050505050565b8042811015611b3d576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b611b9185856000818110611b4d57fe5b905060200201356001600160a01b031633611b8b88886000818110611b6e57fe5b905060200201356001600160a01b03168989600181811061121857fe5b8a61439d565b600085856000198101818110611ba357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c0857600080fd5b505afa158015611c1c573d6000803e3d6000fd5b505050506040513d6020811015611c3257600080fd5b50516040805160208881028281018201909352888252929350611c7492909189918991829185019084908082843760009201919091525088925061481d915050565b86611d268288886000198101818110611c8957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d6020811015611d1857600080fd5b50519063ffffffff614c6b16565b1015611d635760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b5050505050505050565b8042811015611db1576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b031685856000198101818110611dcd57fe5b905060200201356001600160a01b03166001600160a01b031614611e26576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b611e3685856000818110611b4d57fe5b611e7485858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061481d915050565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611ebf57600080fd5b505afa158015611ed3573d6000803e3d6000fd5b505050506040513d6020811015611ee957600080fd5b5051905086811015611f2c5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b60015460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611f7957600080fd5b505af1158015611f8d573d6000803e3d6000fd5b50505050611d6384826142a5565b6000611fa633613785565b611fe15760405162461bcd60e51b81526004018080602001828103825260248152602001806152446024913960400191505060405180910390fd5b6002546040805163b221728160e01b81526001600160a01b0386811660048301523360248301529151919092169163b22172819160448083019260209291908290030181600087803b15801561203657600080fd5b505af115801561204a573d6000803e3d6000fd5b505050506040513d602081101561206057600080fd5b50506002546040805163b221728160e01b81526001600160a01b0385811660048301523360248301529151919092169163b22172819160448083019260209291908290030181600087803b1580156120b757600080fd5b505af11580156120cb573d6000803e3d6000fd5b505050506040513d60208110156120e157600080fd5b506001949350505050565b60608142811015612132576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b0316868660008161214957fe5b905060200201356001600160a01b03166001600160a01b0316146121a2576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051635dbdce3b60e11b81526001600160a01b03909116600482018181523460248401819052606060448501908152606485018a9052929363bb7b9c769385938c928c9290608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561222d57600080fd5b505afa158015612241573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561226a57600080fd5b8101908080516040519392919084600160201b82111561228957600080fd5b90830190602082018581111561229e57600080fd5b82518660208202830111600160201b821117156122ba57600080fd5b82525081516020918201928201910280838360005b838110156122e75781810151838201526020016122cf565b505050509050016040525050509150868260018451038151811061230757fe5b6020026020010151101561234c5760405162461bcd60e51b81526004018080602001828103825260288152602001806151516028913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db090849060009061236e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a157600080fd5b505af11580156123b5573d6000803e3d6000fd5b50506001546001600160a01b0316925063a9059cbb91506123dc90508888600081611b6e57fe5b846000815181106123e957fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561244057600080fd5b505af1158015612454573d6000803e3d6000fd5b505050506040513d602081101561246a57600080fd5b505161247257fe5b6124b1828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506144fa915050565b5095945050505050565b60008054604080516385f8c25960e01b815260048101879052602481018690526044810185905290516001600160a01b03909216916385f8c25991606480820192602092909190829003018186803b158015610f3057600080fd5b6060814281101561255c576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018b905260606044840190815260648401899052919263192128b29284928d928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b1580156125e857600080fd5b505afa1580156125fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561262557600080fd5b8101908080516040519392919084600160201b82111561264457600080fd5b90830190602082018581111561265957600080fd5b82518660208202830111600160201b8211171561267557600080fd5b82525081516020918201928201910280838360005b838110156126a257818101518382015260200161268a565b50505050905001604052505050915086826000815181106126bf57fe5b6020026020010151111561176b5760405162461bcd60e51b81526004018080602001828103825260248152602001806151dc6024913960400191505060405180910390fd5b60008054604080516336c8e07160e11b81526001600160a01b0392831660048201819052868416602483015292851660448201529051636d91c0e291606480820192602092909190829003018186803b15801561276057600080fd5b505afa158015612774573d6000803e3d6000fd5b505050506040513d602081101561278a57600080fd5b50519392505050565b6001546001600160a01b031681565b6000805460408051632b58577b60e21b815260048101879052602481018690526044810185905290516001600160a01b039092169163ad615dec91606480820192602092909190829003018186803b158015610f3057600080fd5b60008142811015612843576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b60015461285f9089906001600160a01b03168989893089612c68565b604080516370a0823160e01b815230600482015290519194506128e392508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156128b257600080fd5b505afa1580156128c6573d6000803e3d6000fd5b505050506040513d60208110156128dc57600080fd5b505161413b565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561293057600080fd5b505af1158015612944573d6000803e3d6000fd5b5050505061132484836142a5565b8042811015612996576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b031685856000816129ad57fe5b905060200201356001600160a01b03166001600160a01b031614612a06576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b60015460408051630d0e30db60e41b8152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b158015612a4e57600080fd5b505af1158015612a62573d6000803e3d6000fd5b50506001546001600160a01b0316925063a9059cbb9150612a8990508888600081611b6e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050506040513d6020811015612b0357600080fd5b5051612b0b57fe5b600086866000198101818110612b1d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612b8257600080fd5b505afa158015612b96573d6000803e3d6000fd5b505050506040513d6020811015612bac57600080fd5b50516040805160208981028281018201909352898252929350612bee9290918a918a91829185019084908082843760009201919091525089925061481d915050565b87611d268289896000198101818110612c0357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611cee57600080fd5b6000808242811015612caf576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6000612cbb8b8b612704565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612d1657600080fd5b505af1158015612d2a573d6000803e3d6000fd5b505050506040513d6020811015612d4057600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612d8d57600080fd5b505af1158015612da1573d6000803e3d6000fd5b505050506040513d6040811015612db757600080fd5b5080516020918201516002546040805163b221728160e01b81523360048201526001600160a01b0389811660248301529151949750929550169263b2217281926044808401938290030181600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b505050506040513d6020811015612e3d57600080fd5b81019080805190602001909291905050505060008060009054906101000a90046001600160a01b03166001600160a01b031663544caa568f8f6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b158015612ed457600080fd5b505afa158015612ee8573d6000803e3d6000fd5b505050506040513d6040811015612efe57600080fd5b505190506001600160a01b038e811690821614612f1c578183612f1f565b82825b90975095508a871015612f635760405162461bcd60e51b81526004018080602001828103825260238152602001806151b96023913960400191505060405180910390fd5b89861015612fa25760405162461bcd60e51b81526004018080602001828103825260238152602001806152216023913960400191505060405180910390fd5b505050505097509795505050505050565b60015460009081906001600160a01b038481169116141561304557731eae93c8544c7935815aadea5cc5aedd04326680637df38c5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561301257600080fd5b505af4158015613026573d6000803e3d6000fd5b505050506040513d602081101561303c57600080fd5b5051905061149b565b600080546001546040805163e6a4390560e01b81526001600160a01b03888116600483015292831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561309e57600080fd5b505afa1580156130b2573d6000803e3d6000fd5b505050506040513d60208110156130c857600080fd5b50516001600160a01b0316146131ba576000546001546040805163e6a4390560e01b81526001600160a01b03878116600483015292831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561313057600080fd5b505afa158015613144573d6000803e3d6000fd5b505050506040513d602081101561315a57600080fd5b5051604080516315d5220f60e31b81526001600160a01b0386811660048301529151919092169163aea91078916024808301926020929190829003018186803b1580156131a657600080fd5b505afa158015613026573d6000803e3d6000fd5b60008060009054906101000a90046001600160a01b03166001600160a01b031663b9b513d16040518163ffffffff1660e01b815260040160206040518083038186803b15801561320957600080fd5b505afa15801561321d573d6000803e3d6000fd5b505050506040513d602081101561323357600080fd5b5051905060005b81811015613603576000805460408051634b5fe2f960e01b81526004810185905290516001600160a01b0390921691634b5fe2f991602480820192602092909190829003018186803b15801561328f57600080fd5b505afa1580156132a3573d6000803e3d6000fd5b505050506040513d60208110156132b957600080fd5b5051600080546040805163e6a4390560e01b81526001600160a01b038b8116600483015280861660248301529151949550929391169163e6a43905916044808301926020929190829003018186803b15801561331457600080fd5b505afa158015613328573d6000803e3d6000fd5b505050506040513d602081101561333e57600080fd5b50516001600160a01b0316148015906133e35750600080546001546040805163e6a4390560e01b81526001600160a01b03868116600483015292831660248201529051919092169163e6a43905916044808301926020929190829003018186803b1580156133ab57600080fd5b505afa1580156133bf573d6000803e3d6000fd5b505050506040513d60208110156133d557600080fd5b50516001600160a01b031614155b156135fa57600080546040805163e6a4390560e01b81526001600160a01b038a8116600483015285811660248301529151919092169163e6a43905916044808301926020929190829003018186803b15801561343e57600080fd5b505afa158015613452573d6000803e3d6000fd5b505050506040513d602081101561346857600080fd5b5051604080516315d5220f60e31b81526001600160a01b038a811660048301529151919092169163aea91078916024808301926020929190829003018186803b1580156134b457600080fd5b505afa1580156134c8573d6000803e3d6000fd5b505050506040513d60208110156134de57600080fd5b5051600080546001546040805163e6a4390560e01b81526001600160a01b03888116600483015292831660248201529051949550929391169163e6a43905916044808301926020929190829003018186803b15801561353c57600080fd5b505afa158015613550573d6000803e3d6000fd5b505050506040513d602081101561356657600080fd5b5051604080516315d5220f60e31b81526001600160a01b0386811660048301529151919092169163aea91078916024808301926020929190829003018186803b1580156135b257600080fd5b505afa1580156135c6573d6000803e3d6000fd5b505050506040513d60208110156135dc57600080fd5b505190506135f0828263ffffffff614cb416565b9550505050613603565b5060010161323a565b505092915050565b6000546001600160a01b031681565b60008054604051635dbdce3b60e11b81526001600160a01b0390911660048201818152602483018690526060604484018181528651606486015286519195939463bb7b9c769486948a948a9491939192608490920191602080870192029081908490849083156113ac578181015183820152602001611394565b6002546001600160a01b031681565b600154600090819081906136c1908e906001600160a01b0316612704565b90506000876136d0578c6136d4565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561374a57600080fd5b505af115801561375e573d6000803e3d6000fd5b505050506137708e8e8e8e8e8e610de7565b909f909e509c50505050505050505050505050565b6000805460408051630dfe168160e01b815290516001600160a01b0380861693169163e6a43905918491630dfe1681916004808301926020929190829003018186803b1580156137d457600080fd5b505afa1580156137e8573d6000803e3d6000fd5b505050506040513d60208110156137fe57600080fd5b50516040805163d21220a760e01b815290516001600160a01b0388169163d21220a7916004808301926020929190829003018186803b15801561384057600080fd5b505afa158015613854573d6000803e3d6000fd5b505050506040513d602081101561386a57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b1580156138ba57600080fd5b505afa1580156138ce573d6000803e3d6000fd5b505050506040513d60208110156138e457600080fd5b50516001600160a01b03161492915050565b6000806000834281101561393f576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b61394d8c8c8c8c8c8c614cd8565b9094509250600061395e8d8d612704565b905061396c8d33838861439d565b6139788c33838761439d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156139d057600080fd5b505af11580156139e4573d6000803e3d6000fd5b505050506040513d60208110156139fa57600080fd5b50516002546040805163b221728160e01b81523360048201526001600160a01b038581166024830152915193965091169163b2217281916044808201926020929091908290030181600087803b158015613a5357600080fd5b505af1158015613a67573d6000803e3d6000fd5b505050506040513d6020811015613a7d57600080fd5b50949d939c50919a509198505050505050505050565b60008060008342811015613adc576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b600154613af7908b906001600160a01b03168b348c8c614cd8565b6001549195509350600090613b16908c906001600160a01b0316612704565b9050613b248b33838861439d565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b7457600080fd5b505af1158015613b88573d6000803e3d6000fd5b50506001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015613be157600080fd5b505af1158015613bf5573d6000803e3d6000fd5b505050506040513d6020811015613c0b57600080fd5b5051613c1357fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015613c6b57600080fd5b505af1158015613c7f573d6000803e3d6000fd5b505050506040513d6020811015613c9557600080fd5b50516002546040805163b221728160e01b81523360048201526001600160a01b038581166024830152915193965091169163b2217281916044808201926020929091908290030181600087803b158015613cee57600080fd5b505af1158015613d02573d6000803e3d6000fd5b505050506040513d6020811015613d1857600080fd5b505034841015613d2e57613d2e338534036142a5565b505096509650969350505050565b60608142811015613d82576040805162461bcd60e51b81526020600482015260156024820152600080516020615199833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600081613d9957fe5b905060200201356001600160a01b03166001600160a01b031614613df2576040805162461bcd60e51b815260206004820152601a6024820152600080516020615179833981519152604482015290519081900360640190fd5b600054604051630c90945960e11b81526001600160a01b0390911660048201818152602483018a905260606044840190815260648401899052919263192128b29284928c928c928c9291608401846020850280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b158015613e7e57600080fd5b505afa158015613e92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613ebb57600080fd5b8101908080516040519392919084600160201b821115613eda57600080fd5b908301906020820185811115613eef57600080fd5b82518660208202830111600160201b82111715613f0b57600080fd5b82525081516020918201928201910280838360005b83811015613f38578181015183820152602001613f20565b5050505090500160405250505091503482600081518110613f5557fe5b60200260200101511115613f9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806151dc6024913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090613fbc57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015613fef57600080fd5b505af1158015614003573d6000803e3d6000fd5b50506001546001600160a01b0316925063a9059cbb915061402a90508888600081611b6e57fe5b8460008151811061403757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561408e57600080fd5b505af11580156140a2573d6000803e3d6000fd5b505050506040513d60208110156140b857600080fd5b50516140c057fe5b6140ff828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506144fa915050565b8160008151811061410c57fe5b60200260200101513411156124b1576124b1338360008151811061412c57fe5b602002602001015134036142a5565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106141b85780518252601f199092019160209182019101614199565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461421a576040519150601f19603f3d011682016040523d82523d6000602084013e61421f565b606091505b509150915081801561424d57508051158061424d575080806020019051602081101561424a57600080fd5b50515b61429e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106142f15780518252601f1990920191602091820191016142d2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614353576040519150601f19603f3d011682016040523d82523d6000602084013e614358565b606091505b50509050806143985760405162461bcd60e51b81526004018080602001828103825260238152602001806152686023913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106144225780518252601f199092019160209182019101614403565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614484576040519150601f19603f3d011682016040523d82523d6000602084013e614489565b606091505b50915091508180156144b75750805115806144b757508080602001905160208110156144b457600080fd5b50515b6144f25760405162461bcd60e51b815260040180806020018281038252602481526020018061528b6024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156148175760008084838151811061451857fe5b602002602001015185846001018151811061452f57fe5b60209081029190910101516000805460408051632a26552b60e11b81526001600160a01b038087166004830152808616602483015282519698509496509294939091169263544caa56926044808201939291829003018186803b15801561459557600080fd5b505afa1580156145a9573d6000803e3d6000fd5b505050506040513d60408110156145bf57600080fd5b505187519091506000908890869081106145d557fe5b6020026020010151905060008886600101815181106145f057fe5b60209081029190910181015160025460408051631ba0488760e21b81523360048201526001600160a01b038a811660248301526044820188905289811660648301529151939550911692636e81221c926084808401938290030181600087803b15801561465c57600080fd5b505af1158015614670573d6000803e3d6000fd5b505050506040513d602081101561468657600080fd5b5060009050806001600160a01b03878116908616146146a7578260006146ab565b6000835b91509150600060028b510389106146c257896146e2565b6146e2878c8b600201815181106146d557fe5b6020026020010151612704565b90506146ee8888612704565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561472b576020820181803883390190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561479c578181015183820152602001614784565b50505050905090810190601f1680156147c95780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156147eb57600080fd5b505af11580156147ff573d6000803e3d6000fd5b50506001909a0199506144fd98505050505050505050565b50505050565b60005b60018351038110156143985760008084838151811061483b57fe5b602002602001015185846001018151811061485257fe5b60209081029190910101516000805460408051632a26552b60e11b81526001600160a01b038087166004830152808616602483015282519698509496509294939091169263544caa56926044808201939291829003018186803b1580156148b857600080fd5b505afa1580156148cc573d6000803e3d6000fd5b505050506040513d60408110156148e257600080fd5b5051905060006148f28484612704565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561493357600080fd5b505afa158015614947573d6000803e3d6000fd5b505050506040513d606081101561495d57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461499a57828461499d565b83835b915091506149fb828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611cee57600080fd5b60005460408051630153543560e21b815260048101849052602481018690526044810185905290519298506001600160a01b039091169163054d50d491606480820192602092909190829003018186803b158015614a5857600080fd5b505afa158015614a6c573d6000803e3d6000fd5b505050506040513d6020811015614a8257600080fd5b505160025460408051631ba0488760e21b81523360048201526001600160a01b038e81166024830152604482018b90528d81166064830152915193985091169550636e81221c94506084808201945060209350908290030181600087803b158015614aec57600080fd5b505af1158015614b00573d6000803e3d6000fd5b505050506040513d6020811015614b1657600080fd5b5060009050806001600160a01b0388811690871614614b3757826000614b3b565b6000835b91509150600060028c51038a10614b52578a614b65565b614b65888d8c600201815181106146d557fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614bef578181015183820152602001614bd7565b50505050905090810190601f168015614c1c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614c3e57600080fd5b505af1158015614c52573d6000803e3d6000fd5b50506001909b019a506148209950505050505050505050565b6000614cad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615060565b9392505050565b6000670de0b6b3a7640000614cc984846150f7565b81614cd057fe5b049392505050565b600080546040805163e6a4390560e01b81526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b158015614d2f57600080fd5b505afa158015614d43573d6000803e3d6000fd5b505050506040513d6020811015614d5957600080fd5b50516001600160a01b03161415614df15760008054604080516364e329cb60e11b81526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b158015614dc457600080fd5b505af1158015614dd8573d6000803e3d6000fd5b505050506040513d6020811015614dee57600080fd5b50505b6000805460408051633274946160e01b81526001600160a01b03928316600482018190528c84166024830152928b166044820152815184939263327494619260648082019391829003018186803b158015614e4b57600080fd5b505afa158015614e5f573d6000803e3d6000fd5b505050506040513d6040811015614e7557600080fd5b508051602090910151909250905081158015614e8f575080155b15614e9f57879350869250615053565b6000805460408051632b58577b60e21b8152600481018c9052602481018690526044810185905290516001600160a01b039092169163ad615dec91606480820192602092909190829003018186803b158015614efa57600080fd5b505afa158015614f0e573d6000803e3d6000fd5b505050506040513d6020811015614f2457600080fd5b50519050878111614f795785811015614f6e5760405162461bcd60e51b81526004018080602001828103825260238152602001806152216023913960400191505060405180910390fd5b889450925082615051565b6000805460408051632b58577b60e21b8152600481018c9052602481018690526044810187905290516001600160a01b039092169163ad615dec91606480820192602092909190829003018186803b158015614fd457600080fd5b505afa158015614fe8573d6000803e3d6000fd5b505050506040513d6020811015614ffe57600080fd5b505190508981111561500c57fe5b8781101561504b5760405162461bcd60e51b81526004018080602001828103825260238152602001806151b96023913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081848411156150ef5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156150b457818101518382015260200161509c565b50505050905090810190601f1680156150e15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000826151065750600061149b565b8282028284828161511357fe5b0414614cad5760405162461bcd60e51b81526004018080602001828103825260218152602001806152006021913960400191505060405180910390fdfe427473776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54427473776170526f757465723a20494e56414c49445f50415448000000000000427473776170526f757465723a20455850495245440000000000000000000000427473776170526f757465723a20494e53554646494349454e545f415f414d4f554e54427473776170526f757465723a204558434553534956455f494e5055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77427473776170526f757465723a20494e53554646494349454e545f425f414d4f554e54427473776170526f757465723a2063616c6c6572206973206e6f742074686520706169725472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a7231582073f0d81d05ff7f6df45469641159ac1fae238723aa3f5fcd7c5462af4be159a764736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001fed2e360a5afb2ac4b047102a7012a57f3c8cab000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000cb4336d9aa2027f563437b721b34c56a3e7a23f4
-----Decoded View---------------
Arg [0] : _factory (address): 0x1fed2E360a5aFb2ac4b047102A7012a57f3c8cab
Arg [1] : _WETH (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _BT (address): 0xCb4336D9aA2027f563437B721b34C56a3E7A23F4
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000001fed2e360a5afb2ac4b047102a7012a57f3c8cab
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 000000000000000000000000cb4336d9aa2027f563437b721b34c56a3e7a23f4
Deployed Bytecode Sourcemap
17249:19745:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17689:4;;-1:-1:-1;;;;;17689:4:0;17675:10;:18;17668:26;;;;17249:19745;22112:679;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22112:679:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22112:679:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;34299:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34299:213:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34299:213:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;29006:750;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29006:750:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;29006:750:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;29006:750:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;29006:750:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29006:750:0;;-1:-1:-1;29006:750:0;-1:-1:-1;;;;;;29006:750:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29006:750:0;;;;;;;;;;;;;;;;;34946:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34946:198:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34946:198:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;34946:198:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;34946:198:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34946:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34946:198:0;;-1:-1:-1;34946:198:0;;-1:-1:-1;;;;;34946:198:0:i;22799:661::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22799:661:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22799:661:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26501:577::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26501:577:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;26501:577:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26501:577:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26501:577:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26501:577:0;;-1:-1:-1;26501:577:0;-1:-1:-1;;;;;;26501:577:0;;;;;;;;:::i;28270:728::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28270:728:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;28270:728:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28270:728:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28270:728:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;28270:728:0;;-1:-1:-1;28270:728:0;-1:-1:-1;;;;;;28270:728:0;;;;;;;;:::i;24911:675::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24911:675:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24911:675:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31941:619::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31941:619:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;31941:619:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31941:619:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31941:619:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31941:619:0;;-1:-1:-1;31941:619:0;-1:-1:-1;;;;;;31941:619:0;;;;;;;;:::i;33311:746::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33311:746:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;33311:746:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;33311:746:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;33311:746:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;33311:746:0;;-1:-1:-1;33311:746:0;-1:-1:-1;;;;;;33311:746:0;;;;;;;;:::i;36296:235::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36296:235:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;36296:235:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;27649:613;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;27649:613:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;27649:613:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;27649:613:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27649:613:0;;-1:-1:-1;27649:613:0;-1:-1:-1;;;;;;27649:613:0;;;;;;;;:::i;34520:212::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34520:212:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34520:212:0;;;;;;;;;;;;:::i;27086:555::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27086:555:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;27086:555:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;27086:555:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;27086:555:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27086:555:0;;-1:-1:-1;27086:555:0;-1:-1:-1;;;;;;27086:555:0;;;;;;;;:::i;17710:165::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17710:165:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17710:165:0;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;17710:165:0;;;;;;;;;;;;;;17361:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17361:19:0;;;:::i;34101:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34101:190:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34101:190:0;;;;;;;;;;;;:::i;24200:703::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24200:703:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24200:703:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32568:735::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;32568:735:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;32568:735:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;32568:735:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;32568:735:0;;-1:-1:-1;32568:735:0;-1:-1:-1;;;;;;32568:735:0;;;;;;;;:::i;21189:915::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21189:915:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;21189:915:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;35152:1136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35152:1136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35152:1136:0;-1:-1:-1;;;;;35152:1136:0;;:::i;17332:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17332:22:0;;;:::i;34740:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34740:198:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34740:198:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;34740:198:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;34740:198:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34740:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34740:198:0;;-1:-1:-1;34740:198:0;;-1:-1:-1;;;;;34740:198:0:i;17387:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17387:17:0;;;:::i;23468:653::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23468:653:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;23468:653:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;36541:188::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36541:188:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36541:188:0;-1:-1:-1;;;;;36541:188:0;;:::i;19344:776::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19344:776:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19344:776:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;20128:1018;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20128:1018:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29764:726::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;29764:726:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;29764:726:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;29764:726:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29764:726:0;;-1:-1:-1;29764:726:0;-1:-1:-1;;;;;;29764:726:0;;;;;;;;:::i;22112:679::-;22344:19;22365:17;22325:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;22472:4;;22422:196;;22452:5;;-1:-1:-1;;;;;22472:4:0;22491:9;22515:14;22544:12;22579:4;22599:8;22422:15;:196::i;:::-;22395:223;;-1:-1:-1;22395:223:0;-1:-1:-1;22629:51:0;22657:5;22664:2;22395:223;22629:27;:51::i;:::-;22702:4;;22691:36;;;-1:-1:-1;;;22691:36:0;;;;;;;;;;-1:-1:-1;;;;;22702:4:0;;;;22691:25;;:36;;;;;22702:4;;22691:36;;;;;;;;22702:4;;22691:36;;;5:2:-1;;;;30:1;27;20:12;5:2;22691:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22691:36:0;;;;22738:45;22769:2;22773:9;22738:30;:45::i;:::-;22112:679;;;;;;;;;;:::o;34299:213::-;34399:17;34450:7;;34435:69;;;-1:-1:-1;;;34435:69:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34450:7:0;;;;34435:36;;:69;;;;;;;;;;;;;;;34450:7;34435:69;;;5:2:-1;;;;30:1;27;20:12;5:2;34435:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34435:69:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34435:69:0;;34299:213;-1:-1:-1;;;;34299:213:0:o;29006:750::-;29167:24;29148:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;29236:4;;-1:-1:-1;;;;;29236:4:0;29211;;-1:-1:-1;;29216:15:0;;29211:21;;;;;;;;;;;;;-1:-1:-1;;;;;29211:21:0;-1:-1:-1;;;;;29211:29:0;;29203:68;;;;;-1:-1:-1;;;29203:68:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;29203:68:0;;;;;;;;;;;;;;;29307:7;;29292:62;;-1:-1:-1;;;29292:62:0;;-1:-1:-1;;;;;29307:7:0;;;29292:62;;;;;;;;;;;;;;;;;;;;;;;;;29307:7;;29292:37;;29307:7;;29339:8;;29349:4;;;;29292:62;;;29349:4;29292:62;;;;29349:4;29292:62;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;29292:62:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29292:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29292:62:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29292:62:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;29292:62:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;29292:62:0;;421:4:-1;412:14;;;;29292:62:0;;;;;412:14:-1;29292:62:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29292:62:0;;;;;;;;;;;29282:72;;29404:12;29373:7;29398:1;29381:7;:14;:18;29373:27;;;;;;;;;;;;;;:43;;29365:96;;;;-1:-1:-1;;;29365:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29472:91;29504:4;;29509:1;29504:7;;;;;;;;;;;;;-1:-1:-1;;;;;29504:7:0;29513:10;29525:25;29533:4;;29538:1;29533:7;;;;;;;;;;;;;-1:-1:-1;;;;;29533:7:0;29542:4;;29547:1;29542:7;;;;;;;;;;;;;-1:-1:-1;;;;;29542:7:0;29525;:25::i;:::-;29552:7;29560:1;29552:10;;;;;;;;;;;;;;29472:31;:91::i;:::-;29574:35;29580:7;29589:4;;29574:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;29603:4:0;;-1:-1:-1;29574:5:0;;-1:-1:-1;;29574:35:0:i;:::-;29631:4;;29654:14;;-1:-1:-1;;;;;29631:4:0;;;;29620:25;;29646:7;;-1:-1:-1;;29654:18:0;;;29646:27;;;;;;;;;;;;29620:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29620:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29620:54:0;;;;29685:63;29716:2;29720:7;29745:1;29728:7;:14;:18;29720:27;;;;;;;;;;;;;;29685:30;:63::i;:::-;29006:750;;;;;;;;;:::o;34946:198::-;35089:7;;;35074:62;;-1:-1:-1;;;35074:62:0;;-1:-1:-1;;;;;35089:7:0;;;35074:62;;;;;;;;;;;;35031:24;35074:62;;;;;;;;;;;;;;35031:24;;35089:7;;35074:36;;35089:7;;35120:9;;35131:4;;35074:62;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;35074:62:0;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35074:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35074:62:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;35074:62:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;35074:62:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;35074:62:0;;421:4:-1;412:14;;;;35074:62:0;;;;;412:14:-1;35074:62:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;35074:62:0;;;;;;;;;;;35067:69;;34946:198;;;;;:::o;22799:661::-;23100:15;23117;23145:12;23160:23;23168:6;23176;23160:7;:23::i;:::-;23145:38;;23194:13;23210:10;:37;;23238:9;23210:37;;;-1:-1:-1;;23210:37:0;23258:82;;;-1:-1:-1;;;23258:82:0;;23288:10;23258:82;;;;23308:4;23258:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23194:53;;-1:-1:-1;;;;;;23258:29:0;;;;;:82;;;;;-1:-1:-1;;23258:82:0;;;;;;;;-1:-1:-1;23258:29:0;:82;;;5:2:-1;;;;30:1;27;20:12;5:2;23258:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23258:82:0;;;;23372:80;23388:6;23396;23404:9;23415:10;23427;23439:2;23443:8;23372:15;:80::i;:::-;23351:101;;;;;;;;22799:661;;;;;;;;;;;;;;;;:::o;26501:577::-;26717:24;26698:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;26779:7;;26764:62;;-1:-1:-1;;;26764:62:0;;-1:-1:-1;;;;;26779:7:0;;;26764:62;;;;;;;;;;;;;;;;;;;;;;;;;26779:7;;26764:37;;26779:7;;26811:8;;26821:4;;;;26764:62;;;26821:4;26764:62;;;;26821:4;26764:62;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;26764:62:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26764:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26764:62:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;26764:62:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;26764:62:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;26764:62:0;;421:4:-1;412:14;;;;26764:62:0;;;;;412:14:-1;26764:62:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;26764:62:0;;;;;;;;;;;26754:72;;26876:12;26845:7;26870:1;26853:7;:14;:18;26845:27;;;;;;;;;;;;;;:43;;26837:96;;;;-1:-1:-1;;;26837:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26944:91;26976:4;;26981:1;26976:7;;;;;;26944:91;27046:24;27052:7;27061:4;;27046:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;27067:2:0;;-1:-1:-1;27046:5:0;;-1:-1:-1;;27046:24:0:i;28270:728::-;28431:24;28412:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;28500:4;;-1:-1:-1;;;;;28500:4:0;28475;;-1:-1:-1;;28480:15:0;;28475:21;;;;;;;;;;;;;-1:-1:-1;;;;;28475:21:0;-1:-1:-1;;;;;28475:29:0;;28467:68;;;;;-1:-1:-1;;;28467:68:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28467:68:0;;;;;;;;;;;;;;;28571:7;;28556:62;;-1:-1:-1;;;28556:62:0;;-1:-1:-1;;;;;28571:7:0;;;28556:62;;;;;;;;;;;;;;;;;;;;;;;;;28571:7;;28556:36;;28571:7;;28602:9;;28613:4;;;;28556:62;;;28613:4;28556:62;;;;28613:4;28556:62;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;28556:62:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28556:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28556:62:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;28556:62:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;28556:62:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;28556:62:0;;421:4:-1;412:14;;;;28556:62:0;;;;;412:14:-1;28556:62:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;28556:62:0;;;;;;;;;;;28546:72;;28651:11;28637:7;28645:1;28637:10;;;;;;;;;;;;;;:25;;28629:74;;;;-1:-1:-1;;;28629:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24911:675;25284:4;;25224:17;;;;25269:20;;25277:5;;-1:-1:-1;;;;;25284:4:0;25269:7;:20::i;:::-;25254:35;;25300:13;25316:10;:37;;25344:9;25316:37;;;-1:-1:-1;;25316:37:0;25364:82;;;-1:-1:-1;;;25364:82:0;;25394:10;25364:82;;;;25414:4;25364:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25300:53;;-1:-1:-1;;;;;;25364:29:0;;;;;:82;;;;;-1:-1:-1;;25364:82:0;;;;;;;;-1:-1:-1;25364:29:0;:82;;;5:2:-1;;;;30:1;27;20:12;5:2;25364:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25364:82:0;;;;25469:109;25517:5;25524:9;25535:14;25551:12;25565:2;25569:8;25469:47;:109::i;:::-;25457:121;24911:675;-1:-1:-1;;;;;;;;;;;;;24911:675:0:o;31941:619::-;32167:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;32188:89;32220:4;;32225:1;32220:7;;;;;;;;;;;;;-1:-1:-1;;;;;32220:7:0;32229:10;32241:25;32249:4;;32254:1;32249:7;;;;;;;;;;;;;-1:-1:-1;;;;;32249:7:0;32258:4;;32263:1;32258:7;;;;;;32241:25;32268:8;32188:31;:89::i;:::-;32288:21;32319:4;;-1:-1:-1;;32324:15:0;;32319:21;;;;;;;;;;;;;-1:-1:-1;;;;;32319:21:0;-1:-1:-1;;;;;32312:39:0;;32352:2;32312:43;;;;;;;;;;;;;-1:-1:-1;;;;;32312:43:0;-1:-1:-1;;;;;32312:43:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32312:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32312:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32312:43:0;32366:44;;;32312:43;32366:44;;;;;;;;;;;;;;32312:43;;-1:-1:-1;32366:44:0;;;;32401:4;;;;;;32366:44;;;32401:4;;32366:44;32401:4;32366:44;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;32407:2:0;;-1:-1:-1;32366:34:0;;-1:-1:-1;;32366:44:0:i;:::-;32495:12;32429:62;32477:13;32436:4;;-1:-1:-1;;32441:15:0;;32436:21;;;;;;;;;;;;;-1:-1:-1;;;;;32436:21:0;-1:-1:-1;;;;;32429:39:0;;32469:2;32429:43;;;;;;;;;;;;;-1:-1:-1;;;;;32429:43:0;-1:-1:-1;;;;;32429:43:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32429:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32429:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32429:43:0;;:62;:47;:62;:::i;:::-;:78;;32421:131;;;;-1:-1:-1;;;32421:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36980:1;31941:619;;;;;;;:::o;33311:746::-;33534:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;33588:4;;-1:-1:-1;;;;;33588:4:0;33563;;-1:-1:-1;;33568:15:0;;33563:21;;;;;;;;;;;;;-1:-1:-1;;;;;33563:21:0;-1:-1:-1;;;;;33563:29:0;;33555:68;;;;;-1:-1:-1;;;33555:68:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;33555:68:0;;;;;;;;;;;;;;;33634:89;33666:4;;33671:1;33666:7;;;;;;33634:89;33734:55;33769:4;;33734:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;33783:4:0;;-1:-1:-1;33734:34:0;;-1:-1:-1;;33734:55:0:i;:::-;33827:4;;33820:37;;;-1:-1:-1;;;33820:37:0;;33851:4;33820:37;;;;;;33800:17;;-1:-1:-1;;;;;33827:4:0;;33820:22;;:37;;;;;;;;;;;;;;33827:4;33820:37;;;5:2:-1;;;;30:1;27;20:12;5:2;33820:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33820:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33820:37:0;;-1:-1:-1;33876:25:0;;;;33868:78;;;;-1:-1:-1;;;33868:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33968:4;;33957:36;;;-1:-1:-1;;;33957:36:0;;;;;;;;;;-1:-1:-1;;;;;33968:4:0;;;;33957:25;;:36;;;;;33968:4;;33957:36;;;;;;;;33968:4;;33957:36;;;5:2:-1;;;;30:1;27;20:12;5:2;33957:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33957:36:0;;;;34004:45;34035:2;34039:9;34004:30;:45::i;36296:235::-;36376:4;36776:18;36783:10;36776:6;:18::i;:::-;36768:67;;;;-1:-1:-1;;;36768:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36406:2;;36393:46;;;-1:-1:-1;;;36393:46:0;;-1:-1:-1;;;;;36393:46:0;;;;;;;36428:10;36393:46;;;;;;36406:2;;;;;36393:26;;:46;;;;;;;;;;;;;;36406:2;;36393:46;;;5:2:-1;;;;30:1;27;20:12;5:2;36393:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36393:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;36463:2:0;;36450:49;;;-1:-1:-1;;;36450:49:0;;-1:-1:-1;;;;;36450:49:0;;;;;;;36488:10;36450:49;;;;;;36463:2;;;;;36450:26;;:49;;;;;36393:46;;36450:49;;;;;;;36463:2;;36450:49;;;5:2:-1;;;;30:1;27;20:12;5:2;36450:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36450:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36519:4:0;;36296:235;-1:-1:-1;;;;36296:235:0:o;27649:613::-;27800:24;27781:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;27855:4;;-1:-1:-1;;;;;27855:4:0;27844;;27855;27844:7;;;;;;;;;;;-1:-1:-1;;;;;27844:7:0;-1:-1:-1;;;;;27844:15:0;;27836:54;;;;;-1:-1:-1;;;27836:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27836:54:0;;;;;;;;;;;;;;;27926:7;;27911:63;;-1:-1:-1;;;27911:63:0;;-1:-1:-1;;;;;27926:7:0;;;27911:63;;;;;;27958:9;27911:63;;;;;;;;;;;;;;;;;;;27926:7;;27911:37;;27926:7;;27969:4;;;;27911:63;;;27969:4;27911:63;;;;27969:4;27911:63;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;27911:63:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27911:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27911:63:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;27911:63:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;27911:63:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;27911:63:0;;421:4:-1;412:14;;;;27911:63:0;;;;;412:14:-1;27911:63:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27911:63:0;;;;;;;;;;;27901:73;;28024:12;27993:7;28018:1;28001:7;:14;:18;27993:27;;;;;;;;;;;;;;:43;;27985:96;;;;-1:-1:-1;;;27985:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28103:4;;28123:10;;-1:-1:-1;;;;;28103:4:0;;;;28092:24;;28123:7;;28103:4;;28123:10;;;;;;;;;;28092:44;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28092:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;28165:4:0;;-1:-1:-1;;;;;28165:4:0;;-1:-1:-1;28154:25:0;;-1:-1:-1;28180:25:0;;-1:-1:-1;28188:4:0;;28165;28188:7;;;;28180:25;28207:7;28215:1;28207:10;;;;;;;;;;;;;;28154:64;;;;;;;;;;;;;-1:-1:-1;;;;;28154:64:0;-1:-1:-1;;;;;28154:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28154:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28154:64:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28154:64:0;28147:72;;;;28230:24;28236:7;28245:4;;28230:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28251:2:0;;-1:-1:-1;28230:5:0;;-1:-1:-1;;28230:24:0:i;:::-;27649:613;;;;;;;;:::o;34520:212::-;34620:16;34670:7;;34655:69;;;-1:-1:-1;;;34655:69:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34670:7:0;;;;34655:35;;:69;;;;;;;;;;;;;;;34670:7;34655:69;;;5:2:-1;;;;30:1;27;20:12;27086:555:0;27302:24;27283:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;27364:7;;27349:62;;-1:-1:-1;;;27349:62:0;;-1:-1:-1;;;;;27364:7:0;;;27349:62;;;;;;;;;;;;;;;;;;;;;;;;;27364:7;;27349:36;;27364:7;;27395:9;;27406:4;;;;27349:62;;;27406:4;27349:62;;;;27406:4;27349:62;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;27349:62:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27349:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27349:62:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;27349:62:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;27349:62:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;27349:62:0;;421:4:-1;412:14;;;;27349:62:0;;;;;412:14:-1;27349:62:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27349:62:0;;;;;;;;;;;27339:72;;27444:11;27430:7;27438:1;27430:10;;;;;;;;;;;;;;:25;;27422:74;;;;-1:-1:-1;;;27422:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17710:165;17780:12;17826:7;;17811:56;;;-1:-1:-1;;;17811:56:0;;-1:-1:-1;;;;;17826:7:0;;;17811:56;;;;;;;;;;;;;;;;;;;;;;:31;;:56;;;;;;;;;;;;;;;17826:7;17811:56;;;5:2:-1;;;;30:1;27;20:12;5:2;17811:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17811:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17811:56:0;;17710:165;-1:-1:-1;;;17710:165:0:o;17361:19::-;;;-1:-1:-1;;;;;17361:19:0;;:::o;34101:190::-;34190:15;34240:7;;34225:58;;;-1:-1:-1;;;34225:58:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34240:7:0;;;;34225:29;;:58;;;;;;;;;;;;;;;34240:7;34225:58;;;5:2:-1;;;;30:1;27;20:12;24200:703:0;24461:17;24442:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;24557:4;;24507:196;;24537:5;;-1:-1:-1;;;;;24557:4:0;24576:9;24600:14;24629:12;24664:4;24684:8;24507:15;:196::i;:::-;24753:38;;;-1:-1:-1;;;24753:38:0;;24785:4;24753:38;;;;;;24491:212;;-1:-1:-1;24714:78:0;;-1:-1:-1;24742:5:0;;24749:2;;-1:-1:-1;;;;;24753:23:0;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;24753:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24753:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24753:38:0;24714:27;:78::i;:::-;24814:4;;24803:36;;;-1:-1:-1;;;24803:36:0;;;;;;;;;;-1:-1:-1;;;;;24814:4:0;;;;24803:25;;:36;;;;;24814:4;;24803:36;;;;;;;;24814:4;;24803:36;;;5:2:-1;;;;30:1;27;20:12;5:2;24803:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24803:36:0;;;;24850:45;24881:2;24885:9;24850:30;:45::i;32568:735::-;32772:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;32812:4;;-1:-1:-1;;;;;32812:4:0;32801;;32812;32801:7;;;;;;;;;;;-1:-1:-1;;;;;32801:7:0;-1:-1:-1;;;;;32801:15:0;;32793:54;;;;;-1:-1:-1;;;32793:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;32793:54:0;;;;;;;;;;;;;;;32908:4;;32897:42;;;-1:-1:-1;;;32897:42:0;;;;32877:9;;-1:-1:-1;;;;;32908:4:0;;32897:24;;32877:9;;32897:42;;;;;32858:16;;32897:42;;;;;;;;32877:9;32908:4;32897:42;;;5:2:-1;;;;30:1;27;20:12;5:2;32897:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;32968:4:0;;-1:-1:-1;;;;;32968:4:0;;-1:-1:-1;32957:25:0;;-1:-1:-1;32983:25:0;;-1:-1:-1;32991:4:0;;32968;32991:7;;;;32983:25;33010:8;32957:62;;;;;;;;;;;;;-1:-1:-1;;;;;32957:62:0;-1:-1:-1;;;;;32957:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32957:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32957:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32957:62:0;32950:70;;;;33031:21;33062:4;;-1:-1:-1;;33067:15:0;;33062:21;;;;;;;;;;;;;-1:-1:-1;;;;;33062:21:0;-1:-1:-1;;;;;33055:39:0;;33095:2;33055:43;;;;;;;;;;;;;-1:-1:-1;;;;;33055:43:0;-1:-1:-1;;;;;33055:43:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33055:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33055:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33055:43:0;33109:44;;;33055:43;33109:44;;;;;;;;;;;;;;33055:43;;-1:-1:-1;33109:44:0;;;;33144:4;;;;;;33109:44;;;33144:4;;33109:44;33144:4;33109:44;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;33150:2:0;;-1:-1:-1;33109:34:0;;-1:-1:-1;;33109:44:0:i;:::-;33238:12;33172:62;33220:13;33179:4;;-1:-1:-1;;33184:15:0;;33179:21;;;;;;;;;;;;;-1:-1:-1;;;;;33179:21:0;-1:-1:-1;;;;;33172:39:0;;33212:2;33172:43;;;;;;;;;;;;;-1:-1:-1;;;;;33172:43:0;-1:-1:-1;;;;;33172:43:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;21189:915:0;21438:15;21455;21419:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;21483:12;21498:23;21506:6;21514;21498:7;:23::i;:::-;21567:64;;;-1:-1:-1;;;21567:64:0;;21603:10;21567:64;;;;-1:-1:-1;;;;;21567:35:0;;:64;;;;;;;;;;;;;;21483:38;;-1:-1:-1;21567:35:0;;;;:64;;;;;;;;;;;;;;;-1:-1:-1;21567:35:0;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;21567:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21567:64:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;21679:31:0;;;-1:-1:-1;;;21679:31:0;;-1:-1:-1;;;;;21679:31:0;;;;;;;;;21643:15;;;;21679:27;;;;;;:31;;;;;;;;;;;21643:15;21679:27;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;21679:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21679:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21679:31:0;;;;;;;21734:2;;21679:31;21721:44;;-1:-1:-1;;;21721:44:0;;21748:10;21721:44;;;;-1:-1:-1;;;;;21721:44:0;;;;;;;;;21679:31;;-1:-1:-1;21679:31:0;;-1:-1:-1;21734:2:0;;21721:26;;:44;;;;;;;;;;21734:2;;21721:44;;;5:2:-1;;;;30:1;27;20:12;5:2;21721:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21721:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21721:44:0;;;;;;;;;;;;;;;;;21777:14;21811:7;;;;;;;;;-1:-1:-1;;;;;21811:7:0;-1:-1:-1;;;;;21796:34:0;;21831:6;21839;21796:50;;;;;;;;;;;;;-1:-1:-1;;;;;21796:50:0;-1:-1:-1;;;;;21796:50:0;;;;;;-1:-1:-1;;;;;21796:50:0;-1:-1:-1;;;;;21796:50:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21796:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21796:50:0;;-1:-1:-1;;;;;;21878:16:0;;;;;;;:58;;21919:7;21928;21878:58;;;21898:7;21907;21878:58;21857:79;;-1:-1:-1;21857:79:0;-1:-1:-1;21955:21:0;;;;21947:69;;;;-1:-1:-1;;;21947:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22046:10;22035:7;:21;;22027:69;;;;-1:-1:-1;;;22027:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36980:1;;;;21189:915;;;;;;;;;;;:::o;35152:1136::-;35256:4;;35202:7;;;;-1:-1:-1;;;;;35256:13:0;;;:4;;:13;35252:1004;;;35294:8;:12;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35294:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35294:14:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35294:14:0;;-1:-1:-1;35252:1004:0;;;35395:1;35354:7;;;35378:4;35339:44;;;-1:-1:-1;;;35339:44:0;;-1:-1:-1;;;;;35339:44:0;;;;;;;35378:4;;;35339:44;;;;;;35354:7;;;;;35339:31;;:44;;;;;;;;;;;;;;35354:7;35339:44;;;5:2:-1;;;;30:1;27;20:12;5:2;35339:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35339:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35339:44:0;-1:-1:-1;;;;;35339:58:0;;35335:921;;35454:7;;;35478:4;35439:44;;;-1:-1:-1;;;35439:44:0;;-1:-1:-1;;;;;35439:44:0;;;;;;;35478:4;;;35439:44;;;;;;35454:7;;;;;35439:31;;:44;;;;;;;;;;;;;;35454:7;35439:44;;;5:2:-1;;;;30:1;27;20:12;5:2;35439:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35439:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35439:44:0;35422:75;;;-1:-1:-1;;;35422:75:0;;-1:-1:-1;;;;;35422:75:0;;;;;;;;;:68;;;;;;;:75;;;;;35439:44;;35422:75;;;;;;;:68;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;35422:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;35335:921:0;35539:14;35579:7;;;;;;;;;-1:-1:-1;;;;;35579:7:0;-1:-1:-1;;;;;35556:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35556:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35556:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35556:55:0;;-1:-1:-1;35631:13:0;35626:619;35658:6;35650:5;:14;35626:619;;;35694:12;35732:7;;35709:51;;;-1:-1:-1;;;35709:51:0;;;;;;;;;;-1:-1:-1;;;;;35732:7:0;;;;35709:44;;:51;;;;;;;;;;;;;;;35732:7;35709:51;;;5:2:-1;;;;30:1;27;20:12;5:2;35709:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35709:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35709:51:0;35839:1;35798:7;;35783:44;;;-1:-1:-1;;;35783:44:0;;-1:-1:-1;;;;;35783:44:0;;;;;;;;;;;;;;;;35709:51;;-1:-1:-1;35839:1:0;;35798:7;;;35783:31;;:44;;;;;35709:51;;35783:44;;;;;;;35798:7;35783:44;;;5:2:-1;;;;30:1;27;20:12;5:2;35783:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35783:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35783:44:0;-1:-1:-1;;;;;35783:58:0;;;;;:119;;-1:-1:-1;35900:1:0;35860:7;;;35883:4;35845:43;;;-1:-1:-1;;;35845:43:0;;-1:-1:-1;;;;;35845:43:0;;;;;;;35883:4;;;35845:43;;;;;;35860:7;;;;;35845:31;;:43;;;;;;;;;;;;;;35860:7;35845:43;;;5:2:-1;;;;30:1;27;20:12;5:2;35845:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35845:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35845:43:0;-1:-1:-1;;;;;35845:57:0;;;35783:119;35779:451;;;35927:14;35976:7;;35961:44;;;-1:-1:-1;;;35961:44:0;;-1:-1:-1;;;;;35961:44:0;;;;;;;;;;;;;;;;35976:7;;;;;35961:31;;:44;;;;;;;;;;;;;;35976:7;35961:44;;;5:2:-1;;;;30:1;27;20:12;5:2;35961:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35961:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35961:44:0;35944:75;;;-1:-1:-1;;;35944:75:0;;-1:-1:-1;;;;;35944:75:0;;;;;;;;;:68;;;;;;;:75;;;;;35961:44;;35944:75;;;;;;;:68;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;35944:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35944:75:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35944:75:0;36042:14;36091:7;;;36114:4;36076:43;;;-1:-1:-1;;;36076:43:0;;-1:-1:-1;;;;;36076:43:0;;;;;;;36114:4;;;36076:43;;;;;;35944:75;;-1:-1:-1;36042:14:0;;36091:7;;;36076:31;;:43;;;;;35944:75;;36076:43;;;;;;;36091:7;36076:43;;;5:2:-1;;;;30:1;27;20:12;5:2;36076:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36076:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36076:43:0;36059:73;;;-1:-1:-1;;;36059:73:0;;-1:-1:-1;;;;;36059:73:0;;;;;;;;;:67;;;;;;;:73;;;;;36076:43;;36059:73;;;;;;;:67;:73;;;5:2:-1;;;;30:1;27;20:12;5:2;36059:73:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36059:73:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36059:73:0;;-1:-1:-1;36163:19:0;:6;36059:73;36163:19;:11;:19;:::i;:::-;36155:27;;36205:5;;;;;35779:451;-1:-1:-1;35666:7:0;;35626:619;;;;35335:921;36275:5;35152:1136;-1:-1:-1;;35152:1136:0:o;17332:22::-;;;-1:-1:-1;;;;;17332:22:0;;:::o;34740:198::-;34883:7;;;34868:62;;-1:-1:-1;;;34868:62:0;;-1:-1:-1;;;;;34883:7:0;;;34868:62;;;;;;;;;;;;34825:24;34868:62;;;;;;;;;;;;;;34825:24;;34883:7;;34868:37;;34883:7;;34868:62;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;17387:17:0;;;-1:-1:-1;;;;;17387:17:0;;:::o;23468:653::-;23833:4;;23752:19;;;;;;23818:20;;23826:5;;-1:-1:-1;;;;;23833:4:0;23818:7;:20::i;:::-;23803:35;;23849:13;23865:10;:37;;23893:9;23865:37;;;-1:-1:-1;;23865:37:0;23913:82;;;-1:-1:-1;;;23913:82:0;;23943:10;23913:82;;;;23963:4;23913:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23849:53;;-1:-1:-1;;;;;;23913:29:0;;;;;:82;;;;;-1:-1:-1;;23913:82:0;;;;;;;;-1:-1:-1;23913:29:0;:82;;;5:2:-1;;;;30:1;27;20:12;5:2;23913:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23913:82:0;;;;24033:80;24052:5;24059:9;24070:14;24086:12;24100:2;24104:8;24033:18;:80::i;:::-;24006:107;;;;-1:-1:-1;23468:653:0;-1:-1:-1;;;;;;;;;;;;;23468:653:0:o;36541:188::-;36592:4;36631:7;;36648:31;;;-1:-1:-1;;;36648:31:0;;;;-1:-1:-1;;;;;36616:105:0;;;;36631:7;;36616:31;;:105;;36648:29;;:31;;;;;;;;;;;;;;36616:105;36648:31;;;5:2:-1;;;;30:1;27;20:12;5:2;36648:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36648:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36648:31:0;36681;;;-1:-1:-1;;;36681:31:0;;;;-1:-1:-1;;;;;36681:29:0;;;;;:31;;;;;36648;;36681;;;;;;;:29;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;36681:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36681:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36681:31:0;36616:97;;;-1:-1:-1;;;;;;36616:97:0;;;;;;;-1:-1:-1;;;;;36616:97:0;;;;;;;;;;;;;;;;;;;;;36681:31;;36616:97;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;36616:97:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36616:97:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;36616:97:0;-1:-1:-1;;;;;36616:105:0;;;36541:188;-1:-1:-1;;36541:188:0:o;19344:776::-;19630:15;19647;19664:17;19611:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;19715:85;19729:6;19737;19745:14;19761;19777:10;19789;19715:13;:85::i;:::-;19694:106;;-1:-1:-1;19694:106:0;-1:-1:-1;19811:12:0;19826:23;19834:6;19842;19826:7;:23::i;:::-;19811:38;;19860:66;19892:6;19900:10;19912:4;19918:7;19860:31;:66::i;:::-;19937;19969:6;19977:10;19989:4;19995:7;19937:31;:66::i;:::-;20043:4;-1:-1:-1;;;;;20026:27:0;;20054:2;20026:31;;;;;;;;;;;;;-1:-1:-1;;;;;20026:31:0;-1:-1:-1;;;;;20026:31:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20026:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20026:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20026:31:0;20081:2;;20068:44;;;-1:-1:-1;;;20068:44:0;;20095:10;20068:44;;;;-1:-1:-1;;;;;20068:44:0;;;;;;;;;20026:31;;-1:-1:-1;20081:2:0;;;20068:26;;:44;;;;;20026:31;;20068:44;;;;;;;;20081:2;;20068:44;;;5:2:-1;;;;30:1;27;20:12;5:2;20068:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20068:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19344:776:0;;;;-1:-1:-1;19344:776:0;;-1:-1:-1;19344:776:0;;-1:-1:-1;;;;;;;;;19344:776:0:o;20128:1018::-;20376:19;20397:17;20416;20357:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;20521:4;;20473:176;;20501:5;;-1:-1:-1;;;;;20521:4:0;20540:18;20573:9;20597:14;20626:12;20473:13;:176::i;:::-;20690:4;;20446:203;;-1:-1:-1;20446:203:0;-1:-1:-1;20660:12:0;;20675:20;;20683:5;;-1:-1:-1;;;;;20690:4:0;20675:7;:20::i;:::-;20660:35;;20706:69;20738:5;20745:10;20757:4;20763:11;20706:31;:69::i;:::-;20797:4;;;;;;;;;-1:-1:-1;;;;;20797:4:0;-1:-1:-1;;;;;20786:24:0;;20817:9;20786:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20786:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;20858:4:0;;20847:42;;;-1:-1:-1;;;20847:42:0;;-1:-1:-1;;;;;20847:42:0;;;;;;;;;;;;;;;20858:4;;;;;-1:-1:-1;20847:25:0;;-1:-1:-1;20847:42:0;;;;;-1:-1:-1;20847:42:0;;;;;;;20858:4;;20847:42;;;5:2:-1;;;;30:1;27;20:12;5:2;20847:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20847:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20847:42:0;20840:50;;;;20930:4;-1:-1:-1;;;;;20913:27:0;;20941:2;20913:31;;;;;;;;;;;;;-1:-1:-1;;;;;20913:31:0;-1:-1:-1;;;;;20913:31:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20913:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20913:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20913:31:0;20968:2;;20955:44;;;-1:-1:-1;;;20955:44:0;;20982:10;20955:44;;;;-1:-1:-1;;;;;20955:44:0;;;;;;;;;20913:31;;-1:-1:-1;20968:2:0;;;20955:26;;:44;;;;;20913:31;;20955:44;;;;;;;;20968:2;;20955:44;;;5:2:-1;;;;30:1;27;20:12;5:2;20955:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20955:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;21050:9:0;:21;-1:-1:-1;21046:92:0;;;21073:65;21104:10;21128:9;21116;:21;21073:30;:65::i;:::-;36980:1;20128:1018;;;;;;;;;;;:::o;29764:726::-;29912:24;29893:8;36928:15;36916:8;:27;;36908:61;;;;;-1:-1:-1;;;36908:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36908:61:0;;;;;;;;;;;;;;;29967:4;;-1:-1:-1;;;;;29967:4:0;29956;;29967;29956:7;;;;;;;;;;;-1:-1:-1;;;;;29956:7:0;-1:-1:-1;;;;;29956:15:0;;29948:54;;;;;-1:-1:-1;;;29948:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;29948:54:0;;;;;;;;;;;;;;;30038:7;;30023:62;;-1:-1:-1;;;30023:62:0;;-1:-1:-1;;;;;30038:7:0;;;30023:62;;;;;;;;;;;;;;;;;;;;;;;;;30038:7;;30023:36;;30038:7;;30069:9;;30080:4;;;;30023:62;;;30080:4;30023:62;;;;30080:4;30023:62;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;30023:62:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30023:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30023:62:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30023:62:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;30023:62:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;30023:62:0;;421:4:-1;412:14;;;;30023:62:0;;;;;412:14:-1;30023:62:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30023:62:0;;;;;;;;;;;30013:72;;30118:9;30104:7;30112:1;30104:10;;;;;;;;;;;;;;:23;;30096:72;;;;-1:-1:-1;;;30096:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30190:4;;30210:10;;-1:-1:-1;;;;;30190:4:0;;;;30179:24;;30210:7;;30190:4;;30210:10;;;;;;;;;;30179:44;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30179:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;30252:4:0;;-1:-1:-1;;;;;30252:4:0;;-1:-1:-1;30241:25:0;;-1:-1:-1;30267:25:0;;-1:-1:-1;30275:4:0;;30252;30275:7;;;;30267:25;30294:7;30302:1;30294:10;;;;;;;;;;;;;;30241:64;;;;;;;;;;;;;-1:-1:-1;;;;;30241:64:0;-1:-1:-1;;;;;30241:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30241:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30241:64:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30241:64:0;30234:72;;;;30317:24;30323:7;30332:4;;30317:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;30338:2:0;;-1:-1:-1;30317:5:0;;-1:-1:-1;;30317:24:0:i;:::-;30404:7;30412:1;30404:10;;;;;;;;;;;;;;30392:9;:22;30388:94;;;30416:66;30447:10;30471:7;30479:1;30471:10;;;;;;;;;;;;;;30459:9;:22;30416:30;:66::i;5962:297::-;6093:45;;;-1:-1:-1;;;;;6093:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6093:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6082:57:0;;;;6047:12;;6061:17;;6082:10;;;;6093:45;6082:57;;;25:18:-1;6082:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6082:57:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6046:93:0;;;;6158:7;:57;;;;-1:-1:-1;6170:11:0;;:16;;:44;;;6201:4;6190:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6190:24:0;6170:44;6150:101;;;;;-1:-1:-1;;;6150:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5962:297;;;;;:::o;6601:198::-;6712:12;;;6674;6712;;;;;;;;;-1:-1:-1;;;;;6691:7:0;;;6705:5;;6691:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6691:34:0;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6673:52:0;;;6744:7;6736:55;;;;-1:-1:-1;;;6736:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6601:198;;;:::o;6267:326::-;6416:51;;;-1:-1:-1;;;;;6416:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6416:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6405:63:0;;;;6370:12;;6384:17;;6405:10;;;;6416:51;6405:63;;;25:18:-1;6405:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6405:63:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6369:99:0;;;;6487:7;:57;;;;-1:-1:-1;6499:11:0;;:16;;:44;;;6530:4;6519:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6519:24:0;6499:44;6479:106;;;;-1:-1:-1;;;6479:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6267:326;;;;;;:::o;25697:796::-;25799:9;25794:692;25828:1;25814:4;:11;:15;25810:1;:19;25794:692;;;25852:13;25867:14;25886:4;25891:1;25886:7;;;;;;;;;;;;;;25895:4;25900:1;25904;25900:5;25895:11;;;;;;;;;;;;;;;;;;25923:14;25957:7;;25942:49;;;-1:-1:-1;;;25942:49:0;;-1:-1:-1;;;;;25942:49:0;;;;;;;;;;;;;;;;25851:56;;-1:-1:-1;25895:11:0;;-1:-1:-1;25923:14:0;;25957:7;;;;;25942:34;;:49;;;;;;;;;;;;25957:7;25942:49;;;5:2:-1;;;;30:1;27;20:12;5:2;25942:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25942:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25942:49:0;26028:10;;25942:49;;-1:-1:-1;26006:19:0;;26028:7;;26036:1;;26028:10;;;;;;;;;;;;26006:32;;26053:17;26073:7;26081:1;26085;26081:5;26073:14;;;;;;;;;;;;;;;;;;;26115:2;;26102:61;;;-1:-1:-1;;;26102:61:0;;26124:10;26102:61;;;;-1:-1:-1;;;;;26102:61:0;;;;;;;;;;;;;;;;;;;;;;26073:14;;-1:-1:-1;26115:2:0;;;26102:21;;:61;;;;;;;;;;26115:2;;26102:61;;;5:2:-1;;;;30:1;27;20:12;5:2;26102:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26102:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26179:18:0;;-1:-1:-1;26179:18:0;-1:-1:-1;;;;;26221:15:0;;;;;;;:67;;26266:9;26285:1;26221:67;;;26248:1;26252:9;26221:67;26178:110;;;;26303:10;26334:1;26320:4;:11;:15;26316:1;:19;:56;;26369:3;26316:56;;;26338:28;26346:6;26354:4;26359:1;26363;26359:5;26354:11;;;;;;;;;;;;;;26338:7;:28::i;:::-;26303:69;;26404:22;26412:5;26419:6;26404:7;:22::i;:::-;-1:-1:-1;;;;;26387:45:0;;26433:10;26445;26457:2;26471:1;26461:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;26461:12:0;87:34:-1;135:17;;-1:-1;26461:12:0;;26387:87;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26387:87:0;-1:-1:-1;;;;;26387:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;26387:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26387:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;25831:3:0;;;;;-1:-1:-1;25794:692:0;;-1:-1:-1;;;;;;;;;25794:692:0;;;25697:796;;;:::o;30637:1296::-;30742:9;30737:1189;30771:1;30757:4;:11;:15;30753:1;:19;30737:1189;;;30795:13;30810:14;30829:4;30834:1;30829:7;;;;;;;;;;;;;;30838:4;30843:1;30847;30843:5;30838:11;;;;;;;;;;;;;;;;;;30866:14;30900:7;;30885:49;;;-1:-1:-1;;;30885:49:0;;-1:-1:-1;;;;;30885:49:0;;;;;;;;;;;;;;;;30794:56;;-1:-1:-1;30838:11:0;;-1:-1:-1;30866:14:0;;30900:7;;;;;30885:34;;:49;;;;;;;;;;;;30900:7;30885:49;;;5:2:-1;;;;30:1;27;20:12;5:2;30885:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30885:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30885:49:0;;-1:-1:-1;30949:21:0;30990:22;30998:5;31005:6;30990:7;:22::i;:::-;30949:64;;31028:19;31062:20;31156:16;31174;31195:4;-1:-1:-1;;;;;31195:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31195:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31195:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31195:18:0;;;;;;;31155:58;;;;;-1:-1:-1;31155:58:0;;-1:-1:-1;31233:20:0;;-1:-1:-1;;;;;31280:15:0;;;;;;;:61;;31322:8;31332;31280:61;;;31299:8;31309;31280:61;31232:109;;;;31374:56;31417:12;31381:5;-1:-1:-1;;;;;31374:23:0;;31406:4;31374:38;;;;;;;;;;;;;-1:-1:-1;;;;;31374:38:0;-1:-1:-1;;;;;31374:38:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;31374:56:0;31479:7;;31464:78;;;-1:-1:-1;;;31464:78:0;;;;;;;;;;;;;;;;;;;;;;31360:70;;-1:-1:-1;;;;;;31479:7:0;;;;31464:36;;:78;;;;;;;;;;;;;;;31479:7;31464:78;;;5:2:-1;;;;30:1;27;20:12;5:2;31464:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31464:78:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31464:78:0;31585:2;;31572:61;;;-1:-1:-1;;;31572:61:0;;31594:10;31572:61;;;;-1:-1:-1;;;;;31572:61:0;;;;;;;;;;;;;;;;;;;;;;31464:78;;-1:-1:-1;31585:2:0;;;-1:-1:-1;31572:21:0;;-1:-1:-1;31572:61:0;;;;;-1:-1:-1;31464:78:0;;-1:-1:-1;31572:61:0;;;;;;31585:2;;31572:61;;;5:2:-1;;;;30:1;27;20:12;5:2;31572:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31572:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31649:18:0;;-1:-1:-1;31649:18:0;-1:-1:-1;;;;;31691:15:0;;;;;;;:73;;31739:12;31761:1;31691:73;;;31718:1;31722:12;31691:73;31648:116;;;;31779:10;31810:1;31796:4;:11;:15;31792:1;:19;:56;;31845:3;31792:56;;;31814:28;31822:6;31830:4;31835:1;31839;31835:5;31830:11;;;;;;;31814:28;31901:12;;;31911:1;31901:12;;;;;;;;;;-1:-1:-1;;;31863:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;31863:51:0;;;;;;;;;;;;;;;;;;;;;;31779:69;;-1:-1:-1;31863:9:0;;;;;;31873:10;;31885;;31779:69;;31901:12;;31863:51;;;;;;;;31901:12;;31863:51;;;;31901:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31863:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31863:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;30774:3:0;;;;;-1:-1:-1;30737:1189:0;;-1:-1:-1;;;;;;;;;;30737:1189:0;578:136;636:7;663:43;667:1;670;663:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;656:50;578:136;-1:-1:-1;;;578:136:0:o;2756:109::-;2815:7;170:8;2842:9;2846:1;2849;2842:3;:9::i;:::-;:15;;;;;;;2756:109;-1:-1:-1;;;2756:109:0:o;17915:1421::-;18137:15;18253:7;;18238:47;;;-1:-1:-1;;;18238:47:0;;-1:-1:-1;;;;;18238:47:0;;;;;;;;;;;;;;;;18137:15;;;;18253:7;;18238:31;;:47;;;;;;;;;;;;;;18253:7;18238:47;;;5:2:-1;;;;30:1;27;20:12;5:2;18238:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18238:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18238:47:0;-1:-1:-1;;;;;18238:61:0;;18234:144;;;18331:7;;;18316:50;;;-1:-1:-1;;;18316:50:0;;-1:-1:-1;;;;;18316:50:0;;;;;;;;;;;;;;;;18331:7;;;;;18316:34;;:50;;;;;;;;;;;;;;;;;;18331:7;18316:50;;;5:2:-1;;;;30:1;27;20:12;5:2;18316:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18316:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18234:144:0;18389:16;18442:7;;18427:60;;;-1:-1:-1;;;18427:60:0;;-1:-1:-1;;;;;18442:7:0;;;18427:60;;;;;;;;;;;;;;;;;;;;;;18389:16;;18442:7;18427:35;;:60;;;;;;;;;;;18442:7;18427:60;;;5:2:-1;;;;30:1;27;20:12;5:2;18427:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18427:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18427:60:0;;;;;;;;;-1:-1:-1;18427:60:0;-1:-1:-1;18502:13:0;;:30;;;;-1:-1:-1;18519:13:0;;18502:30;18498:831;;;18571:14;;-1:-1:-1;18587:14:0;;-1:-1:-1;18498:831:0;;;18635:22;18675:7;;18660:65;;;-1:-1:-1;;;18660:65:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18675:7:0;;;;18660:29;;:65;;;;;;;;;;;;;;;18675:7;18660:65;;;5:2:-1;;;;30:1;27;20:12;5:2;18660:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18660:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18660:65:0;;-1:-1:-1;18744:32:0;;;18740:578;;18823:10;18805:14;:28;;18797:76;;;;-1:-1:-1;;;18797:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18914:14;;-1:-1:-1;18930:14:0;-1:-1:-1;18930:14:0;18740:578;;;18986:22;19026:7;;19011:65;;;-1:-1:-1;;;19011:65:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19026:7:0;;;;19011:29;;:65;;;;;;;;;;;;;;;19026:7;19011:65;;;5:2:-1;;;;30:1;27;20:12;5:2;19011:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19011:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19011:65:0;;-1:-1:-1;19102:32:0;;;;19095:40;;;;19180:10;19162:14;:28;;19154:76;;;;-1:-1:-1;;;19154:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19271:14;-1:-1:-1;19287:14:0;;-1:-1:-1;18740:578:0;18498:831;;17915:1421;;;;;;;;;;;:::o;722:192::-;808:7;844:12;836:6;;;;828:29;;;;-1:-1:-1;;;828:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;828:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;880:5:0;;;722:192::o;922:471::-;980:7;1225:6;1221:47;;-1:-1:-1;1255:1:0;1248:8;;1221:47;1292:5;;;1296:1;1292;:5;:1;1316:5;;;;;:10;1308:56;;;;-1:-1:-1;;;1308:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://73f0d81d05ff7f6df45469641159ac1fae238723aa3f5fcd7c5462af4be159a7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.