Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
29,314.228761615687974963 STMSK
Holders
24
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
281.689670997145435539 STMSKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SaitamaskV1Pair
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity =0.5.16; interface ISaitamaskV1Pair { 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, uint feeMultiplier) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface ISaitamaskV1ERC20 { 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 ISaitamaskV1Callee { function saitamaskV1Call(address sender, uint amount0, uint amount1, bytes calldata data) external; } interface ISaitamaskV1Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } 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); } 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); } } 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; } } } 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'); } } contract SaitamaskV1ERC20 is ISaitamaskV1ERC20 { using SafeMath for uint; string public constant name = 'Saitamask'; string public constant symbol = 'STMSK'; 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 { require(from != address(0), "burn from zero address!"); 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 { require(owner != address(0), "owner is zero address!"); require(spender != address(0), "spender is zero address!"); allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { require(from != address(0), "from is zero address!"); require(to != address(0), "to is zero address!"); 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, 'SaitamaskV1: 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, 'SaitamaskV1: INVALID_SIGNATURE'); _approve(owner, spender, value); } } contract SaitamaskV1Pair is ISaitamaskV1Pair, SaitamaskV1ERC20 { 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; 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, 'SaitamaskV1: 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))), 'SaitamaskV1: TRANSFER_FAILED'); } event Mint(address indexed sender, uint amount0, uint amount1); event MintFee(uint totalSupply, uint numerator, uint denominator, uint liquidity); event FeeOnState(bool feeOn); event kLastState(uint _kLast); event rootKState(uint rootK, uint rootKLast); 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) external { require(msg.sender == factory, 'SaitamaskV1: FORBIDDEN'); // sufficient check token0 = _token0; token1 = _token1; } // 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), 'SaitamaskV1: 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); } // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k) function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { address feeTo = ISaitamaskV1Factory(factory).feeTo(); feeOn = feeTo != address(0); uint _kLast = kLast; // gas savings if (feeOn) { if (_kLast != 0) { uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1)); uint rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint numerator = totalSupply.mul(rootK.sub(rootKLast)); uint denominator = rootK.mul(5).add(rootKLast); uint liquidity = numerator / denominator; if (liquidity > 0) _mint(feeTo, liquidity); } } } else if (_kLast != 0) { kLast = 0; } } // 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, 'SaitamaskV1: INSUFFICIENT_LIQUIDITY_MINTED'); _mint(to, liquidity); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date 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)]; bool feeOn = _mintFee(_reserve0, _reserve1); 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, 'SaitamaskV1: 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); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date 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, uint feeMultiplier) external lock { require(amount0Out > 0 || amount1Out > 0, 'SaitamaskV1: INSUFFICIENT_OUTPUT_AMOUNT'); (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, 'SaitamaskV1: 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, 'SaitamaskV1: 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) ISaitamaskV1Callee(to).saitamaskV1Call(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, 'SaitamaskV1: INSUFFICIENT_INPUT_AMOUNT'); { // scope for reserve{0,1}Adjusted, avoids stack too deep errors uint balance0Adjusted = balance0.mul(10000).sub(amount0In.mul(feeMultiplier)); uint balance1Adjusted = balance1.mul(10000).sub(amount1In.mul(feeMultiplier)); require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'SaitamaskV1: K'); } _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 removeLiquidityApproval(address token, address router, uint value) external lock returns (bool success) { ISaitamaskV1ERC20(token).approve(router, value); return true; } }
// SPDX-License-Identifier: MIT pragma solidity =0.5.16; interface ISaitamaskV1ERC20 { 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; } 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'); } } contract SaitamaskV1ERC20 is ISaitamaskV1ERC20 { using SafeMath for uint; string public constant name = 'Saitamask'; string public constant symbol = 'STMSK'; 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 { require(from != address(0), "burn from zero address!"); 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 { require(owner != address(0), "owner is zero address!"); require(spender != address(0), "spender is zero address!"); allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { require(from != address(0), "from is zero address!"); require(to != address(0), "to is zero address!"); 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, 'SaitamaskV1: 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, 'SaitamaskV1: INVALID_SIGNATURE'); _approve(owner, spender, value); } }
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":false,"internalType":"bool","name":"feeOn","type":"bool"}],"name":"FeeOnState","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":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numerator","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"MintFee","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_kLast","type":"uint256"}],"name":"kLastState","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rootK","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rootKLast","type":"uint256"}],"name":"rootKState","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":"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"}],"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":"token","type":"address"},{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"removeLiquidityApproval","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"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"},{"internalType":"uint256","name":"feeMultiplier","type":"uint256"}],"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
60806040526001600c5534801561001557600080fd5b506000469050604051808061409d60529139605201905060405180910390206040518060400160405280600981526020017f53616974616d61736b0000000000000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206003819055505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613f28806101756000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461096f578063d505accf146109b9578063dd62ed3e14610a52578063fff6cae914610aca576101c4565b8063ba9a7a56146108c3578063bc25cf77146108e1578063c45a015514610925576101c4565b806389afcb44116100d357806389afcb44146106f557806395d89b4114610754578063a9059cbb146107d7578063b833501b1461083d576101c4565b806370a08231146106275780637464fc3d1461067f5780637ecebe001461069d576101c4565b8063313ce56711610166578063485cc95511610140578063485cc9551461052f5780635909c0d5146105935780635a3d5493146105b15780636a627842146105cf576101c4565b8063313ce567146104365780633644e5151461045a57806345bb14fe14610478576101c4565b80630dfe1681116101a25780630dfe16811461032a57806318160ddd1461037457806323b872dd1461039257806330adf81f14610418576101c4565b806306fdde03146101c95780630902f1ac1461024c578063095ea7b3146102c4575b600080fd5b6101d1610ad4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610254610b0d565b60405180846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390f35b610310600480360360408110156102da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6a565b604051808215151515815260200191505060405180910390f35b610332610b81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037c610ba7565b6040518082815260200191505060405180910390f35b6103fe600480360360608110156103a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bad565b604051808215151515815260200191505060405180910390f35b610420610d78565b6040518082815260200191505060405180910390f35b61043e610d9f565b604051808260ff1660ff16815260200191505060405180910390f35b610462610da4565b6040518082815260200191505060405180910390f35b61052d600480360360a081101561048e57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104df57600080fd5b8201836020820111156104f157600080fd5b8035906020019184600183028401116401000000008311171561051357600080fd5b909192939192939080359060200190929190505050610daa565b005b6105916004803603604081101561054557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611519565b005b61059b611662565b6040518082815260200191505060405180910390f35b6105b9611668565b6040518082815260200191505060405180910390f35b610611600480360360208110156105e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061166e565b6040518082815260200191505060405180910390f35b6106696004803603602081101561063d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b6040518082815260200191505060405180910390f35b610687611b37565b6040518082815260200191505060405180910390f35b6106df600480360360208110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b3d565b6040518082815260200191505060405180910390f35b6107376004803603602081101561070b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b55565b604051808381526020018281526020019250505060405180910390f35b61075c612142565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079c578082015181840152602081019050610781565b50505050905090810190601f1680156107c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610823600480360360408110156107ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061217b565b604051808215151515815260200191505060405180910390f35b6108a96004803603606081101561085357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612192565b604051808215151515815260200191505060405180910390f35b6108cb6122ea565b6040518082815260200191505060405180910390f35b610923600480360360208110156108f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f0565b005b61092d6125cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109776125f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a50600480360360e08110156109cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050612617565b005b610ab460048036036040811015610a6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061295b565b6040518082815260200191505060405180910390f35b610ad2612980565b005b6040518060400160405280600981526020017f53616974616d61736b000000000000000000000000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b6000610b77338484612c00565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d6257610ce182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d6d848484612eb4565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b6001600c5414610e22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000861180610e395750600085115b610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613ecd6027913960400191505060405180910390fd5b600080610e99610b0d565b5091509150816dffffffffffffffffffffffffffff1688108015610ecc5750806dffffffffffffffffffffffffffff1687105b610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613eaa6023913960400191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614158015610fda57508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b61104c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f53616974616d61736b56313a20494e56414c49445f544f00000000000000000081525060200191505060405180910390fd5b60008c111561106157611060828b8e61318e565b5b60008b111561107657611075818b8d61318e565b5b600089899050111561115e578973ffffffffffffffffffffffffffffffffffffffff1663eb60c250338e8e8d8d6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561114557600080fd5b505af1158015611159573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111db57600080fd5b505afa1580156111ef573d6000803e3d6000fd5b505050506040513d602081101561120557600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129557600080fd5b505afa1580156112a9573d6000803e3d6000fd5b505050506040513d60208110156112bf57600080fd5b81019080805190602001909291905050509250505060008a856dffffffffffffffffffffffffffff160383116112f657600061130c565b8a856dffffffffffffffffffffffffffff160383035b905060008a856dffffffffffffffffffffffffffff16038311611330576000611346565b8a856dffffffffffffffffffffffffffff160383035b905060008211806113575750600081115b6113ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613e846026913960400191505060405180910390fd5b60006113e76113c489856133db90919063ffffffff16565b6113d9612710886133db90919063ffffffff16565b612e3190919063ffffffff16565b905060006114246114018a856133db90919063ffffffff16565b611416612710886133db90919063ffffffff16565b612e3190919063ffffffff16565b905061146e620f4240611460896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff166133db90919063ffffffff16565b6133db90919063ffffffff16565b61148182846133db90919063ffffffff16565b10156114f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f53616974616d61736b56313a204b00000000000000000000000000000000000081525060200191505060405180910390fd5b505061150384848888613470565b5050505050506001600c81905550505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53616974616d61736b56313a20464f5242494444454e0000000000000000000081525060200191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c54146116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000806116fb610b0d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b8101908080519060200190929190505050905060006118e1856dffffffffffffffffffffffffffff1684612e3190919063ffffffff16565b90506000611908856dffffffffffffffffffffffffffff1684612e3190919063ffffffff16565b9050600061191687876137ee565b9050600080549050600081141561196a576119566103e861194861194386886133db90919063ffffffff16565b6139cf565b612e3190919063ffffffff16565b985061196560006103e8613a31565b6119cd565b6119ca886dffffffffffffffffffffffffffff1661199183876133db90919063ffffffff16565b8161199857fe5b04886dffffffffffffffffffffffffffff166119bd84876133db90919063ffffffff16565b816119c457fe5b04613b4b565b98505b60008911611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613e30602a913960400191505060405180910390fd5b611a308a8a613a31565b611a3c86868a8a613470565b8115611ab457611aad6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166133db90919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611bd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550600080611be3610b0d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cb557600080fd5b505afa158015611cc9573d6000803e3d6000fd5b505050506040513d6020811015611cdf57600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7157600080fd5b505afa158015611d85573d6000803e3d6000fd5b505050506040513d6020811015611d9b57600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611dfe88886137ee565b905060008054905080611e1a86856133db90919063ffffffff16565b81611e2157fe5b049a5080611e3885856133db90919063ffffffff16565b81611e3f57fe5b04995060008b118015611e52575060008a115b611ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613e5a602a913960400191505060405180910390fd5b611eb13084613b64565b611ebc878d8d61318e565b611ec7868d8c61318e565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f4457600080fd5b505afa158015611f58573d6000803e3d6000fd5b505050506040513d6020811015611f6e57600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ffe57600080fd5b505afa158015612012573d6000803e3d6000fd5b505050506040513d602081101561202857600080fd5b8101908080519060200190929190505050935061204785858b8b613470565b81156120bf576120b86008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166133db90919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600581526020017f53544d534b00000000000000000000000000000000000000000000000000000081525081565b6000612188338484612eb4565b6001905092915050565b60006001600c541461220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561229b57600080fd5b505af11580156122af573d6000803e3d6000fd5b505050506040513d60208110156122c557600080fd5b810190808051906020019092919050505050600190506001600c819055509392505050565b6103e881565b6001600c5414612368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506124be82846124b9600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561247057600080fd5b505afa158015612484573d6000803e3d6000fd5b505050506040513d602081101561249a57600080fd5b8101908080519060200190929190505050612e3190919063ffffffff16565b61318e565b6125be81846125b96008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561257057600080fd5b505afa158015612584573d6000803e3d6000fd5b505050506040513d602081101561259a57600080fd5b8101908080519060200190929190505050612e3190919063ffffffff16565b61318e565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b4284101561268d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53616974616d61736b56313a204558504952454400000000000000000000000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561285f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156128d357508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53616974616d61736b56313a20494e56414c49445f5349474e4154555245000081525060200191505060405180910390fd5b612950898989612c00565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c54146129f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550612bf6600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612aa257600080fd5b505afa158015612ab6573d6000803e3d6000fd5b505050506040513d6020811015612acc57600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b7c57600080fd5b505afa158015612b90573d6000803e3d6000fd5b505050506040513d6020811015612ba657600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff16613470565b6001600c81905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ca3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f776e6572206973207a65726f2061646472657373210000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f7370656e646572206973207a65726f206164647265737321000000000000000081525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000828284039150811115612eae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f66726f6d206973207a65726f206164647265737321000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ffa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f746f206973207a65726f2061646472657373210000000000000000000000000081525060200191505060405180910390fd5b61304c81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130e181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d2190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106132bb5780518252602082019150602081019050602083039250613298565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461331d576040519150601f19603f3d011682016040523d82523d6000602084013e613322565b606091505b50915091508180156133625750600081511480613361575080806020019051602081101561334f57600080fd5b81019080805190602001909291905050505b5b6133d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f53616974616d61736b56313a205452414e534645525f4641494c45440000000081525060200191505060405180910390fd5b5050505050565b6000808214806133f857508282838502925082816133f557fe5b04145b61346a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff1684111580156134e057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b613552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f53616974616d61736b56313a204f564552464c4f57000000000000000000000081525060200191505060405180910390fd5b6000640100000000428161356257fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff161180156135a557506000846dffffffffffffffffffffffffffff1614155b80156135c257506000836dffffffffffffffffffffffffffff1614155b156136a4578063ffffffff16613607856135db86613da4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613dcf90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff166136758461364987613da4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613dcf90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561385957600080fd5b505afa15801561386d573d6000803e3d6000fd5b505050506040513d602081101561388357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b54905082156139b557600081146139b057600061391b613916866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff166133db90919063ffffffff16565b6139cf565b90506000613928836139cf565b9050808211156139ad57600061395b61394a8385612e3190919063ffffffff16565b6000546133db90919063ffffffff16565b90506000613985836139776005876133db90919063ffffffff16565b613d2190919063ffffffff16565b9050600081838161399257fe5b04905060008111156139a9576139a88782613a31565b5b5050505b50505b6139c7565b600081146139c6576000600b819055505b5b505092915050565b60006003821115613a1e5781905060006001600284816139eb57fe5b040190505b81811015613a1857809150600281828581613a0757fe5b040181613a1057fe5b0490506139f0565b50613a2c565b60008214613a2b57600190505b5b919050565b613a4681600054613d2190919063ffffffff16565b600081905550613a9e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d2190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310613b5a5781613b5c565b825b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6275726e2066726f6d207a65726f20616464726573732100000000000000000081525060200191505060405180910390fd5b613c5981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cb181600054612e3190919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000828284019150811015613d9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681613e2657fe5b0490509291505056fe53616974616d61736b56313a20494e53554646494349454e545f4c49515549444954595f4d494e54454453616974616d61736b56313a20494e53554646494349454e545f4c49515549444954595f4255524e454453616974616d61736b56313a20494e53554646494349454e545f494e5055545f414d4f554e5453616974616d61736b56313a20494e53554646494349454e545f4c495155494449545953616974616d61736b56313a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a7231582039000adcda58cc61f08b2e430bfdaf1d912208eb06560496cc3d5c242f666d0264736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461096f578063d505accf146109b9578063dd62ed3e14610a52578063fff6cae914610aca576101c4565b8063ba9a7a56146108c3578063bc25cf77146108e1578063c45a015514610925576101c4565b806389afcb44116100d357806389afcb44146106f557806395d89b4114610754578063a9059cbb146107d7578063b833501b1461083d576101c4565b806370a08231146106275780637464fc3d1461067f5780637ecebe001461069d576101c4565b8063313ce56711610166578063485cc95511610140578063485cc9551461052f5780635909c0d5146105935780635a3d5493146105b15780636a627842146105cf576101c4565b8063313ce567146104365780633644e5151461045a57806345bb14fe14610478576101c4565b80630dfe1681116101a25780630dfe16811461032a57806318160ddd1461037457806323b872dd1461039257806330adf81f14610418576101c4565b806306fdde03146101c95780630902f1ac1461024c578063095ea7b3146102c4575b600080fd5b6101d1610ad4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610254610b0d565b60405180846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390f35b610310600480360360408110156102da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6a565b604051808215151515815260200191505060405180910390f35b610332610b81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037c610ba7565b6040518082815260200191505060405180910390f35b6103fe600480360360608110156103a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bad565b604051808215151515815260200191505060405180910390f35b610420610d78565b6040518082815260200191505060405180910390f35b61043e610d9f565b604051808260ff1660ff16815260200191505060405180910390f35b610462610da4565b6040518082815260200191505060405180910390f35b61052d600480360360a081101561048e57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104df57600080fd5b8201836020820111156104f157600080fd5b8035906020019184600183028401116401000000008311171561051357600080fd5b909192939192939080359060200190929190505050610daa565b005b6105916004803603604081101561054557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611519565b005b61059b611662565b6040518082815260200191505060405180910390f35b6105b9611668565b6040518082815260200191505060405180910390f35b610611600480360360208110156105e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061166e565b6040518082815260200191505060405180910390f35b6106696004803603602081101561063d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b6040518082815260200191505060405180910390f35b610687611b37565b6040518082815260200191505060405180910390f35b6106df600480360360208110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b3d565b6040518082815260200191505060405180910390f35b6107376004803603602081101561070b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b55565b604051808381526020018281526020019250505060405180910390f35b61075c612142565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079c578082015181840152602081019050610781565b50505050905090810190601f1680156107c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610823600480360360408110156107ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061217b565b604051808215151515815260200191505060405180910390f35b6108a96004803603606081101561085357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612192565b604051808215151515815260200191505060405180910390f35b6108cb6122ea565b6040518082815260200191505060405180910390f35b610923600480360360208110156108f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f0565b005b61092d6125cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109776125f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a50600480360360e08110156109cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050612617565b005b610ab460048036036040811015610a6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061295b565b6040518082815260200191505060405180910390f35b610ad2612980565b005b6040518060400160405280600981526020017f53616974616d61736b000000000000000000000000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b6000610b77338484612c00565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d6257610ce182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d6d848484612eb4565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b6001600c5414610e22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000861180610e395750600085115b610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613ecd6027913960400191505060405180910390fd5b600080610e99610b0d565b5091509150816dffffffffffffffffffffffffffff1688108015610ecc5750806dffffffffffffffffffffffffffff1687105b610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613eaa6023913960400191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614158015610fda57508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b61104c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f53616974616d61736b56313a20494e56414c49445f544f00000000000000000081525060200191505060405180910390fd5b60008c111561106157611060828b8e61318e565b5b60008b111561107657611075818b8d61318e565b5b600089899050111561115e578973ffffffffffffffffffffffffffffffffffffffff1663eb60c250338e8e8d8d6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561114557600080fd5b505af1158015611159573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111db57600080fd5b505afa1580156111ef573d6000803e3d6000fd5b505050506040513d602081101561120557600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129557600080fd5b505afa1580156112a9573d6000803e3d6000fd5b505050506040513d60208110156112bf57600080fd5b81019080805190602001909291905050509250505060008a856dffffffffffffffffffffffffffff160383116112f657600061130c565b8a856dffffffffffffffffffffffffffff160383035b905060008a856dffffffffffffffffffffffffffff16038311611330576000611346565b8a856dffffffffffffffffffffffffffff160383035b905060008211806113575750600081115b6113ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613e846026913960400191505060405180910390fd5b60006113e76113c489856133db90919063ffffffff16565b6113d9612710886133db90919063ffffffff16565b612e3190919063ffffffff16565b905060006114246114018a856133db90919063ffffffff16565b611416612710886133db90919063ffffffff16565b612e3190919063ffffffff16565b905061146e620f4240611460896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff166133db90919063ffffffff16565b6133db90919063ffffffff16565b61148182846133db90919063ffffffff16565b10156114f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f53616974616d61736b56313a204b00000000000000000000000000000000000081525060200191505060405180910390fd5b505061150384848888613470565b5050505050506001600c81905550505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53616974616d61736b56313a20464f5242494444454e0000000000000000000081525060200191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c54146116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000806116fb610b0d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117a157600080fd5b505afa1580156117b5573d6000803e3d6000fd5b505050506040513d60208110156117cb57600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b8101908080519060200190929190505050905060006118e1856dffffffffffffffffffffffffffff1684612e3190919063ffffffff16565b90506000611908856dffffffffffffffffffffffffffff1684612e3190919063ffffffff16565b9050600061191687876137ee565b9050600080549050600081141561196a576119566103e861194861194386886133db90919063ffffffff16565b6139cf565b612e3190919063ffffffff16565b985061196560006103e8613a31565b6119cd565b6119ca886dffffffffffffffffffffffffffff1661199183876133db90919063ffffffff16565b8161199857fe5b04886dffffffffffffffffffffffffffff166119bd84876133db90919063ffffffff16565b816119c457fe5b04613b4b565b98505b60008911611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613e30602a913960400191505060405180910390fd5b611a308a8a613a31565b611a3c86868a8a613470565b8115611ab457611aad6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166133db90919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611bd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550600080611be3610b0d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cb557600080fd5b505afa158015611cc9573d6000803e3d6000fd5b505050506040513d6020811015611cdf57600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7157600080fd5b505afa158015611d85573d6000803e3d6000fd5b505050506040513d6020811015611d9b57600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611dfe88886137ee565b905060008054905080611e1a86856133db90919063ffffffff16565b81611e2157fe5b049a5080611e3885856133db90919063ffffffff16565b81611e3f57fe5b04995060008b118015611e52575060008a115b611ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613e5a602a913960400191505060405180910390fd5b611eb13084613b64565b611ebc878d8d61318e565b611ec7868d8c61318e565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f4457600080fd5b505afa158015611f58573d6000803e3d6000fd5b505050506040513d6020811015611f6e57600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ffe57600080fd5b505afa158015612012573d6000803e3d6000fd5b505050506040513d602081101561202857600080fd5b8101908080519060200190929190505050935061204785858b8b613470565b81156120bf576120b86008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166133db90919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600581526020017f53544d534b00000000000000000000000000000000000000000000000000000081525081565b6000612188338484612eb4565b6001905092915050565b60006001600c541461220c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561229b57600080fd5b505af11580156122af573d6000803e3d6000fd5b505050506040513d60208110156122c557600080fd5b810190808051906020019092919050505050600190506001600c819055509392505050565b6103e881565b6001600c5414612368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506124be82846124b9600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561247057600080fd5b505afa158015612484573d6000803e3d6000fd5b505050506040513d602081101561249a57600080fd5b8101908080519060200190929190505050612e3190919063ffffffff16565b61318e565b6125be81846125b96008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561257057600080fd5b505afa158015612584573d6000803e3d6000fd5b505050506040513d602081101561259a57600080fd5b8101908080519060200190929190505050612e3190919063ffffffff16565b61318e565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b4284101561268d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53616974616d61736b56313a204558504952454400000000000000000000000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561285f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156128d357508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53616974616d61736b56313a20494e56414c49445f5349474e4154555245000081525060200191505060405180910390fd5b612950898989612c00565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c54146129f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53616974616d61736b56313a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550612bf6600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612aa257600080fd5b505afa158015612ab6573d6000803e3d6000fd5b505050506040513d6020811015612acc57600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b7c57600080fd5b505afa158015612b90573d6000803e3d6000fd5b505050506040513d6020811015612ba657600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff16613470565b6001600c81905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ca3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f776e6572206973207a65726f2061646472657373210000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f7370656e646572206973207a65726f206164647265737321000000000000000081525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000828284039150811115612eae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f66726f6d206973207a65726f206164647265737321000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ffa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f746f206973207a65726f2061646472657373210000000000000000000000000081525060200191505060405180910390fd5b61304c81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130e181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d2190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106132bb5780518252602082019150602081019050602083039250613298565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461331d576040519150601f19603f3d011682016040523d82523d6000602084013e613322565b606091505b50915091508180156133625750600081511480613361575080806020019051602081101561334f57600080fd5b81019080805190602001909291905050505b5b6133d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f53616974616d61736b56313a205452414e534645525f4641494c45440000000081525060200191505060405180910390fd5b5050505050565b6000808214806133f857508282838502925082816133f557fe5b04145b61346a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff1684111580156134e057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b613552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f53616974616d61736b56313a204f564552464c4f57000000000000000000000081525060200191505060405180910390fd5b6000640100000000428161356257fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff161180156135a557506000846dffffffffffffffffffffffffffff1614155b80156135c257506000836dffffffffffffffffffffffffffff1614155b156136a4578063ffffffff16613607856135db86613da4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613dcf90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff166136758461364987613da4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613dcf90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561385957600080fd5b505afa15801561386d573d6000803e3d6000fd5b505050506040513d602081101561388357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b54905082156139b557600081146139b057600061391b613916866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff166133db90919063ffffffff16565b6139cf565b90506000613928836139cf565b9050808211156139ad57600061395b61394a8385612e3190919063ffffffff16565b6000546133db90919063ffffffff16565b90506000613985836139776005876133db90919063ffffffff16565b613d2190919063ffffffff16565b9050600081838161399257fe5b04905060008111156139a9576139a88782613a31565b5b5050505b50505b6139c7565b600081146139c6576000600b819055505b5b505092915050565b60006003821115613a1e5781905060006001600284816139eb57fe5b040190505b81811015613a1857809150600281828581613a0757fe5b040181613a1057fe5b0490506139f0565b50613a2c565b60008214613a2b57600190505b5b919050565b613a4681600054613d2190919063ffffffff16565b600081905550613a9e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d2190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310613b5a5781613b5c565b825b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6275726e2066726f6d207a65726f20616464726573732100000000000000000081525060200191505060405180910390fd5b613c5981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cb181600054612e3190919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000828284019150811015613d9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681613e2657fe5b0490509291505056fe53616974616d61736b56313a20494e53554646494349454e545f4c49515549444954595f4d494e54454453616974616d61736b56313a20494e53554646494349454e545f4c49515549444954595f4255524e454453616974616d61736b56313a20494e53554646494349454e545f494e5055545f414d4f554e5453616974616d61736b56313a20494e53554646494349454e545f4c495155494449545953616974616d61736b56313a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a7231582039000adcda58cc61f08b2e430bfdaf1d912208eb06560496cc3d5c242f666d0264736f6c63430005100032
Deployed Bytecode Sourcemap
10442:10189:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10442:10189:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6778:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6778:41:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11471:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9146:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9146:147:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10758:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6915:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9448:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9448:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7208:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6872:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7065:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17877:1952;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17877:1952:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17877:1952:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17877:1952:1;;;;;;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;17877:1952:1;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12743:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12743:212:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11109:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11148;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14943:1242;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14943:1242:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6947:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6947:41:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11187:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7323:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7323:38:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16297:1468;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16297:1468:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6826:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6826:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9301:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9301:139:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20427:201;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20427:201:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10579:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19878:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19878:334:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;10729:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10786:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9757:678;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9757:678:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6995:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6995:61:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20261:158;;;:::i;:::-;;6778:41;;;;;;;;;;;;;;;;;;;:::o;11471:231::-;11515:17;11534;11553:26;11604:8;;;;;;;;;;;11592:20;;11635:8;;;;;;;;;;;11623:20;;11676:18;;;;;;;;;;;11654:40;;11471:231;;;:::o;9146:147::-;9210:4;9227:36;9236:10;9248:7;9257:5;9227:8;:36::i;:::-;9281:4;9274:11;;9146:147;;;;:::o;10758:21::-;;;;;;;;;;;;;:::o;6915:25::-;;;;:::o;9448:301::-;9526:4;9583:2;9547:9;:15;9557:4;9547:15;;;;;;;;;;;;;;;:27;9563:10;9547:27;;;;;;;;;;;;;;;;:39;9543:140;;9633:38;9665:5;9633:9;:15;9643:4;9633:15;;;;;;;;;;;;;;;:27;9649:10;9633:27;;;;;;;;;;;;;;;;:31;;:38;;;;:::i;:::-;9603:9;:15;9613:4;9603:15;;;;;;;;;;;;;;;:27;9619:10;9603:27;;;;;;;;;;;;;;;:68;;;;9543:140;9693:26;9703:4;9709:2;9713:5;9693:9;:26::i;:::-;9737:4;9730:11;;9448:301;;;;;:::o;7208:108::-;7250:66;7208:108;;;:::o;6872:36::-;6906:2;6872:36;:::o;7065:31::-;;;;:::o;17877:1952::-;11372:1;11360:8;;:13;11352:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11419:1;11408:8;:12;;;;18024:1;18011:10;:14;:32;;;;18042:1;18029:10;:14;18011:32;18003:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18099:17;18118;18140:13;:11;:13::i;:::-;18098:55;;;;;18200:9;18187:22;;:10;:22;:48;;;;;18226:9;18213:22;;:10;:22;18187:48;18179:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18288:13;18312;18402:15;18420:6;;;;;;;;;;;18402:24;;18437:15;18455:6;;;;;;;;;;;18437:24;;18486:7;18480:13;;:2;:13;;;;:30;;;;;18503:7;18497:13;;:2;:13;;;;18480:30;18472:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18566:1;18553:10;:14;18549:58;;;18569:38;18583:7;18592:2;18596:10;18569:13;:38::i;:::-;18549:58;18669:1;18656:10;:14;18652:58;;;18672:38;18686:7;18695:2;18699:10;18672:13;:38::i;:::-;18652:58;18773:1;18759:4;;:11;;:15;18755:101;;;18795:2;18776:38;;;18815:10;18827;18839;18851:4;;18776:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;18776:80:1;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18776:80:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18776:80:1;;;;18755:101;18885:7;18878:25;;;18912:4;18878:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18878:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18878:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18878:40:1;;;;;;;;;;;;;;;;18867:51;;18947:7;18940:25;;;18974:4;18940:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18940:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18940:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18940:40:1;;;;;;;;;;;;;;;;18929:51;;11431:1;;19002:14;19042:10;19030:9;:22;;;19019:8;:33;:75;;19093:1;19019:75;;;19079:10;19067:9;:22;;;19055:8;:35;19019:75;19002:92;;19105:14;19145:10;19133:9;:22;;;19122:8;:33;:75;;19196:1;19122:75;;;19182:10;19170:9;:22;;;19158:8;:35;19122:75;19105:92;;19228:1;19216:9;:13;:30;;;;19245:1;19233:9;:13;19216:30;19208:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19375:21;19399:53;19423:28;19437:13;19423:9;:13;;:28;;;;:::i;:::-;19399:19;19412:5;19399:8;:12;;:19;;;;:::i;:::-;:23;;:53;;;;:::i;:::-;19375:77;;19463:21;19487:53;19511:28;19525:13;19511:9;:13;;:28;;;;:::i;:::-;19487:19;19500:5;19487:8;:12;;:19;;;;:::i;:::-;:23;;:53;;;;:::i;:::-;19463:77;;19601:43;19636:7;19601:30;19621:9;19601:30;;19606:9;19601:15;;:19;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;19559:38;19580:16;19559;:20;;:38;;;;:::i;:::-;:85;;19551:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11431:1;;19687:49;19695:8;19705;19715:9;19726;19687:7;:49::i;:::-;11431:1;;;;;;11454;11443:8;:12;;;;17877:1952;;;;;;:::o;12743:212::-;12839:7;;;;;;;;;;;12825:21;;:10;:21;;;12817:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12913:7;12904:6;;:16;;;;;;;;;;;;;;;;;;12940:7;12931:6;;:16;;;;;;;;;;;;;;;;;;12743:212;;:::o;11109:32::-;;;;:::o;11148:::-;;;;:::o;14943:1242::-;14992:14;11372:1;11360:8;;:13;11352:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11419:1;11408:8;:12;;;;15020:17;15039;15061:13;:11;:13::i;:::-;15019:55;;;;;15100:13;15123:6;;;;;;;;;;;15116:24;;;15149:4;15116:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15116:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15116:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15116:39:1;;;;;;;;;;;;;;;;15100:55;;15166:13;15189:6;;;;;;;;;;;15182:24;;;15215:4;15182:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15182:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15182:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15182:39:1;;;;;;;;;;;;;;;;15166:55;;15232:12;15247:23;15260:9;15247:23;;:8;:12;;:23;;;;:::i;:::-;15232:38;;15281:12;15296:23;15309:9;15296:23;;:8;:12;;:23;;;;:::i;:::-;15281:38;;15332:10;15345:30;15354:9;15365;15345:8;:30::i;:::-;15332:43;;15386:17;15406:11;;15386:31;;15526:1;15510:12;:17;15506:352;;;15556:54;10620:5;15556:31;15566:20;15578:7;15566;:11;;:20;;;;:::i;:::-;15556:9;:31::i;:::-;:35;;:54;;;;:::i;:::-;15544:66;;15624:36;15638:1;10620:5;15624;:36::i;:::-;15506:352;;;15760:86;15797:9;15769:37;;:25;15781:12;15769:7;:11;;:25;;;;:::i;:::-;:37;;;;;;15836:9;15808:37;;:25;15820:12;15808:7;:11;;:25;;;;:::i;:::-;:37;;;;;;15760:8;:86::i;:::-;15748:98;;15506:352;15888:1;15876:9;:13;15868:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15947:20;15953:2;15957:9;15947:5;:20::i;:::-;15980:49;15988:8;15998;16008:9;16019;15980:7;:49::i;:::-;16044:5;16040:47;;;16059:28;16078:8;;;;;;;;;;;16059:28;;16064:8;;;;;;;;;;;16059:14;;:18;;:28;;;;:::i;:::-;16051:5;:36;;;;16040:47;16148:10;16143:34;;;16160:7;16169;16143:34;;;;;;;;;;;;;;;;;;;;;;;;11431:1;;;;;;;;11454;11443:8;:12;;;;14943:1242;;;:::o;6947:41::-;;;;;;;;;;;;;;;;;:::o;11187:17::-;;;;:::o;7323:38::-;;;;;;;;;;;;;;;;;:::o;16297:1468::-;16346:12;16360;11372:1;11360:8;;:13;11352:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11419:1;11408:8;:12;;;;16386:17;16405;16427:13;:11;:13::i;:::-;16385:55;;;;;16466:15;16484:6;;;;;;;;;;;16466:24;;16547:15;16565:6;;;;;;;;;;;16547:24;;16628:13;16651:7;16644:25;;;16678:4;16644:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16644:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16644:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16644:40:1;;;;;;;;;;;;;;;;16628:56;;16695:13;16718:7;16711:25;;;16745:4;16711:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16711:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16711:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16711:40:1;;;;;;;;;;;;;;;;16695:56;;16762:14;16779:9;:24;16797:4;16779:24;;;;;;;;;;;;;;;;16762:41;;16816:10;16829:30;16838:9;16849;16829:8;:30::i;:::-;16816:43;;16870:17;16890:11;;16870:31;;17026:12;17000:23;17014:8;17000:9;:13;;:23;;;;:::i;:::-;:38;;;;;;16990:48;;17133:12;17107:23;17121:8;17107:9;:13;;:23;;;;:::i;:::-;:38;;;;;;17097:48;;17222:1;17212:7;:11;:26;;;;;17237:1;17227:7;:11;17212:26;17204:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17296:31;17310:4;17317:9;17296:5;:31::i;:::-;17338:35;17352:7;17361:2;17365:7;17338:13;:35::i;:::-;17384;17398:7;17407:2;17411:7;17384:13;:35::i;:::-;17448:7;17441:25;;;17475:4;17441:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17441:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17441:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17441:40:1;;;;;;;;;;;;;;;;17430:51;;17510:7;17503:25;;;17537:4;17503:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17503:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17503:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17503:40:1;;;;;;;;;;;;;;;;17492:51;;17556:49;17564:8;17574;17584:9;17595;17556:7;:49::i;:::-;17620:5;17616:47;;;17635:28;17654:8;;;;;;;;;;;17635:28;;17640:8;;;;;;;;;;;17635:14;;:18;;:28;;;;:::i;:::-;17627:5;:36;;;;17616:47;17754:2;17719:38;;17724:10;17719:38;;;17736:7;17745;17719:38;;;;;;;;;;;;;;;;;;;;;;;;11431:1;;;;;;;;;11454;11443:8;:12;;;;16297:1468;;;:::o;6826:39::-;;;;;;;;;;;;;;;;;;;:::o;9301:139::-;9361:4;9378:32;9388:10;9400:2;9404:5;9378:9;:32::i;:::-;9428:4;9421:11;;9301:139;;;;:::o;20427:201::-;20526:12;11372:1;11360:8;;:13;11352:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11419:1;11408:8;:12;;;;20569:5;20551:32;;;20584:6;20592:5;20551:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20551:47:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20551:47:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20551:47:1;;;;;;;;;;;;;;;;;20616:4;20609:11;;11454:1;11443:8;:12;;;;20427:201;;;;;:::o;10579:46::-;10620:5;10579:46;:::o;19878:334::-;11372:1;11360:8;;:13;11352:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11419:1;11408:8;:12;;;;19929:15;19947:6;;;;;;;;;;;19929:24;;19979:15;19997:6;;;;;;;;;;;19979:24;;20029:82;20043:7;20052:2;20056:54;20101:8;;;;;;;;;;;20056:54;;20063:7;20056:25;;;20090:4;20056:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20056:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20056:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20056:40:1;;;;;;;;;;;;;;;;:44;;:54;;;;:::i;:::-;20029:13;:82::i;:::-;20122;20136:7;20145:2;20149:54;20194:8;;;;;;;;;;;20149:54;;20156:7;20149:25;;;20183:4;20149:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20149:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20149:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20149:40:1;;;;;;;;;;;;;;;;:44;;:54;;;;:::i;:::-;20122:13;:82::i;:::-;11431:1;;11454;11443:8;:12;;;;19878:334;:::o;10729:22::-;;;;;;;;;;;;;:::o;10786:21::-;;;;;;;;;;;;;:::o;9757:678::-;9903:15;9891:8;:27;;9883:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9954:14;10059:16;;7250:66;10115:15;;10132:5;10139:7;10148:5;10155:6;:13;10162:5;10155:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;10172:8;10104:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10104:77:1;;;10094:88;;;;;;9995:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9995:202:1;;;9971:237;;;;;;9954:254;;10219:24;10246:26;10256:6;10264:1;10267;10270;10246:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10246:26:1;;;;;;;;10219:53;;10319:1;10291:30;;:16;:30;;;;:59;;;;;10345:5;10325:25;;:16;:25;;;10291:59;10283:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10396:31;10405:5;10412:7;10421:5;10396:8;:31::i;:::-;9757:678;;;;;;;;;:::o;6995:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20261:158::-;11372:1;11360:8;;:13;11352:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11419:1;11408:8;:12;;;;20302:109;20317:6;;;;;;;;;;;20310:24;;;20343:4;20310:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20310:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20310:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20310:39:1;;;;;;;;;;;;;;;;20358:6;;;;;;;;;;;20351:24;;;20384:4;20351:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20351:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20351:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20351:39:1;;;;;;;;;;;;;;;;20392:8;;;;;;;;;;;20402;;;;;;;;;;;20302:7;:109::i;:::-;11454:1;11443:8;:12;;;;20261:158::o;8485:303::-;8591:1;8574:19;;:5;:19;;;;8566:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8658:1;8639:21;;:7;:21;;;;8631:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8728:5;8700:9;:16;8710:5;8700:16;;;;;;;;;;;;;;;:25;8717:7;8700:25;;;;;;;;;;;;;;;:33;;;;8765:7;8749:31;;8758:5;8749:31;;;8774:5;8749:31;;;;;;;;;;;;;;;;;;8485:303;;;:::o;6404:129::-;6456:6;6498:1;6492;6488;:5;6484:9;;;6483:16;;6475:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6404:129;;;;:::o;8796:342::-;8896:1;8880:18;;:4;:18;;;;8872:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8957:1;8943:16;;:2;:16;;;;8935:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9012:26;9032:5;9012:9;:15;9022:4;9012:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;8994:9;:15;9004:4;8994:15;;;;;;;;;;;;;;;:44;;;;9065:24;9083:5;9065:9;:13;9075:2;9065:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;9049:9;:13;9059:2;9049:13;;;;;;;;;;;;;;;:40;;;;9120:2;9105:25;;9114:4;9105:25;;;9124:5;9105:25;;;;;;;;;;;;;;;;;;8796:342;;;:::o;11710:289::-;11792:12;11806:17;11827:5;:10;;10684:34;;;;;;;;;;;;;;;;;10674:45;;;;;;11871:2;11875:5;11838:43;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11838:43:1;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;11838:43:1;11827:55;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;11827:55:1;;;;;;;;;;;;;;;;;;;;;;;;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;;11791:91:1;;;;11901:7;:57;;;;;11928:1;11913:4;:11;:16;:44;;;;11944:4;11933:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11933:24:1;;;;;;;;;;;;;;;;11913:44;11901:57;11893:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11710:289;;;;;:::o;6541:142::-;6593:6;6625:1;6620;:6;:30;;;;6649:1;6644;6639;6635;:5;6631:9;;;6630:15;;;;;;:20;6620:30;6612:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6541:142;;;;:::o;13040:862::-;13172:2;13152:23;;:8;:23;;:50;;;;;13199:2;13179:23;;:8;:23;;13152:50;13144:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13239:21;13288:5;13270:15;:23;;;;;;13239:55;;13305:18;13343;;;;;;;;;;;13326:14;:35;13305:56;;13413:1;13399:11;:15;;;:33;;;;;13431:1;13418:9;:14;;;;13399:33;:51;;;;;13449:1;13436:9;:14;;;;13399:51;13395:336;;;13605:11;13552:64;;13557:44;13591:9;13557:27;13574:9;13557:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;13552:50;;:64;13528:20;;:88;;;;;;;;;;;13708:11;13655:64;;13660:44;13694:9;13660:27;13677:9;13660:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;13655:50;;:64;13631:20;;:88;;;;;;;;;;;13395:336;13760:8;13741;;:28;;;;;;;;;;;;;;;;;;13799:8;13780;;:28;;;;;;;;;;;;;;;;;;13840:14;13819:18;;:35;;;;;;;;;;;;;;;;;;13870:24;13875:8;;;;;;;;;;;13885;;;;;;;;;;;13870:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13040:862;;;;;;:::o;13992:839::-;14065:10;14088:13;14124:7;;;;;;;;;;;14104:34;;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14104:36:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14104:36:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14104:36:1;;;;;;;;;;;;;;;;14088:52;;14176:1;14159:19;;:5;:19;;;;14151:27;;14189:11;14203:5;;14189:19;;14238:5;14234:590;;;14274:1;14264:6;:11;14260:494;;14296:10;14309:41;14319:30;14339:9;14319:30;;14324:9;14319:15;;:19;;:30;;;;:::i;:::-;14309:9;:41::i;:::-;14296:54;;14369:14;14386:17;14396:6;14386:9;:17::i;:::-;14369:34;;14434:9;14426:5;:17;14422:317;;;14468:14;14485:37;14501:20;14511:9;14501:5;:9;;:20;;;;:::i;:::-;14485:11;;:15;;:37;;;;:::i;:::-;14468:54;;14545:16;14564:27;14581:9;14564:12;14574:1;14564:5;:9;;:12;;;;:::i;:::-;:16;;:27;;;;:::i;:::-;14545:46;;14614:14;14643:11;14631:9;:23;;;;;;14614:40;;14693:1;14681:9;:13;14677:42;;;14696:23;14702:5;14709:9;14696:5;:23::i;:::-;14677:42;14422:317;;;;14260:494;;;14234:590;;;14785:1;14775:6;:11;14771:53;;14811:1;14803:5;:9;;;;14771:53;14234:590;13992:839;;;;;;:::o;5934:303::-;5979:6;6006:1;6002;:5;5998:232;;;6028:1;6024:5;;6044:6;6061:1;6057;6053;:5;;;;;;:9;6044:18;;6077:92;6088:1;6084;:5;6077:92;;;6114:1;6110:5;;6152:1;6147;6143;6139;:5;;;;;;:9;6138:15;;;;;;6134:19;;6077:92;;;5998:232;;;;6195:1;6190;:6;6186:44;;6217:1;6213:5;;6186:44;5998:232;5934:303;;;:::o;7994:201::-;8067:22;8083:5;8067:11;;:15;;:22;;;;:::i;:::-;8053:11;:36;;;;8116:24;8134:5;8116:9;:13;8126:2;8116:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;8100:9;:13;8110:2;8100:13;;;;;;;;;;;;;;;:40;;;;8177:2;8156:31;;8173:1;8156:31;;;8181:5;8156:31;;;;;;;;;;;;;;;;;;7994:201;;:::o;5720:96::-;5772:6;5799:1;5795;:5;:13;;5807:1;5795:13;;;5803:1;5795:13;5791:17;;5720:96;;;;:::o;8203:274::-;8288:1;8272:18;;:4;:18;;;;8264:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8347:26;8367:5;8347:9;:15;8357:4;8347:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;8329:9;:15;8339:4;8329:15;;;;;;;;;;;;;;;:44;;;;8398:22;8414:5;8398:11;;:15;;:22;;;;:::i;:::-;8384:11;:36;;;;8459:1;8436:33;;8445:4;8436:33;;;8463:5;8436:33;;;;;;;;;;;;;;;;;;8203:274;;:::o;6268:128::-;6320:6;6362:1;6356;6352;:5;6348:9;;;6347:16;;6339:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6268:128;;;;:::o;5394:120::-;5444:9;5339:6;5478:1;5470:10;;:17;5466:21;;5394:120;;;:::o;5585:108::-;5645:9;5683:1;5675:10;;5671:14;;:1;:14;;;;;;;;5667:18;;5585:108;;;;:::o
Swarm Source
bzzr://39000adcda58cc61f08b2e430bfdaf1d912208eb06560496cc3d5c242f666d02
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.