More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 12912892 | 1273 days ago | IN | 0 ETH | 0.00148512 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
12786200 | 1293 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
UniswapV2Pair
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-11 */ /** *Submitted for verification at Etherscan.io on 2021-07-08 */ /** *Submitted for verification at Etherscan.io on 2021-04-30 */ /** *Submitted for verification at Etherscan.io on 2020-05-04 */ pragma solidity =0.5.16; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function getPair(address tokenA, address tokenB) external view returns (address pair); function permissions(address user) external view returns (bool status); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB, address feeOwner) external returns (address pair); } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address, address) external; function setFeeOwner(address _feeOwner) external; } interface IUniswapV2ERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } interface IUniswapV2Callee { function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external; } contract Context { constructor () internal { } function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns (bool) { return _msgSender() == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract UniswapV2ERC20 is IUniswapV2ERC20 { using SafeMath for uint; string public constant name = 'Crypto Mine'; string public constant symbol = 'CM'; uint8 public constant decimals = 18; uint public totalSupply; mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) public allowance; bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint) public nonces; event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); constructor() public { uint chainId; assembly { chainId := chainid } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes(name)), keccak256(bytes('1')), chainId, address(this) ) ); } function _mint(address to, uint value) internal { totalSupply = totalSupply.add(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(address(0), to, value); } function _burn(address from, uint value) internal { balanceOf[from] = balanceOf[from].sub(value); totalSupply = totalSupply.sub(value); emit Transfer(from, address(0), value); } function _approve(address owner, address spender, uint value) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { balanceOf[from] = balanceOf[from].sub(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(from, to, value); } function approve(address spender, uint value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint value) external returns (bool) { if (allowance[from][msg.sender] != uint(-1)) { allowance[from][msg.sender] = allowance[from][msg.sender].sub(value); } _transfer(from, to, value); return true; } function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, 'Crypto Mine: EXPIRED'); bytes32 digest = keccak256( abi.encodePacked( '\x19\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, 'Crypto Mine: INVALID_SIGNATURE'); _approve(owner, spender, value); } } contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 { using SafeMath for uint; using UQ112x112 for uint224; uint public constant MINIMUM_LIQUIDITY = 10**3; bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)'))); address public factory; address public token0; address public token1; address public feeOwner; uint112 private reserve0; // uses single storage slot, accessible via getReserves uint112 private reserve1; // uses single storage slot, accessible via getReserves uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves uint public price0CumulativeLast; uint public price1CumulativeLast; uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event uint private unlocked = 1; modifier lock() { require(unlocked == 1, 'Crypto Mine: LOCKED'); unlocked = 0; _; unlocked = 1; } function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) { _reserve0 = reserve0; _reserve1 = reserve1; _blockTimestampLast = blockTimestampLast; } function _safeTransfer(address token, address to, uint value) private { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'Crypto Mine: TRANSFER_FAILED'); } event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); constructor() public { factory = msg.sender; } // called once by the factory at time of deployment function initialize(address _token0, address _token1, address _feeOwner) external { require(msg.sender == factory, 'Crypto Mine: FORBIDDEN'); // sufficient check token0 = _token0; token1 = _token1; feeOwner = _feeOwner; } // update reserves and, on the first call per block, price accumulators function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private { require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'Crypto Mine: OVERFLOW'); uint32 blockTimestamp = uint32(block.timestamp % 2**32); uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { // * never overflows, and + overflow is desired price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } reserve0 = uint112(balance0); reserve1 = uint112(balance1); blockTimestampLast = blockTimestamp; emit Sync(reserve0, reserve1); } // this low-level function should be called from a contract which performs important safety checks function mint(address to) external lock returns (uint liquidity) { (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings uint balance0 = IERC20(token0).balanceOf(address(this)); uint balance1 = IERC20(token1).balanceOf(address(this)); uint amount0 = balance0.sub(_reserve0); uint amount1 = balance1.sub(_reserve1); //bool feeOn = _mintFee(_reserve0, _reserve1); uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee if (_totalSupply == 0) { liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY); _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens } else { liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1); } require(liquidity > 0, 'Crypto Mine: INSUFFICIENT_LIQUIDITY_MINTED'); _mint(to, liquidity); _update(balance0, balance1, _reserve0, _reserve1); emit Mint(msg.sender, amount0, amount1); } // this low-level function should be called from a contract which performs important safety checks function burn(address to) external lock returns (uint amount0, uint amount1) { (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings address _token0 = token0; // gas savings address _token1 = token1; // gas savings uint balance0 = IERC20(_token0).balanceOf(address(this)); uint balance1 = IERC20(_token1).balanceOf(address(this)); uint liquidity = balanceOf[address(this)]; uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution require(amount0 > 0 && amount1 > 0, 'Crypto Mine: INSUFFICIENT_LIQUIDITY_BURNED'); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0); _safeTransfer(_token1, to, amount1); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); _update(balance0, balance1, _reserve0, _reserve1); emit Burn(msg.sender, amount0, amount1, to); } // this low-level function should be called from a contract which performs important safety checks function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock { require(amount0Out > 0 || amount1Out > 0, 'Crypto Mine:INSUFFICIENT_OUTPUT_AMOUNT'); require(amount0Out == 0 || amount1Out == 0, 'Crypto Mine:INSUFFICIENT_OUTPUT_AMOUNT 0'); (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Crypto Mine: INSUFFICIENT_LIQUIDITY'); uint balance0; uint balance1; { // scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, 'Crypto Mine: INVALID_TO'); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); } uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0; uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT'); { uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(100)); uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(100)); require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K'); uint256 kresidue = balance0.mul(balance1).sub(uint(_reserve0).mul(_reserve1)); (address token,uint256 fee) = amount0Out==0?(token0,kresidue/balance1):(token1,kresidue/balance0); if(fee>0) _safeTransfer(token, feeOwner, fee); balance0 = IERC20(token0).balanceOf(address(this)); balance1 = IERC20(token1).balanceOf(address(this)); } require(balance0.mul(balance1) >= uint(_reserve0).mul(_reserve1), 'Crypto Mine: invalid_FEE'); _update(balance0, balance1, _reserve0, _reserve1); emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); } // force balances to match reserves function skim(address to) external lock { address _token0 = token0; // gas savings address _token1 = token1; // gas savings _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0)); _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1)); } // force reserves to match balances function sync() external lock { _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1); } function setFeeOwner(address _feeOwner) external { if(feeOwner!=address(0)){ require(msg.sender == feeOwner, 'Crypto Mine: FORBIDDEN'); } feeOwner = _feeOwner; } } contract UniswapV2Factory is IUniswapV2Factory,Ownable { mapping(address => mapping(address => address)) public getPair; address[] public allPairs; mapping(address => bool) public permissions; bytes32 public initCodeHash; event PairCreated(address indexed token0, address indexed token1, address pair, uint); event SetPermission(address indexed,bool); constructor() public { initCodeHash = keccak256(abi.encodePacked(type(UniswapV2Pair).creationCode)); } modifier authority(){ require(permissions[_msgSender()],"Crypto Mine: access denied"); _; } function allPairsLength() external view returns (uint) { return allPairs.length; } function setPermission(address userAddress,bool status) public onlyOwner { permissions[userAddress] = status; emit SetPermission(userAddress,status); } function createPair(address tokenA, address tokenB, address feeOwner) external authority returns (address pair) { require(tokenA != tokenB, 'Crypto Mine: IDENTICAL_ADDRESSES'); (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'Crypto Mine: ZERO_ADDRESS'); require(getPair[token0][token1] == address(0), 'Crypto Mine: PAIR_EXISTS'); // single check is sufficient bytes memory bytecode = type(UniswapV2Pair).creationCode; bytes32 salt = keccak256(abi.encodePacked(token0, token1)); assembly { pair := create2(0, add(bytecode, 32), mload(bytecode), salt) } IUniswapV2Pair(pair).initialize(token0, token1, feeOwner); getPair[token0][token1] = pair; getPair[token1][token0] = pair; // populate mapping in the reverse direction allPairs.push(pair); emit PairCreated(token0, token1, pair, allPairs.length); } } // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, 'ds-math-add-overflow'); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, 'ds-math-sub-underflow'); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow'); } } // a library for performing various math operations library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } // a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format)) // range: [0, 2**112 - 1] // resolution: 1 / 2**112 library UQ112x112 { uint224 constant Q112 = 2**112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { z = uint224(y) * Q112; // never overflows } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"address","name":"_feeOwner","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_feeOwner","type":"address"}],"name":"setFeeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600d5534801561001557600080fd5b5060405146908060526125478239604080519182900360520182208282018252600b83526a43727970746f204d696e6560a81b6020938401528151808301835260018152603160f81b908401528151808401919091527fd65fd7166ce747e310a2ca560dac2ba83211df2eae1212f3d7b7d332560ef98d818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612441806101066000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806370a0823111610104578063ba9a7a56116100a2578063d21220a711610071578063d21220a714610592578063d505accf1461059a578063dd62ed3e146105eb578063fff6cae914610619576101cf565b8063ba9a7a5614610524578063bc25cf771461052c578063c0c53b8b14610552578063c45a01551461058a576101cf565b806389afcb44116100de57806389afcb44146104a957806395d89b41146104e8578063a9059cbb146104f0578063b9818be11461051c576101cf565b806370a08231146104555780637464fc3d1461047b5780637ecebe0014610483576101cf565b806330adf81f116101715780634b104eff1161014b5780634b104eff146103f95780635909c0d51461041f5780635a3d5493146104275780636a6278421461042f576101cf565b806330adf81f146103cb578063313ce567146103d35780633644e515146103f1576101cf565b8063095ea7b3116101ad578063095ea7b3146103175780630dfe16811461035757806318160ddd1461037b57806323b872dd14610395576101cf565b8063022c0d9f146101d457806306fdde03146102625780630902f1ac146102df575b600080fd5b610260600480360360808110156101ea57600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561022157600080fd5b82018360208201111561023357600080fd5b8035906020019184600183028401116401000000008311171561025557600080fd5b509092509050610621565b005b61026a610db4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a457818101518382015260200161028c565b50505050905090810190601f1680156102d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e7610ddb565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103436004803603604081101561032d57600080fd5b506001600160a01b038135169060200135610e05565b604080519115158252519081900360200190f35b61035f610e1c565b604080516001600160a01b039092168252519081900360200190f35b610383610e2b565b60408051918252519081900360200190f35b610343600480360360608110156103ab57600080fd5b506001600160a01b03813581169160208101359091169060400135610e31565b610383610ecb565b6103db610eef565b6040805160ff9092168252519081900360200190f35b610383610ef4565b6102606004803603602081101561040f57600080fd5b50356001600160a01b0316610efa565b610383610f85565b610383610f8b565b6103836004803603602081101561044557600080fd5b50356001600160a01b0316610f91565b6103836004803603602081101561046b57600080fd5b50356001600160a01b0316611254565b610383611266565b6103836004803603602081101561049957600080fd5b50356001600160a01b031661126c565b6104cf600480360360208110156104bf57600080fd5b50356001600160a01b031661127e565b6040805192835260208301919091528051918290030190f35b61026a6115e8565b6103436004803603604081101561050657600080fd5b506001600160a01b038135169060200135611606565b61035f611613565b610383611622565b6102606004803603602081101561054257600080fd5b50356001600160a01b0316611628565b6102606004803603606081101561056857600080fd5b506001600160a01b038135811691602081013582169160409091013516611795565b61035f61182c565b61035f61183b565b610260600480360360e08110156105b057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561184a565b6103836004803603604081101561060157600080fd5b506001600160a01b0381358116916020013516611a4e565b610260611a6b565b600d5460011461066e576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d55841515806106815750600084115b6106bc5760405162461bcd60e51b81526004018080602001828103825260268152602001806123bf6026913960400191505060405180910390fd5b8415806106c7575083155b6107025760405162461bcd60e51b81526004018080602001828103825260288152602001806123e56028913960400191505060405180910390fd5b60008061070d610ddb565b5091509150816001600160701b0316871080156107325750806001600160701b031686105b61076d5760405162461bcd60e51b81526004018080602001828103825260238152602001806123246023913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107ab5750806001600160a01b0316896001600160a01b031614155b6107fc576040805162461bcd60e51b815260206004820152601760248201527f43727970746f204d696e653a20494e56414c49445f544f000000000000000000604482015290519081900360640190fd5b8a1561080d5761080d828a8d611bcf565b891561081e5761081e818a8c611bcf565b86156108d957886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156108c057600080fd5b505af11580156108d4573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561091f57600080fd5b505afa158015610933573d6000803e3d6000fd5b505050506040513d602081101561094957600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051925060009150506001600160701b0385168a900383116109e25760006109f1565b89856001600160701b03160383035b9050600089856001600160701b0316038311610a0e576000610a1d565b89856001600160701b03160383035b90506000821180610a2e5750600081115b610a695760405162461bcd60e51b81526004018080602001828103825260248152602001806123476024913960400191505060405180910390fd5b6000610a9d610a7f84606463ffffffff611d6916565b610a91876103e863ffffffff611d6916565b9063ffffffff611dcc16565b90506000610ab5610a7f84606463ffffffff611d6916565b9050610ae6620f4240610ada6001600160701b038b8116908b1663ffffffff611d6916565b9063ffffffff611d6916565b610af6838363ffffffff611d6916565b1015610b38576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b6000610b69610b596001600160701b038b8116908b1663ffffffff611d6916565b610a91898963ffffffff611d6916565b90506000808f15610b8f576007546001600160a01b0316898481610b8957fe5b04610ba6565b6006546001600160a01b0316888481610ba457fe5b045b90925090508015610bc957600854610bc99083906001600160a01b031683611bcf565b600654604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610c1457600080fd5b505afa158015610c28573d6000803e3d6000fd5b505050506040513d6020811015610c3e57600080fd5b5051600754604080516370a0823160e01b81523060048201529051929b506001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610c8e57600080fd5b505afa158015610ca2573d6000803e3d6000fd5b505050506040513d6020811015610cb857600080fd5b50519750610cdf945050506001600160701b0389811692508816905063ffffffff611d6916565b610cef858563ffffffff611d6916565b1015610d42576040805162461bcd60e51b815260206004820152601860248201527f43727970746f204d696e653a20696e76616c69645f4645450000000000000000604482015290519081900360640190fd5b610d4e84848888611e1c565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d55505050505050505050565b6040518060400160405280600b81526020016a43727970746f204d696e6560a81b81525081565b6009546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610e12338484611fe3565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610eb6576001600160a01b0384166000908152600260209081526040808320338452909152902054610e91908363ffffffff611dcc16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610ec1848484612045565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6008546001600160a01b031615610f63576008546001600160a01b03163314610f63576040805162461bcd60e51b815260206004820152601660248201527521b93cb83a379026b4b7329d102327a92124a22222a760511b604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600a5481565b600b5481565b6000600d54600114610fe0576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d81905580610ff0610ddb565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50519050600061110a836001600160701b03871663ffffffff611dcc16565b90506000611127836001600160701b03871663ffffffff611dcc16565b60005490915080611164576111506103e8610a9161114b868663ffffffff611d6916565b6120ff565b975061115f60006103e8612151565b6111b3565b6111b06001600160701b038816611181858463ffffffff611d6916565b8161118857fe5b046001600160701b0388166111a3858563ffffffff611d6916565b816111aa57fe5b046121e7565b97505b600088116111f25760405162461bcd60e51b815260040180806020018281038252602a81526020018061236b602a913960400191505060405180910390fd5b6111fc8989612151565b61120885858989611e1c565b6040805184815260208101849052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d55509395945050505050565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600d546001146112ce576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d819055806112de610ddb565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d602081101561136457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156113b257600080fd5b505afa1580156113c6573d6000803e3d6000fd5b505050506040513d60208110156113dc57600080fd5b50513060009081526001602052604081205490549192509080611405838663ffffffff611d6916565b8161140c57fe5b04995080611420838563ffffffff611d6916565b8161142757fe5b04985060008a11801561143a5750600089115b6114755760405162461bcd60e51b815260040180806020018281038252602a815260200180612395602a913960400191505060405180910390fd5b61147f30836121ff565b61148a868c8c611bcf565b611495858c8b611bcf565b604080516370a0823160e01b815230600482015290516001600160a01b038816916370a08231916024808301926020929190829003018186803b1580156114db57600080fd5b505afa1580156114ef573d6000803e3d6000fd5b505050506040513d602081101561150557600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038716916370a0823191602480820192602092909190829003018186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d602081101561157b57600080fd5b5051925061158b84848a8a611e1c565b604080518b8152602081018b905281516001600160a01b038e169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050506001600d81905550915091565b60405180604001604052806002815260200161434d60f01b81525081565b6000610e12338484612045565b6008546001600160a01b031681565b6103e881565b600d54600114611675576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d55600654600754600954604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611724928592879261171f926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156116e757600080fd5b505afa1580156116fb573d6000803e3d6000fd5b505050506040513d602081101561171157600080fd5b50519063ffffffff611dcc16565b611bcf565b600954604080516370a0823160e01b8152306004820152905161178b928492879261171f92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156116e757600080fd5b50506001600d5550565b6005546001600160a01b031633146117ed576040805162461bcd60e51b815260206004820152601660248201527521b93cb83a379026b4b7329d102327a92124a22222a760511b604482015290519081900360640190fd5b600680546001600160a01b039485166001600160a01b031991821617909155600780549385169382169390931790925560088054919093169116179055565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611896576040805162461bcd60e51b815260206004820152601460248201527310dc9e5c1d1bc8135a5b994e881156141254915160621b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156119b1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906119e75750886001600160a01b0316816001600160a01b0316145b611a38576040805162461bcd60e51b815260206004820152601e60248201527f43727970746f204d696e653a20494e56414c49445f5349474e41545552450000604482015290519081900360640190fd5b611a43898989611fe3565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600d54600114611ab8576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d55600654604080516370a0823160e01b81523060048201529051611bc8926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611b0957600080fd5b505afa158015611b1d573d6000803e3d6000fd5b505050506040513d6020811015611b3357600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611b8057600080fd5b505afa158015611b94573d6000803e3d6000fd5b505050506040513d6020811015611baa57600080fd5b50516009546001600160701b0380821691600160701b900416611e1c565b6001600d55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611c7c5780518252601f199092019160209182019101611c5d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611cde576040519150601f19603f3d011682016040523d82523d6000602084013e611ce3565b606091505b5091509150818015611d11575080511580611d115750808060200190516020811015611d0e57600080fd5b50515b611d62576040805162461bcd60e51b815260206004820152601c60248201527f43727970746f204d696e653a205452414e534645525f4641494c454400000000604482015290519081900360640190fd5b5050505050565b6000811580611d8457505080820282828281611d8157fe5b04145b610e16576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610e16576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611e3a57506001600160701b038311155b611e83576040805162461bcd60e51b815260206004820152601560248201527443727970746f204d696e653a204f564552464c4f5760581b604482015290519081900360640190fd5b60095463ffffffff42811691600160e01b90048116820390811615801590611eb357506001600160701b03841615155b8015611ec757506001600160701b03831615155b15611f38578063ffffffff16611ef585611ee08661229d565b6001600160e01b03169063ffffffff6122af16565b600a80546001600160e01b03929092169290920201905563ffffffff8116611f2084611ee08761229d565b600b80546001600160e01b0392909216929092020190555b600980546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831660009081526001602052604090205461206e908263ffffffff611dcc16565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546120a3908263ffffffff6122d416565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60006003821115612142575080600160028204015b8181101561213c5780915060028182858161212b57fe5b04018161213457fe5b049050612114565b5061214c565b811561214c575060015b919050565b600054612164908263ffffffff6122d416565b60009081556001600160a01b03831681526001602052604090205461218f908263ffffffff6122d416565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106121f657816121f8565b825b9392505050565b6001600160a01b038216600090815260016020526040902054612228908263ffffffff611dcc16565b6001600160a01b03831660009081526001602052604081209190915554612255908263ffffffff611dcc16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b038416816122cc57fe5b049392505050565b80820182811015610e16576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe43727970746f204d696e653a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e5443727970746f204d696e653a20494e53554646494349454e545f4c49515549444954595f4d494e54454443727970746f204d696e653a20494e53554646494349454e545f4c49515549444954595f4255524e454443727970746f204d696e653a494e53554646494349454e545f4f55545055545f414d4f554e5443727970746f204d696e653a494e53554646494349454e545f4f55545055545f414d4f554e542030a265627a7a72315820c67db33ec81d8f4e8f5ca1eb8c37203135eba8f4eb0efb19b3869fb7822a29b564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806370a0823111610104578063ba9a7a56116100a2578063d21220a711610071578063d21220a714610592578063d505accf1461059a578063dd62ed3e146105eb578063fff6cae914610619576101cf565b8063ba9a7a5614610524578063bc25cf771461052c578063c0c53b8b14610552578063c45a01551461058a576101cf565b806389afcb44116100de57806389afcb44146104a957806395d89b41146104e8578063a9059cbb146104f0578063b9818be11461051c576101cf565b806370a08231146104555780637464fc3d1461047b5780637ecebe0014610483576101cf565b806330adf81f116101715780634b104eff1161014b5780634b104eff146103f95780635909c0d51461041f5780635a3d5493146104275780636a6278421461042f576101cf565b806330adf81f146103cb578063313ce567146103d35780633644e515146103f1576101cf565b8063095ea7b3116101ad578063095ea7b3146103175780630dfe16811461035757806318160ddd1461037b57806323b872dd14610395576101cf565b8063022c0d9f146101d457806306fdde03146102625780630902f1ac146102df575b600080fd5b610260600480360360808110156101ea57600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561022157600080fd5b82018360208201111561023357600080fd5b8035906020019184600183028401116401000000008311171561025557600080fd5b509092509050610621565b005b61026a610db4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a457818101518382015260200161028c565b50505050905090810190601f1680156102d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e7610ddb565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103436004803603604081101561032d57600080fd5b506001600160a01b038135169060200135610e05565b604080519115158252519081900360200190f35b61035f610e1c565b604080516001600160a01b039092168252519081900360200190f35b610383610e2b565b60408051918252519081900360200190f35b610343600480360360608110156103ab57600080fd5b506001600160a01b03813581169160208101359091169060400135610e31565b610383610ecb565b6103db610eef565b6040805160ff9092168252519081900360200190f35b610383610ef4565b6102606004803603602081101561040f57600080fd5b50356001600160a01b0316610efa565b610383610f85565b610383610f8b565b6103836004803603602081101561044557600080fd5b50356001600160a01b0316610f91565b6103836004803603602081101561046b57600080fd5b50356001600160a01b0316611254565b610383611266565b6103836004803603602081101561049957600080fd5b50356001600160a01b031661126c565b6104cf600480360360208110156104bf57600080fd5b50356001600160a01b031661127e565b6040805192835260208301919091528051918290030190f35b61026a6115e8565b6103436004803603604081101561050657600080fd5b506001600160a01b038135169060200135611606565b61035f611613565b610383611622565b6102606004803603602081101561054257600080fd5b50356001600160a01b0316611628565b6102606004803603606081101561056857600080fd5b506001600160a01b038135811691602081013582169160409091013516611795565b61035f61182c565b61035f61183b565b610260600480360360e08110156105b057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561184a565b6103836004803603604081101561060157600080fd5b506001600160a01b0381358116916020013516611a4e565b610260611a6b565b600d5460011461066e576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d55841515806106815750600084115b6106bc5760405162461bcd60e51b81526004018080602001828103825260268152602001806123bf6026913960400191505060405180910390fd5b8415806106c7575083155b6107025760405162461bcd60e51b81526004018080602001828103825260288152602001806123e56028913960400191505060405180910390fd5b60008061070d610ddb565b5091509150816001600160701b0316871080156107325750806001600160701b031686105b61076d5760405162461bcd60e51b81526004018080602001828103825260238152602001806123246023913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107ab5750806001600160a01b0316896001600160a01b031614155b6107fc576040805162461bcd60e51b815260206004820152601760248201527f43727970746f204d696e653a20494e56414c49445f544f000000000000000000604482015290519081900360640190fd5b8a1561080d5761080d828a8d611bcf565b891561081e5761081e818a8c611bcf565b86156108d957886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156108c057600080fd5b505af11580156108d4573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561091f57600080fd5b505afa158015610933573d6000803e3d6000fd5b505050506040513d602081101561094957600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051925060009150506001600160701b0385168a900383116109e25760006109f1565b89856001600160701b03160383035b9050600089856001600160701b0316038311610a0e576000610a1d565b89856001600160701b03160383035b90506000821180610a2e5750600081115b610a695760405162461bcd60e51b81526004018080602001828103825260248152602001806123476024913960400191505060405180910390fd5b6000610a9d610a7f84606463ffffffff611d6916565b610a91876103e863ffffffff611d6916565b9063ffffffff611dcc16565b90506000610ab5610a7f84606463ffffffff611d6916565b9050610ae6620f4240610ada6001600160701b038b8116908b1663ffffffff611d6916565b9063ffffffff611d6916565b610af6838363ffffffff611d6916565b1015610b38576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b6000610b69610b596001600160701b038b8116908b1663ffffffff611d6916565b610a91898963ffffffff611d6916565b90506000808f15610b8f576007546001600160a01b0316898481610b8957fe5b04610ba6565b6006546001600160a01b0316888481610ba457fe5b045b90925090508015610bc957600854610bc99083906001600160a01b031683611bcf565b600654604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610c1457600080fd5b505afa158015610c28573d6000803e3d6000fd5b505050506040513d6020811015610c3e57600080fd5b5051600754604080516370a0823160e01b81523060048201529051929b506001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610c8e57600080fd5b505afa158015610ca2573d6000803e3d6000fd5b505050506040513d6020811015610cb857600080fd5b50519750610cdf945050506001600160701b0389811692508816905063ffffffff611d6916565b610cef858563ffffffff611d6916565b1015610d42576040805162461bcd60e51b815260206004820152601860248201527f43727970746f204d696e653a20696e76616c69645f4645450000000000000000604482015290519081900360640190fd5b610d4e84848888611e1c565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d55505050505050505050565b6040518060400160405280600b81526020016a43727970746f204d696e6560a81b81525081565b6009546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610e12338484611fe3565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610eb6576001600160a01b0384166000908152600260209081526040808320338452909152902054610e91908363ffffffff611dcc16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610ec1848484612045565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6008546001600160a01b031615610f63576008546001600160a01b03163314610f63576040805162461bcd60e51b815260206004820152601660248201527521b93cb83a379026b4b7329d102327a92124a22222a760511b604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600a5481565b600b5481565b6000600d54600114610fe0576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d81905580610ff0610ddb565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50519050600061110a836001600160701b03871663ffffffff611dcc16565b90506000611127836001600160701b03871663ffffffff611dcc16565b60005490915080611164576111506103e8610a9161114b868663ffffffff611d6916565b6120ff565b975061115f60006103e8612151565b6111b3565b6111b06001600160701b038816611181858463ffffffff611d6916565b8161118857fe5b046001600160701b0388166111a3858563ffffffff611d6916565b816111aa57fe5b046121e7565b97505b600088116111f25760405162461bcd60e51b815260040180806020018281038252602a81526020018061236b602a913960400191505060405180910390fd5b6111fc8989612151565b61120885858989611e1c565b6040805184815260208101849052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d55509395945050505050565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600d546001146112ce576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d819055806112de610ddb565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d602081101561136457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156113b257600080fd5b505afa1580156113c6573d6000803e3d6000fd5b505050506040513d60208110156113dc57600080fd5b50513060009081526001602052604081205490549192509080611405838663ffffffff611d6916565b8161140c57fe5b04995080611420838563ffffffff611d6916565b8161142757fe5b04985060008a11801561143a5750600089115b6114755760405162461bcd60e51b815260040180806020018281038252602a815260200180612395602a913960400191505060405180910390fd5b61147f30836121ff565b61148a868c8c611bcf565b611495858c8b611bcf565b604080516370a0823160e01b815230600482015290516001600160a01b038816916370a08231916024808301926020929190829003018186803b1580156114db57600080fd5b505afa1580156114ef573d6000803e3d6000fd5b505050506040513d602081101561150557600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038716916370a0823191602480820192602092909190829003018186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d602081101561157b57600080fd5b5051925061158b84848a8a611e1c565b604080518b8152602081018b905281516001600160a01b038e169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050506001600d81905550915091565b60405180604001604052806002815260200161434d60f01b81525081565b6000610e12338484612045565b6008546001600160a01b031681565b6103e881565b600d54600114611675576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d55600654600754600954604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611724928592879261171f926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156116e757600080fd5b505afa1580156116fb573d6000803e3d6000fd5b505050506040513d602081101561171157600080fd5b50519063ffffffff611dcc16565b611bcf565b600954604080516370a0823160e01b8152306004820152905161178b928492879261171f92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156116e757600080fd5b50506001600d5550565b6005546001600160a01b031633146117ed576040805162461bcd60e51b815260206004820152601660248201527521b93cb83a379026b4b7329d102327a92124a22222a760511b604482015290519081900360640190fd5b600680546001600160a01b039485166001600160a01b031991821617909155600780549385169382169390931790925560088054919093169116179055565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611896576040805162461bcd60e51b815260206004820152601460248201527310dc9e5c1d1bc8135a5b994e881156141254915160621b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156119b1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906119e75750886001600160a01b0316816001600160a01b0316145b611a38576040805162461bcd60e51b815260206004820152601e60248201527f43727970746f204d696e653a20494e56414c49445f5349474e41545552450000604482015290519081900360640190fd5b611a43898989611fe3565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600d54600114611ab8576040805162461bcd60e51b815260206004820152601360248201527210dc9e5c1d1bc8135a5b994e881313d0d2d151606a1b604482015290519081900360640190fd5b6000600d55600654604080516370a0823160e01b81523060048201529051611bc8926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611b0957600080fd5b505afa158015611b1d573d6000803e3d6000fd5b505050506040513d6020811015611b3357600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611b8057600080fd5b505afa158015611b94573d6000803e3d6000fd5b505050506040513d6020811015611baa57600080fd5b50516009546001600160701b0380821691600160701b900416611e1c565b6001600d55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611c7c5780518252601f199092019160209182019101611c5d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611cde576040519150601f19603f3d011682016040523d82523d6000602084013e611ce3565b606091505b5091509150818015611d11575080511580611d115750808060200190516020811015611d0e57600080fd5b50515b611d62576040805162461bcd60e51b815260206004820152601c60248201527f43727970746f204d696e653a205452414e534645525f4641494c454400000000604482015290519081900360640190fd5b5050505050565b6000811580611d8457505080820282828281611d8157fe5b04145b610e16576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610e16576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611e3a57506001600160701b038311155b611e83576040805162461bcd60e51b815260206004820152601560248201527443727970746f204d696e653a204f564552464c4f5760581b604482015290519081900360640190fd5b60095463ffffffff42811691600160e01b90048116820390811615801590611eb357506001600160701b03841615155b8015611ec757506001600160701b03831615155b15611f38578063ffffffff16611ef585611ee08661229d565b6001600160e01b03169063ffffffff6122af16565b600a80546001600160e01b03929092169290920201905563ffffffff8116611f2084611ee08761229d565b600b80546001600160e01b0392909216929092020190555b600980546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831660009081526001602052604090205461206e908263ffffffff611dcc16565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546120a3908263ffffffff6122d416565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60006003821115612142575080600160028204015b8181101561213c5780915060028182858161212b57fe5b04018161213457fe5b049050612114565b5061214c565b811561214c575060015b919050565b600054612164908263ffffffff6122d416565b60009081556001600160a01b03831681526001602052604090205461218f908263ffffffff6122d416565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106121f657816121f8565b825b9392505050565b6001600160a01b038216600090815260016020526040902054612228908263ffffffff611dcc16565b6001600160a01b03831660009081526001602052604081209190915554612255908263ffffffff611dcc16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b038416816122cc57fe5b049392505050565b80820182811015610e16576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe43727970746f204d696e653a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e5443727970746f204d696e653a20494e53554646494349454e545f4c49515549444954595f4d494e54454443727970746f204d696e653a20494e53554646494349454e545f4c49515549444954595f4255524e454443727970746f204d696e653a494e53554646494349454e545f4f55545055545f414d4f554e5443727970746f204d696e653a494e53554646494349454e545f4f55545055545f414d4f554e542030a265627a7a72315820c67db33ec81d8f4e8f5ca1eb8c37203135eba8f4eb0efb19b3869fb7822a29b564736f6c63430005100032
Deployed Bytecode Sourcemap
10287:9365:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10287:9365:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16417:2418;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;16417:2418:0;;;;;;;;-1:-1:-1;;;;;16417:2418:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;16417:2418:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16417:2418:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;16417:2418:0;;-1:-1:-1;16417:2418:0;-1:-1:-1;16417:2418:0;:::i;:::-;;6947:43;;;:::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;6947:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11344:231;;;:::i;:::-;;;;-1:-1:-1;;;;;11344:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8991:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8991:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10597:21;;;:::i;:::-;;;;-1:-1:-1;;;;;10597:21:0;;;;;;;;;;;;;;7082:24;;;:::i;:::-;;;;;;;;;;;;;;;;9293:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9293:301:0;;;;;;;;;;;;;;;;;:::i;7374:108::-;;;:::i;7040:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7231:31;;;:::i;19437:206::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19437:206:0;-1:-1:-1;;;;;19437:206:0;;:::i;10978:32::-;;;:::i;11017:::-;;;:::i;13731:1146::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13731:1146:0;-1:-1:-1;;;;;13731:1146:0;;:::i;7113:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7113:41:0;-1:-1:-1;;;;;7113:41:0;;:::i;11056:17::-;;;:::i;7489:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7489:38:0;-1:-1:-1;;;;;7489:38:0;;:::i;14989:1316::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14989:1316:0;-1:-1:-1;;;;;14989:1316:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6997:36;;;:::i;9146:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9146:139:0;;;;;;;;:::i;10653:23::-;;;:::i;10418:46::-;;;:::i;18884:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18884:334:0;-1:-1:-1;;;;;18884:334:0;;:::i;12406:262::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12406:262:0;;;;;;;;;;;;;;;;;;;:::i;10568:22::-;;;:::i;10625:21::-;;;:::i;9602:678::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;9602:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9602:678:0;;;;;;;;:::i;7161:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7161:61:0;;;;;;;;;;:::i;19267:158::-;;;:::i;16417:2418::-;11233:8;;11245:1;11233:13;11225:45;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;;;;11292:1;11281:8;:12;16531:14;;;;:32;;;16562:1;16549:10;:14;16531:32;16523:83;;;;-1:-1:-1;;;16523:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16625:15;;;:34;;-1:-1:-1;16644:15:0;;16625:34;16617:87;;;;-1:-1:-1;;;16617:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16716:17;16735;16757:13;:11;:13::i;:::-;-1:-1:-1;16715:55:0;;-1:-1:-1;16715:55:0;-1:-1:-1;;;;;;16804:22:0;;;;:48;;;;-1:-1:-1;;;;;;16830:22:0;;;;16804:48;16796:96;;;;-1:-1:-1;;;16796:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17035:6;;17070;;16903:13;;;;-1:-1:-1;;;;;17035:6:0;;;;17070;;;;17095:13;;;;;;;:30;;-1:-1:-1;;;;;;17112:13:0;;;;;;;;17095:30;17087:66;;;;;-1:-1:-1;;;17087:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17168:14;;17164:58;;17184:38;17198:7;17207:2;17211:10;17184:13;:38::i;:::-;17271:14;;17267:58;;17287:38;17301:7;17310:2;17314:10;17287:13;:38::i;:::-;17374:15;;17370:97;;17408:2;-1:-1:-1;;;;;17391:34:0;;17426:10;17438;17450;17462:4;;17391:76;;;;;;;;;;;;;-1:-1:-1;;;;;17391:76:0;-1:-1:-1;;;;;17391:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;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;;17391:76:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17391:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17391:76:0;;;;17370:97;17489:40;;;-1:-1:-1;;;17489:40:0;;17523:4;17489:40;;;;;;-1:-1:-1;;;;;17489:25:0;;;-1:-1:-1;;17489:40:0;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17489:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17489:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17489:40:0;17551;;;-1:-1:-1;;;17551:40:0;;17585:4;17551:40;;;;;;17489;;-1:-1:-1;;;;;;17551:25:0;;;-1:-1:-1;;17551:40:0;;;;;17489;;17551;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17551:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17551:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17551:40:0;;-1:-1:-1;17613:14:0;;-1:-1:-1;;;;;;;17641:22:0;;;;;17630:33;;:75;;17704:1;17630:75;;;-1:-1:-1;;;;;17678:22:0;;;;;17666:35;;17630:75;17613:92;-1:-1:-1;17716:14:0;-1:-1:-1;;;;;17744:22:0;;;;;17733:33;;:75;;17807:1;17733:75;;;-1:-1:-1;;;;;17781:22:0;;;;;17769:35;;17733:75;17716:92;;17839:1;17827:9;:13;:30;;;;17856:1;17844:9;:13;17827:30;17819:79;;;;-1:-1:-1;;;17819:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17920:21;17944:42;17967:18;:9;17981:3;17967:18;:13;:18;:::i;:::-;17944;:8;17957:4;17944:18;:12;:18;:::i;:::-;:22;:42;:22;:42;:::i;:::-;17920:66;-1:-1:-1;17997:21:0;18021:42;18044:18;:9;18058:3;18044:18;:13;:18;:::i;18021:42::-;17997:66;-1:-1:-1;18124:43:0;18159:7;18124:30;-1:-1:-1;;;;;18124:15:0;;;;:30;;:19;:30::i;:::-;:34;:43;:34;:43;:::i;:::-;18082:38;:16;18103;18082:38;:20;:38;:::i;:::-;:85;;18074:110;;;;;-1:-1:-1;;;18074:110:0;;;;;;;;;;;;-1:-1:-1;;;18074:110:0;;;;;;;;;;;;;;;18205:16;18224:58;18251:30;-1:-1:-1;;;;;18251:15:0;;;;:30;;:19;:30::i;:::-;18224:22;:8;18237;18224:22;:12;:22;:::i;:58::-;18205:77;-1:-1:-1;18294:13:0;;18323;;:67;;18365:6;;-1:-1:-1;;;;;18365:6:0;18381:8;18372;18381;18372:17;;;;;18323:67;;;18338:6;;-1:-1:-1;;;;;18338:6:0;18354:8;18345;18354;18345:17;;;;;18323:67;18293:97;;-1:-1:-1;18293:97:0;-1:-1:-1;18404:5:0;;18401:46;;18433:8;;18412:35;;18426:5;;-1:-1:-1;;;;;18433:8:0;18443:3;18412:13;:35::i;:::-;18477:6;;18470:39;;;-1:-1:-1;;;18470:39:0;;18503:4;18470:39;;;;;;-1:-1:-1;;;;;18477:6:0;;;;-1:-1:-1;;18470:39:0;;;;;;;;;;;;;;;18477:6;18470:39;;;5:2:-1;;;;30:1;27;20:12;5:2;18470:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18470:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18470:39:0;18538:6;;18531:39;;;-1:-1:-1;;;18531:39:0;;18564:4;18531:39;;;;;;18470;;-1:-1:-1;;;;;;18538:6:0;;;;-1:-1:-1;;18531:39:0;;;;;18470;;18531;;;;;;;;18538:6;18531:39;;;5:2:-1;;;;30:1;27;20:12;5:2;18531:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18531:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18531:39:0;;-1:-1:-1;18626:30:0;;-1:-1:-1;;;;;;;;18626:15:0;;;;-1:-1:-1;18626:30:0;;;-1:-1:-1;18626:19:0;:30::i;:::-;18600:22;:8;18613;18600:22;:12;:22;:::i;:::-;:56;;18592:93;;;;;-1:-1:-1;;;18592:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18696:49;18704:8;18714;18724:9;18735;18696:7;:49::i;:::-;18761:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18761:66:0;;;18766:10;;18761:66;;;;;;;;;-1:-1:-1;;11327:1:0;11316:8;:12;-1:-1:-1;;;;;;;;;16417:2418:0:o;6947:43::-;;;;;;;;;;;;;-1:-1:-1;;;6947:43:0;;;;;:::o;11344:231::-;11477:8;;-1:-1:-1;;;;;11477:8:0;;;;-1:-1:-1;;;11508:8:0;;;;;;-1:-1:-1;;;11549:18:0;;;;;11344:231::o;8991:147::-;9055:4;9072:36;9081:10;9093:7;9102:5;9072:8;:36::i;:::-;-1:-1:-1;9126:4:0;8991:147;;;;;:::o;10597:21::-;;;-1:-1:-1;;;;;10597:21:0;;:::o;7082:24::-;;;;:::o;9293:301::-;-1:-1:-1;;;;;9392:15:0;;9371:4;9392:15;;;:9;:15;;;;;;;;9408:10;9392:27;;;;;;;;-1:-1:-1;;9392:39:0;9388:140;;-1:-1:-1;;;;;9478:15:0;;;;;;:9;:15;;;;;;;;9494:10;9478:27;;;;;;;;:38;;9510:5;9478:31;:38::i;:::-;-1:-1:-1;;;;;9448:15:0;;;;;;:9;:15;;;;;;;;9464:10;9448:27;;;;;;;:68;9388:140;9538:26;9548:4;9554:2;9558:5;9538:9;:26::i;:::-;-1:-1:-1;9582:4:0;9293:301;;;;;:::o;7374:108::-;7416:66;7374:108;:::o;7040:35::-;7073:2;7040:35;:::o;7231:31::-;;;;:::o;19437:206::-;19500:8;;-1:-1:-1;;;;;19500:8:0;:20;19497:108;;19558:8;;-1:-1:-1;;;;;19558:8:0;19544:10;:22;19536:57;;;;;-1:-1:-1;;;19536:57:0;;;;;;;;;;;;-1:-1:-1;;;19536:57:0;;;;;;;;;;;;;;;19615:8;:20;;-1:-1:-1;;;;;;19615:20:0;-1:-1:-1;;;;;19615:20:0;;;;;;;;;;19437:206::o;10978:32::-;;;;:::o;11017:::-;;;;:::o;13731:1146::-;13780:14;11233:8;;11245:1;11233:13;11225:45;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;;;;11292:1;11281:8;:12;;;11292:1;13849:13;:11;:13::i;:::-;-1:-1:-1;13911:6:0;;13904:39;;;-1:-1:-1;;;13904:39:0;;13937:4;13904:39;;;;;;13807:55;;-1:-1:-1;13807:55:0;;-1:-1:-1;;;;;;;;13911:6:0;;;;-1:-1:-1;;13904:39:0;;;;;;;;;;;;;;13911:6;13904:39;;;5:2:-1;;;;30:1;27;20:12;5:2;13904:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13904:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13904:39:0;13977:6;;13970:39;;;-1:-1:-1;;;13970:39:0;;14003:4;13970:39;;;;;;13904;;-1:-1:-1;;;;;;;;13977:6:0;;;;-1:-1:-1;;13970:39:0;;;;;13904;;13970;;;;;;;;13977:6;13970:39;;;5:2:-1;;;;30:1;27;20:12;5:2;13970:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13970:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13970:39:0;;-1:-1:-1;14020:12:0;14035:23;:8;-1:-1:-1;;;;;14035:23:0;;:12;:23::i;:::-;14020:38;-1:-1:-1;14069:12:0;14084:23;:8;-1:-1:-1;;;;;14084:23:0;;:12;:23::i;:::-;14176:17;14196:11;14069:38;;-1:-1:-1;14300:17:0;14296:352;;14346:54;10459:5;14346:31;14356:20;:7;14368;14356:20;:11;:20;:::i;:::-;14346:9;:31::i;:54::-;14334:66;;14414:36;14428:1;10459:5;14414;:36::i;:::-;14296:352;;;14550:86;-1:-1:-1;;;;;14559:37:0;;:25;:7;14571:12;14559:11;:25::i;:::-;:37;;;;;;-1:-1:-1;;;;;14598:37:0;;:25;:7;14610:12;14598:11;:25::i;:::-;:37;;;;;;14550:8;:86::i;:::-;14538:98;;14296:352;14678:1;14666:9;:13;14658:68;;;;-1:-1:-1;;;14658:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14737:20;14743:2;14747:9;14737:5;:20::i;:::-;14770:49;14778:8;14788;14798:9;14809;14770:7;:49::i;:::-;14835:34;;;;;;;;;;;;;;14840:10;;14835:34;;;;;;;;-1:-1:-1;;11327:1:0;11316:8;:12;-1:-1:-1;13731:1146:0;;;-1:-1:-1;;;;;13731:1146:0:o;7113:41::-;;;;;;;;;;;;;:::o;11056:17::-;;;;:::o;7489:38::-;;;;;;;;;;;;;:::o;14989:1316::-;15038:12;15052;11233:8;;11245:1;11233:13;11225:45;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;;;;11292:1;11281:8;:12;;;11292:1;15119:13;:11;:13::i;:::-;-1:-1:-1;15176:6:0;;15257;;15336:40;;;-1:-1:-1;;;15336:40:0;;15370:4;15336:40;;;;;;15077:55;;-1:-1:-1;15077:55:0;;-1:-1:-1;;;;;;15176:6:0;;;;15257;;;-1:-1:-1;;15176:6:0;;-1:-1:-1;;15336:40:0;;;;;;;;;;;;;;15176:6;15336:40;;;5:2:-1;;;;30:1;27;20:12;5:2;15336:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15336:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15336:40:0;15403;;;-1:-1:-1;;;15403:40:0;;15437:4;15403:40;;;;;;15336;;-1:-1:-1;;;;;;;;15403:25:0;;;-1:-1:-1;;15403:40:0;;;;;15336;;15403;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;15403:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15403:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15403:40:0;15489:4;15454:14;15471:24;;;:9;15403:40;15471:24;;;;;15528:11;;15403:40;;-1:-1:-1;15471:24:0;15528:11;15638:23;15471:24;15652:8;15638:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;15771:12:0;15745:23;:9;15759:8;15745:23;:13;:23;:::i;:::-;:38;;;;;;15735:48;;15860:1;15850:7;:11;:26;;;;;15875:1;15865:7;:11;15850:26;15842:81;;;;-1:-1:-1;;;15842:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15934:31;15948:4;15955:9;15934:5;:31::i;:::-;15976:35;15990:7;15999:2;16003:7;15976:13;:35::i;:::-;16022;16036:7;16045:2;16049:7;16022:13;:35::i;:::-;16079:40;;;-1:-1:-1;;;16079:40:0;;16113:4;16079:40;;;;;;-1:-1:-1;;;;;16079:25:0;;;-1:-1:-1;;16079:40:0;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16079:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16079:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16079:40:0;16141;;;-1:-1:-1;;;16141:40:0;;16175:4;16141:40;;;;;;16079;;-1:-1:-1;;;;;;16141:25:0;;;-1:-1:-1;;16141:40:0;;;;;16079;;16141;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16141:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16141:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16141:40:0;;-1:-1:-1;16194:49:0;16202:8;16141:40;16222:9;16233;16194:7;:49::i;:::-;16259:38;;;;;;;;;;;;;;-1:-1:-1;;;;;16259:38:0;;;16264:10;;16259:38;;;;;;;;;;;11304:1;;;;;;;;11327;11316:8;:12;;;;14989:1316;;;:::o;6997:36::-;;;;;;;;;;;;;-1:-1:-1;;;6997:36:0;;;;;:::o;9146:139::-;9206:4;9223:32;9233:10;9245:2;9249:5;9223:9;:32::i;10653:23::-;;;-1:-1:-1;;;;;10653:23:0;;:::o;10418:46::-;10459:5;10418:46;:::o;18884:334::-;11233:8;;11245:1;11233:13;11225:45;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;;;;11292:1;11281:8;:12;18953:6;;19003;;19107:8;;19062:40;;;-1:-1:-1;;;19062:40:0;;19096:4;19062:40;;;;;;-1:-1:-1;;;;;18953:6:0;;;;19003;;;;19035:82;;18953:6;;19058:2;;19062:54;;-1:-1:-1;;;;;19107:8:0;;18953:6;;-1:-1:-1;;19062:40:0;;;;;;;;;;;;;;;18953:6;19062:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19062:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19062:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19062:40:0;;:54;:44;:54;:::i;:::-;19035:13;:82::i;:::-;19200:8;;19155:40;;;-1:-1:-1;;;19155:40:0;;19189:4;19155:40;;;;;;19128:82;;19142:7;;19151:2;;19155:54;;-1:-1:-1;;;19200:8:0;;-1:-1:-1;;;;;19200:8:0;;-1:-1:-1;;;;;19155:25:0;;;-1:-1:-1;;19155:40:0;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;19128:82:0;-1:-1:-1;;11327:1:0;11316:8;:12;-1:-1:-1;18884:334:0:o;12406:262::-;12521:7;;-1:-1:-1;;;;;12521:7:0;12507:10;:21;12499:56;;;;;-1:-1:-1;;;12499:56:0;;;;;;;;;;;;-1:-1:-1;;;12499:56:0;;;;;;;;;;;;;;;12586:6;:16;;-1:-1:-1;;;;;12586:16:0;;;-1:-1:-1;;;;;;12586:16:0;;;;;;;12613:6;:16;;;;;;;;;;;;;;;12640:8;:20;;;;;;;;;;;12406:262::o;10568:22::-;;;-1:-1:-1;;;;;10568:22:0;;:::o;10625:21::-;;;-1:-1:-1;;;;;10625:21:0;;:::o;9602:678::-;9748:15;9736:8;:27;;9728:60;;;;;-1:-1:-1;;;9728:60:0;;;;;;;;;;;;-1:-1:-1;;;9728:60:0;;;;;;;;;;;;;;;9904:16;;-1:-1:-1;;;;;10000:13:0;;;9799:14;10000:13;;;:6;:13;;;;;;;;:15;;-1:-1:-1;10000:15:0;;;;;;9949:77;;7416:66;9949:77;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9949:77:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9949:77:0;;;;;9939:88;;;;;;-1:-1:-1;;;9840:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9840:202:0;;;;;;9816:237;;;;;;;;;10091:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9799:14;;-1:-1:-1;10091:26:0;;;;;-1:-1:-1;;10091:26:0;;;;;;;;;;-1:-1:-1;10091:26:0;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10091:26:0;;-1:-1:-1;;10091:26:0;;;-1:-1:-1;;;;;;;10136:30:0;;;;;;:59;;-1:-1:-1;;;;;;10170:25:0;;;;;;;10136:59;10128:102;;;;;-1:-1:-1;;;10128:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10241:31;10250:5;10257:7;10266:5;10241:8;:31::i;:::-;9602:678;;;;;;;;;:::o;7161:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;19267:158::-;11233:8;;11245:1;11233:13;11225:45;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;-1:-1:-1;;;11225:45:0;;;;;;;;;;;;;;;11292:1;11281:8;:12;19323:6;;19316:39;;;-1:-1:-1;;;19316:39:0;;19349:4;19316:39;;;;;;19308:109;;-1:-1:-1;;;;;19323:6:0;;-1:-1:-1;;19316:39:0;;;;;;;;;;;;;;19323:6;19316:39;;;5:2:-1;;;;30:1;27;20:12;5:2;19316:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19316:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19316:39:0;19364:6;;19357:39;;;-1:-1:-1;;;19357:39:0;;19390:4;19357:39;;;;;;-1:-1:-1;;;;;19364:6:0;;;;-1:-1:-1;;19357:39:0;;;;;19316;;19357;;;;;;;;19364:6;19357:39;;;5:2:-1;;;;30:1;27;20:12;5:2;19357:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19357:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19357:39:0;19398:8;;-1:-1:-1;;;;;19398:8:0;;;;-1:-1:-1;;;19408:8:0;;;19308:7;:109::i;:::-;11327:1;11316:8;:12;19267:158::o;11583:289::-;10523:34;;;;;;;;;;;;;;;;;11711:43;;-1:-1:-1;;;;;11711:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11711:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11700:55:0;;;;-1:-1:-1;;11679:17:0;;11700:10;;;11711:43;11700:55;;;25:18:-1;11700:55: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;;;11700:55: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;;11664:91:0;;;;11774:7;:57;;;;-1:-1:-1;11786:11:0;;:16;;:44;;;11817:4;11806:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11806:24:0;11786:44;11766:98;;;;;-1:-1:-1;;;11766:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11583:289;;;;;:::o;22012:142::-;22064:6;22091;;;:30;;-1:-1:-1;;22106:5:0;;;22120:1;22115;22106:5;22115:1;22101:15;;;;;:20;22091:30;22083:63;;;;;-1:-1:-1;;;22083:63:0;;;;;;;;;;;;-1:-1:-1;;;22083:63:0;;;;;;;;;;;;;;21875:129;21959:5;;;21954:16;;;;21946:50;;;;;-1:-1:-1;;;21946:50:0;;;;;;;;;;;;-1:-1:-1;;;21946:50:0;;;;;;;;;;;;;;12753:862;-1:-1:-1;;;;;12865:23:0;;;;;:50;;-1:-1:-1;;;;;;12892:23:0;;;12865:50;12857:84;;;;;-1:-1:-1;;;12857:84:0;;;;;;;;;;;;-1:-1:-1;;;12857:84:0;;;;;;;;;;;;;;;13056:18;;12983:23;:15;:23;;;-1:-1:-1;;;13056:18:0;;;;13039:35;;;13112:15;;;;;;:33;;-1:-1:-1;;;;;;13131:14:0;;;;13112:33;:51;;;;-1:-1:-1;;;;;;13149:14:0;;;;13112:51;13108:336;;;13318:11;13265:64;;13270:44;13304:9;13270:27;13287:9;13270:16;:27::i;:::-;-1:-1:-1;;;;;13270:33:0;;;:44::i;:::-;13241:20;:88;;-1:-1:-1;;;;;13265:50:0;;;;:64;;;;13241:88;;;13368:64;;;13373:44;13407:9;13373:27;13390:9;13373:16;:27::i;:44::-;13344:20;:88;;-1:-1:-1;;;;;13368:50:0;;;;:64;;;;13344:88;;;13108:336;13454:8;:28;;-1:-1:-1;;13454:28:0;-1:-1:-1;;;;;13454:28:0;;;;;;;-1:-1:-1;;;;13493:28:0;-1:-1:-1;;;13493:28:0;;;;;;;;;-1:-1:-1;;;;;13532:35:0;-1:-1:-1;;;13532:35:0;;;;;;;;;13583:24;;;13588:8;;;13583:24;;13598:8;;;;;;;13583:24;;;;;;;;;;;;;;;;;12753:862;;;;;;:::o;8586:169::-;-1:-1:-1;;;;;8667:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;8716:31;;;;;;;;;;;;;;;;;8586:169;;;:::o;8763:220::-;-1:-1:-1;;;;;8857:15:0;;;;;;-1:-1:-1;8857:15:0;;;;;;:26;;8877:5;8857:19;:26::i;:::-;-1:-1:-1;;;;;8839:15:0;;;;;;;-1:-1:-1;8839:15:0;;;;;;:44;;;;8910:13;;;;;;;:24;;8928:5;8910:17;:24::i;:::-;-1:-1:-1;;;;;8894:13:0;;;;;;;-1:-1:-1;8894:13:0;;;;;;;;;:40;;;;8950:25;;;;;;;8894:13;;8950:25;;;;;;;;;;;;;8763:220;;;:::o;22450:303::-;22495:6;22522:1;22518;:5;22514:232;;;-1:-1:-1;22544:1:0;22577;22573;22569:5;;:9;22593:92;22604:1;22600;:5;22593:92;;;22630:1;22626:5;;22668:1;22663;22659;22655;:5;;;;;;:9;22654:15;;;;;;22650:19;;22593:92;;;22514:232;;;;22706:6;;22702:44;;-1:-1:-1;22733:1:0;22702:44;22450:303;;;:::o;8160:201::-;8233:11;;:22;;8249:5;8233:22;:15;:22;:::i;:::-;8219:11;:36;;;-1:-1:-1;;;;;8282:13:0;;;;-1:-1:-1;8282:13:0;;;;;;:24;;8300:5;8282:17;:24::i;:::-;-1:-1:-1;;;;;8266:13:0;;;;;;-1:-1:-1;8266:13:0;;;;;;;;:40;;;;8322:31;;;;;;;8266:13;;;;8322:31;;;;;;;;;;8160:201;;:::o;22236:96::-;22288:6;22315:1;22311;:5;:13;;22323:1;22311:13;;;22319:1;22311:13;22307:17;22236:96;-1:-1:-1;;;22236:96:0:o;8369:209::-;-1:-1:-1;;;;;8448:15:0;;;;;;-1:-1:-1;8448:15:0;;;;;;:26;;8468:5;8448:19;:26::i;:::-;-1:-1:-1;;;;;8430:15:0;;;;;;-1:-1:-1;8430:15:0;;;;;:44;;;;8499:11;:22;;8515:5;8499:15;:22::i;:::-;8485:11;:36;;;8537:33;;;;;;;;-1:-1:-1;;;;;8537:33:0;;;;;;;;;;;;;8369:209;;:::o;23026:120::-;-1:-1:-1;;;;;23102:10:0;-1:-1:-1;;;23102:17:0;;23026:120::o;23217:108::-;23277:9;-1:-1:-1;;;;;23307:10:0;;-1:-1:-1;;;;;23303:14:0;;23307:10;23303:14;;;;;;23217:108;-1:-1:-1;;;23217:108:0:o;21739:128::-;21823:5;;;21818:16;;;;21810:49;;;;;-1:-1:-1;;;21810:49:0;;;;;;;;;;;;-1:-1:-1;;;21810:49:0;;;;;;;;;;;;;
Swarm Source
bzzr://c67db33ec81d8f4e8f5ca1eb8c37203135eba8f4eb0efb19b3869fb7822a29b5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $3,291.15 | 0.3057 | $1,006.16 |
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.