ERC-20
Overview
Max Total Supply
0.000000805083469109 RLP
Holders
3
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000805079552348 RLPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x946E33B6...1BC536503 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
UniswapV2Pair
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
pragma solidity =0.6.12; import './UniswapV2ERC20.sol'; import './Math.sol'; import './UQ112x112.sol'; import './IERC20.sol'; import './IUniswapV2Factory.sol'; import './IUniswapV2Callee.sol'; interface IMigrator { // Return the desired amount of liquidity token that the migrator wants. function desiredLiquidity() external view returns (uint256); } contract UniswapV2Pair is UniswapV2ERC20 { using SafeMathUniswap 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, 'UniswapV2: 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))), 'UniswapV2: TRANSFER_FAILED'); } event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); constructor() public { factory = msg.sender; } // called once by the factory at time of deployment function initialize(address _token0, address _token1) external { require(msg.sender == factory, 'UniswapV2: 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), 'UniswapV2: 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 = IUniswapV2Factory(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 = IERC20Uniswap(token0).balanceOf(address(this)); uint balance1 = IERC20Uniswap(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) { address migrator = IUniswapV2Factory(factory).migrator(); if (msg.sender == migrator) { liquidity = IMigrator(migrator).desiredLiquidity(); require(liquidity > 0 && liquidity != uint256(-1), "Bad desired liquidity"); } else { require(migrator == address(0), "Must not have migrator"); 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, 'UniswapV2: 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 = IERC20Uniswap(_token0).balanceOf(address(this)); uint balance1 = IERC20Uniswap(_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, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED'); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0); _safeTransfer(_token1, to, amount1); balance0 = IERC20Uniswap(_token0).balanceOf(address(this)); balance1 = IERC20Uniswap(_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) external lock { require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT'); (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: 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, 'UniswapV2: INVALID_TO'); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data); balance0 = IERC20Uniswap(_token0).balanceOf(address(this)); balance1 = IERC20Uniswap(_token1).balanceOf(address(this)); } uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0; uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT'); { // scope for reserve{0,1}Adjusted, avoids stack too deep errors uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3)); uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3)); require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: 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, IERC20Uniswap(_token0).balanceOf(address(this)).sub(reserve0)); _safeTransfer(_token1, to, IERC20Uniswap(_token1).balanceOf(address(this)).sub(reserve1)); } // force reserves to match balances function sync() external lock { _update(IERC20Uniswap(token0).balanceOf(address(this)), IERC20Uniswap(token1).balanceOf(address(this)), reserve0, reserve1); } }
//SPDX-License-Identifier: pragma solidity >=0.5.0; interface IERC20Uniswap { 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); }
pragma solidity >=0.5.0; interface IUniswapV2Callee { function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external; }
//SPDX-License-Identifier: pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function migrator() 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; function setMigrator(address) external; }
pragma solidity =0.6.12; // a library for performing various math operations library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } }
//SPDX-License-Identifier: pragma solidity =0.6.12; // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMathUniswap { 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'); } }
//SPDX-License-Identifier: pragma solidity =0.6.12; import './SafeMath.sol'; contract UniswapV2ERC20 { using SafeMathUniswap for uint; string public constant name = 'RigelSwap LP Token'; string public constant symbol = 'RLP'; uint8 public constant decimals = 18; uint public totalSupply; mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) public allowance; bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint) public nonces; event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); constructor() public { uint chainId; assembly { chainId := chainid() } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes(name)), keccak256(bytes('1')), chainId, address(this) ) ); } function _mint(address to, uint value) internal { totalSupply = totalSupply.add(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(address(0), to, value); } function _burn(address from, uint value) internal { balanceOf[from] = balanceOf[from].sub(value); totalSupply = totalSupply.sub(value); emit Transfer(from, address(0), value); } function _approve(address owner, address spender, uint value) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { balanceOf[from] = balanceOf[from].sub(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(from, to, value); } function approve(address spender, uint value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint value) external returns (bool) { if (allowance[from][msg.sender] != uint(-1)) { allowance[from][msg.sender] = allowance[from][msg.sender].sub(value); } _transfer(from, to, value); return true; } function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, 'UniswapV2: 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, 'UniswapV2: INVALID_SIGNATURE'); _approve(owner, spender, value); } }
pragma solidity =0.6.12; // a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format)) // range: [0, 2**112 - 1] // resolution: 1 / 2**112 library UQ112x112 { uint224 constant Q112 = 2**112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { z = uint224(y) * Q112; // never overflows } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600c5534801561001557600080fd5b5060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280601281526020017f526967656c53776170204c5020546f6b656e0000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206003819055505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613b20806101676000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610869578063d505accf1461089d578063dd62ed3e14610936578063fff6cae9146109ae576101a9565b8063ba9a7a56146107d3578063bc25cf77146107f1578063c45a015514610835576101a9565b80637ecebe00116100d35780637ecebe001461063557806389afcb441461068d57806395d89b41146106ec578063a9059cbb1461076f576101a9565b80636a6278421461056757806370a08231146105bf5780637464fc3d14610617576101a9565b806323b872dd116101665780633644e515116101405780633644e515146104a9578063485cc955146104c75780635909c0d51461052b5780635a3d549314610549576101a9565b806323b872dd146103e657806330adf81f1461046a578063313ce56714610488576101a9565b8063022c0d9f146101ae57806306fdde031461025b5780630902f1ac146102de578063095ea7b3146103305780630dfe16811461039457806318160ddd146103c8575b600080fd5b610259600480360360808110156101c457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561021557600080fd5b82018360208201111561022757600080fd5b8035906020019184600183028401116401000000008311171561024957600080fd5b90919293919293905050506109b8565b005b610263611163565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a3578082015181840152602081019050610288565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e661119c565b60405180846dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b61037c6004803603604081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f9565b60405180821515815260200191505060405180910390f35b61039c611210565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d0611236565b6040518082815260200191505060405180910390f35b610452600480360360608110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123c565b60405180821515815260200191505060405180910390f35b610472611407565b6040518082815260200191505060405180910390f35b61049061142e565b604051808260ff16815260200191505060405180910390f35b6104b1611433565b6040518082815260200191505060405180910390f35b610529600480360360408110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611439565b005b610533611582565b6040518082815260200191505060405180910390f35b610551611588565b6040518082815260200191505060405180910390f35b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061158e565b6040518082815260200191505060405180910390f35b610601600480360360208110156105d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cbc565b6040518082815260200191505060405180910390f35b61061f611cd4565b6040518082815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cda565b6040518082815260200191505060405180910390f35b6106cf600480360360208110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf2565b604051808381526020018281526020019250505060405180910390f35b6106f4612287565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610734578082015181840152602081019050610719565b50505050905090810190601f1680156107615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107bb6004803603604081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122c0565b60405180821515815260200191505060405180910390f35b6107db6122d7565b6040518082815260200191505060405180910390f35b6108336004803603602081101561080757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122dd565b005b61083d61258c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108716125b2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610934600480360360e08110156108b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506125d8565b005b6109986004803603604081101561094c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128ed565b6040518082815260200191505060405180910390f35b6109b6612912565b005b6001600c5414610a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000851180610a475750600084115b610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a316025913960400191505060405180910390fd5b600080610aa761119c565b5091509150816dffffffffffffffffffffffffffff1687108015610ada5750806dffffffffffffffffffffffffffff1686105b610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a7a6021913960400191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610be857508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610c5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f556e697377617056323a20494e56414c49445f544f000000000000000000000081525060200191505060405180910390fd5b60008b1115610c6f57610c6e828a8d612b66565b5b60008a1115610c8457610c83818a8c612b66565b5b6000888890501115610d56578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d6020811015610de757600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff16038311610ec2576000610ed8565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610efc576000610f12565b89856dffffffffffffffffffffffffffff160383035b90506000821180610f235750600081115b610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613a566024913960400191505060405180910390fd5b6000610fb4610f91600385612d9d90919063ffffffff16565b610fa66103e888612d9d90919063ffffffff16565b612e3290919063ffffffff16565b90506000610ff2610fcf600385612d9d90919063ffffffff16565b610fe46103e888612d9d90919063ffffffff16565b612e3290919063ffffffff16565b905061103c620f424061102e896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b612d9d90919063ffffffff16565b61104f8284612d9d90919063ffffffff16565b10156110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f556e697377617056323a204b000000000000000000000000000000000000000081525060200191505060405180910390fd5b50506110d184848888612eb5565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050506001600c819055505050505050565b6040518060400160405280601281526020017f526967656c53776170204c5020546f6b656e000000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b6000611206338484613213565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113f15761137082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113fc8484846132fe565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f556e697377617056323a20464f5242494444454e00000000000000000000000081525060200191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c5414611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c8190555060008061161b61119c565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116ab57600080fd5b505afa1580156116bf573d6000803e3d6000fd5b505050506040513d60208110156116d557600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561177357600080fd5b505afa158015611787573d6000803e3d6000fd5b505050506040513d602081101561179d57600080fd5b8101908080519060200190929190505050905060006117d5856dffffffffffffffffffffffffffff1684612e3290919063ffffffff16565b905060006117fc856dffffffffffffffffffffffffffff1684612e3290919063ffffffff16565b9050600061180a8787613492565b90506000805490506000811415611b07576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cd07e476040518163ffffffff1660e01b815260040160206040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d60208110156118af57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611a20578073ffffffffffffffffffffffffffffffffffffffff166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050506040513d602081101561196657600080fd5b8101908080519060200190929190505050995060008a1180156119a957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a14155b611a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4261642064657369726564206c6971756964697479000000000000000000000081525060200191505060405180910390fd5b611b01565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ac2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d757374206e6f742068617665206d69677261746f720000000000000000000081525060200191505060405180910390fd5b611af16103e8611ae3611ade8789612d9d90919063ffffffff16565b613673565b612e3290919063ffffffff16565b9950611b0060006103e86136d5565b5b50611b6a565b611b67886dffffffffffffffffffffffffffff16611b2e8387612d9d90919063ffffffff16565b81611b3557fe5b04886dffffffffffffffffffffffffffff16611b5a8487612d9d90919063ffffffff16565b81611b6157fe5b046137ef565b98505b60008911611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ac36028913960400191505060405180910390fd5b611bcd8a8a6136d5565b611bd986868a8a612eb5565b8115611c5157611c4a6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611d6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550600080611d8061119c565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e3c57600080fd5b505afa158015611e50573d6000803e3d6000fd5b505050506040513d6020811015611e6657600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ee257600080fd5b505afa158015611ef6573d6000803e3d6000fd5b505050506040513d6020811015611f0c57600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611f6f8888613492565b905060008054905080611f8b8685612d9d90919063ffffffff16565b81611f9257fe5b049a5080611fa98585612d9d90919063ffffffff16565b81611fb057fe5b04995060008b118015611fc3575060008a115b612018576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a9b6028913960400191505060405180910390fd5b6120223084613808565b61202d878d8d612b66565b612038868d8c612b66565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561209f57600080fd5b505afa1580156120b3573d6000803e3d6000fd5b505050506040513d60208110156120c957600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561214357600080fd5b505afa158015612157573d6000803e3d6000fd5b505050506040513d602081101561216d57600080fd5b8101908080519060200190929190505050935061218c85858b8b612eb5565b8115612204576121fd6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600381526020017f524c50000000000000000000000000000000000000000000000000000000000081525081565b60006122cd3384846132fe565b6001905092915050565b6103e881565b6001600c5414612355576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506124958284612490600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561244757600080fd5b505afa15801561245b573d6000803e3d6000fd5b505050506040513d602081101561247157600080fd5b8101908080519060200190929190505050612e3290919063ffffffff16565b612b66565b61257f818461257a6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561253157600080fd5b505afa158015612545573d6000803e3d6000fd5b505050506040513d602081101561255b57600080fd5b8101908080519060200190929190505050612e3290919063ffffffff16565b612b66565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b4284101561264e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e697377617056323a2045585049524544000000000000000000000000000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156127f1573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561286557508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6128d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f556e697377617056323a20494e56414c49445f5349474e41545552450000000081525060200191505060405180910390fd5b6128e2898989613213565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c541461298a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550612b5c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a1e57600080fd5b505afa158015612a32573d6000803e3d6000fd5b505050506040513d6020811015612a4857600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ae257600080fd5b505afa158015612af6573d6000803e3d6000fd5b505050506040513d6020811015612b0c57600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff16612eb5565b6001600c81905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612c7d5780518252602082019150602081019050602083039250612c5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612cdf576040519150601f19603f3d011682016040523d82523d6000602084013e612ce4565b606091505b5091509150818015612d245750600081511480612d235750808060200190516020811015612d1157600080fd5b81019080805190602001909291905050505b5b612d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f556e697377617056323a205452414e534645525f4641494c454400000000000081525060200191505060405180910390fd5b5050505050565b600080821480612dba5750828283850292508281612db757fe5b04145b612e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115612eaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168411158015612f2557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b612f97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f556e697377617056323a204f564552464c4f570000000000000000000000000081525060200191505060405180910390fd5b60006401000000004281612fa757fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff16118015612fea57506000846dffffffffffffffffffffffffffff1614155b801561300757506000836dffffffffffffffffffffffffffff1614155b156130e9578063ffffffff1661304c8561302086613922565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661394d90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff166130ba8461308e87613922565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661394d90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b61335081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133e581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156134fd57600080fd5b505afa158015613511573d6000803e3d6000fd5b505050506040513d602081101561352757600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b549050821561365957600081146136545760006135bf6135ba866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b613673565b905060006135cc83613673565b9050808211156136515760006135ff6135ee8385612e3290919063ffffffff16565b600054612d9d90919063ffffffff16565b905060006136298361361b600587612d9d90919063ffffffff16565b6139ad90919063ffffffff16565b9050600081838161363657fe5b049050600081111561364d5761364c87826136d5565b5b5050505b50505b61366b565b6000811461366a576000600b819055505b5b505092915050565b600060038211156136c257819050600060016002848161368f57fe5b040190505b818110156136bc578091506002818285816136ab57fe5b0401816136b457fe5b049050613694565b506136d0565b600082146136cf57600190505b5b919050565b6136ea816000546139ad90919063ffffffff16565b60008190555061374281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008183106137fe5781613800565b825b905092915050565b61385a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b281600054612e3290919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16816139a457fe5b04905092915050565b6000828284019150811015613a2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b9291505056fe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a26469706673582212206b97aa2244591f722e33d17bb5fc5340f99ff7957d0c41a78da084d96bdfa49364736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610869578063d505accf1461089d578063dd62ed3e14610936578063fff6cae9146109ae576101a9565b8063ba9a7a56146107d3578063bc25cf77146107f1578063c45a015514610835576101a9565b80637ecebe00116100d35780637ecebe001461063557806389afcb441461068d57806395d89b41146106ec578063a9059cbb1461076f576101a9565b80636a6278421461056757806370a08231146105bf5780637464fc3d14610617576101a9565b806323b872dd116101665780633644e515116101405780633644e515146104a9578063485cc955146104c75780635909c0d51461052b5780635a3d549314610549576101a9565b806323b872dd146103e657806330adf81f1461046a578063313ce56714610488576101a9565b8063022c0d9f146101ae57806306fdde031461025b5780630902f1ac146102de578063095ea7b3146103305780630dfe16811461039457806318160ddd146103c8575b600080fd5b610259600480360360808110156101c457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561021557600080fd5b82018360208201111561022757600080fd5b8035906020019184600183028401116401000000008311171561024957600080fd5b90919293919293905050506109b8565b005b610263611163565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a3578082015181840152602081019050610288565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e661119c565b60405180846dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b61037c6004803603604081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f9565b60405180821515815260200191505060405180910390f35b61039c611210565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d0611236565b6040518082815260200191505060405180910390f35b610452600480360360608110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123c565b60405180821515815260200191505060405180910390f35b610472611407565b6040518082815260200191505060405180910390f35b61049061142e565b604051808260ff16815260200191505060405180910390f35b6104b1611433565b6040518082815260200191505060405180910390f35b610529600480360360408110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611439565b005b610533611582565b6040518082815260200191505060405180910390f35b610551611588565b6040518082815260200191505060405180910390f35b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061158e565b6040518082815260200191505060405180910390f35b610601600480360360208110156105d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cbc565b6040518082815260200191505060405180910390f35b61061f611cd4565b6040518082815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cda565b6040518082815260200191505060405180910390f35b6106cf600480360360208110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf2565b604051808381526020018281526020019250505060405180910390f35b6106f4612287565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610734578082015181840152602081019050610719565b50505050905090810190601f1680156107615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107bb6004803603604081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122c0565b60405180821515815260200191505060405180910390f35b6107db6122d7565b6040518082815260200191505060405180910390f35b6108336004803603602081101561080757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122dd565b005b61083d61258c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108716125b2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610934600480360360e08110156108b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506125d8565b005b6109986004803603604081101561094c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128ed565b6040518082815260200191505060405180910390f35b6109b6612912565b005b6001600c5414610a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000851180610a475750600084115b610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a316025913960400191505060405180910390fd5b600080610aa761119c565b5091509150816dffffffffffffffffffffffffffff1687108015610ada5750806dffffffffffffffffffffffffffff1686105b610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a7a6021913960400191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610be857508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610c5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f556e697377617056323a20494e56414c49445f544f000000000000000000000081525060200191505060405180910390fd5b60008b1115610c6f57610c6e828a8d612b66565b5b60008a1115610c8457610c83818a8c612b66565b5b6000888890501115610d56578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d6020811015610de757600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff16038311610ec2576000610ed8565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610efc576000610f12565b89856dffffffffffffffffffffffffffff160383035b90506000821180610f235750600081115b610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613a566024913960400191505060405180910390fd5b6000610fb4610f91600385612d9d90919063ffffffff16565b610fa66103e888612d9d90919063ffffffff16565b612e3290919063ffffffff16565b90506000610ff2610fcf600385612d9d90919063ffffffff16565b610fe46103e888612d9d90919063ffffffff16565b612e3290919063ffffffff16565b905061103c620f424061102e896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b612d9d90919063ffffffff16565b61104f8284612d9d90919063ffffffff16565b10156110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f556e697377617056323a204b000000000000000000000000000000000000000081525060200191505060405180910390fd5b50506110d184848888612eb5565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050506001600c819055505050505050565b6040518060400160405280601281526020017f526967656c53776170204c5020546f6b656e000000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b6000611206338484613213565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113f15761137082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113fc8484846132fe565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f556e697377617056323a20464f5242494444454e00000000000000000000000081525060200191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c5414611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c8190555060008061161b61119c565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116ab57600080fd5b505afa1580156116bf573d6000803e3d6000fd5b505050506040513d60208110156116d557600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561177357600080fd5b505afa158015611787573d6000803e3d6000fd5b505050506040513d602081101561179d57600080fd5b8101908080519060200190929190505050905060006117d5856dffffffffffffffffffffffffffff1684612e3290919063ffffffff16565b905060006117fc856dffffffffffffffffffffffffffff1684612e3290919063ffffffff16565b9050600061180a8787613492565b90506000805490506000811415611b07576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cd07e476040518163ffffffff1660e01b815260040160206040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d60208110156118af57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611a20578073ffffffffffffffffffffffffffffffffffffffff166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050506040513d602081101561196657600080fd5b8101908080519060200190929190505050995060008a1180156119a957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a14155b611a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4261642064657369726564206c6971756964697479000000000000000000000081525060200191505060405180910390fd5b611b01565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ac2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d757374206e6f742068617665206d69677261746f720000000000000000000081525060200191505060405180910390fd5b611af16103e8611ae3611ade8789612d9d90919063ffffffff16565b613673565b612e3290919063ffffffff16565b9950611b0060006103e86136d5565b5b50611b6a565b611b67886dffffffffffffffffffffffffffff16611b2e8387612d9d90919063ffffffff16565b81611b3557fe5b04886dffffffffffffffffffffffffffff16611b5a8487612d9d90919063ffffffff16565b81611b6157fe5b046137ef565b98505b60008911611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ac36028913960400191505060405180910390fd5b611bcd8a8a6136d5565b611bd986868a8a612eb5565b8115611c5157611c4a6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611d6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550600080611d8061119c565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e3c57600080fd5b505afa158015611e50573d6000803e3d6000fd5b505050506040513d6020811015611e6657600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ee257600080fd5b505afa158015611ef6573d6000803e3d6000fd5b505050506040513d6020811015611f0c57600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611f6f8888613492565b905060008054905080611f8b8685612d9d90919063ffffffff16565b81611f9257fe5b049a5080611fa98585612d9d90919063ffffffff16565b81611fb057fe5b04995060008b118015611fc3575060008a115b612018576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a9b6028913960400191505060405180910390fd5b6120223084613808565b61202d878d8d612b66565b612038868d8c612b66565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561209f57600080fd5b505afa1580156120b3573d6000803e3d6000fd5b505050506040513d60208110156120c957600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561214357600080fd5b505afa158015612157573d6000803e3d6000fd5b505050506040513d602081101561216d57600080fd5b8101908080519060200190929190505050935061218c85858b8b612eb5565b8115612204576121fd6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600381526020017f524c50000000000000000000000000000000000000000000000000000000000081525081565b60006122cd3384846132fe565b6001905092915050565b6103e881565b6001600c5414612355576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506124958284612490600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561244757600080fd5b505afa15801561245b573d6000803e3d6000fd5b505050506040513d602081101561247157600080fd5b8101908080519060200190929190505050612e3290919063ffffffff16565b612b66565b61257f818461257a6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561253157600080fd5b505afa158015612545573d6000803e3d6000fd5b505050506040513d602081101561255b57600080fd5b8101908080519060200190929190505050612e3290919063ffffffff16565b612b66565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b4284101561264e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e697377617056323a2045585049524544000000000000000000000000000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156127f1573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561286557508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6128d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f556e697377617056323a20494e56414c49445f5349474e41545552450000000081525060200191505060405180910390fd5b6128e2898989613213565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c541461298a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e697377617056323a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550612b5c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a1e57600080fd5b505afa158015612a32573d6000803e3d6000fd5b505050506040513d6020811015612a4857600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ae257600080fd5b505afa158015612af6573d6000803e3d6000fd5b505050506040513d6020811015612b0c57600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff16612eb5565b6001600c81905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612c7d5780518252602082019150602081019050602083039250612c5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612cdf576040519150601f19603f3d011682016040523d82523d6000602084013e612ce4565b606091505b5091509150818015612d245750600081511480612d235750808060200190516020811015612d1157600080fd5b81019080805190602001909291905050505b5b612d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f556e697377617056323a205452414e534645525f4641494c454400000000000081525060200191505060405180910390fd5b5050505050565b600080821480612dba5750828283850292508281612db757fe5b04145b612e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115612eaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168411158015612f2557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b612f97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f556e697377617056323a204f564552464c4f570000000000000000000000000081525060200191505060405180910390fd5b60006401000000004281612fa757fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff16118015612fea57506000846dffffffffffffffffffffffffffff1614155b801561300757506000836dffffffffffffffffffffffffffff1614155b156130e9578063ffffffff1661304c8561302086613922565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661394d90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff166130ba8461308e87613922565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661394d90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b61335081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133e581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156134fd57600080fd5b505afa158015613511573d6000803e3d6000fd5b505050506040513d602081101561352757600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b549050821561365957600081146136545760006135bf6135ba866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612d9d90919063ffffffff16565b613673565b905060006135cc83613673565b9050808211156136515760006135ff6135ee8385612e3290919063ffffffff16565b600054612d9d90919063ffffffff16565b905060006136298361361b600587612d9d90919063ffffffff16565b6139ad90919063ffffffff16565b9050600081838161363657fe5b049050600081111561364d5761364c87826136d5565b5b5050505b50505b61366b565b6000811461366a576000600b819055505b5b505092915050565b600060038211156136c257819050600060016002848161368f57fe5b040190505b818110156136bc578091506002818285816136ab57fe5b0401816136b457fe5b049050613694565b506136d0565b600082146136cf57600190505b5b919050565b6136ea816000546139ad90919063ffffffff16565b60008190555061374281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ad90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008183106137fe5781613800565b825b905092915050565b61385a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b281600054612e3290919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16816139a457fe5b04905092915050565b6000828284019150811015613a2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b9291505056fe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a26469706673582212206b97aa2244591f722e33d17bb5fc5340f99ff7957d0c41a78da084d96bdfa49364736f6c634300060c0033
Deployed Bytecode Sourcemap
363:9964:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7845:1875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;147:50:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1348:227:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2147:144:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;656:21:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;287:24:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2439:295;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;573:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;246:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;432:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2380:206:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1000:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1038;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4530:1625;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;317:41:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1076:17:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;687:38:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6264:1472:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;203:37:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2297:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;481:46:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9766:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;628:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;683:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2740:662:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;364:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10155:170:7;;;:::i;:::-;;7845:1875;1257:1;1245:8;;:13;1237:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:1;1290:8;:12;;;;7971:1:::1;7958:10;:14;:32;;;;7989:1;7976:10;:14;7958:32;7950:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8043:17;8062::::0;8084:13:::1;:11;:13::i;:::-;8042:55;;;;;8143:9;8130:22;;:10;:22;:48;;;;;8169:9;8156:22;;:10;:22;8130:48;8122:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8227:13;8250::::0;8338:15:::1;8356:6;;;;;;;;;;;8338:24;;8372:15;8390:6;;;;;;;;;;;8372:24;;8420:7;8414:13;;:2;:13;;;;:30;;;;;8437:7;8431:13;;:2;:13;;;;8414:30;8406:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;8497:1;8484:10;:14;8480:58;;;8500:38;8514:7;8523:2;8527:10;8500:13;:38::i;:::-;8480:58;8599:1;8586:10;:14;8582:58;;;8602:38;8616:7;8625:2;8629:10;8602:13;:38::i;:::-;8582:58;8702:1;8688:4;;:11;;:15;8684:97;;;8722:2;8705:34;;;8740:10;8752;8764;8776:4;;8705:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8684:97;8816:7;8802:32;;;8843:4;8802:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;8791:58;;8884:7;8870:32;;;8911:4;8870:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;8859:58;;1312:1;;8937:14;8977:10;8965:9;:22;;;8954:8;:33;:75;;9028:1;8954:75;;;9014:10;9002:9;:22;;;8990:8;:35;8954:75;8937:92;;9039:14;9079:10;9067:9;:22;;;9056:8;:33;:75;;9130:1;9056:75;;;9116:10;9104:9;:22;;;9092:8;:35;9056:75;9039:92;;9161:1;9149:9;:13;:30;;;;9178:1;9166:9;:13;9149:30;9141:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9304:21;9328:40;9351:16;9365:1;9351:9;:13;;:16;;;;:::i;:::-;9328:18;9341:4;9328:8;:12;;:18;;;;:::i;:::-;:22;;:40;;;;:::i;:::-;9304:64;;9378:21;9402:40;9425:16;9439:1;9425:9;:13;;:16;;;;:::i;:::-;9402:18;9415:4;9402:8;:12;;:18;;;;:::i;:::-;:22;;:40;;;;:::i;:::-;9378:64;;9502:43;9537:7;9502:30;9522:9;9502:30;;9507:9;9502:15;;:19;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;9460:38;9481:16;9460;:20;;:38;;;;:::i;:::-;:85;;9452:110;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;1312:1;;9583:49;9591:8;9601;9611:9;9622;9583:7;:49::i;:::-;9710:2;9647:66;;9652:10;9647:66;;;9664:9;9675;9686:10;9698;9647:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1312:1;;;;;;1334::::0;1323:8;:12;;;;7845:1875;;;;;:::o;147:50:6:-;;;;;;;;;;;;;;;;;;;:::o;1348:227:7:-;1392:17;1411;1430:26;1480:8;;;;;;;;;;;1468:20;;1510:8;;;;;;;;;;;1498:20;;1550:18;;;;;;;;;;;1528:40;;1348:227;;;:::o;2147:144:6:-;2211:4;2227:36;2236:10;2248:7;2257:5;2227:8;:36::i;:::-;2280:4;2273:11;;2147:144;;;;:::o;656:21:7:-;;;;;;;;;;;;;:::o;287:24:6:-;;;;:::o;2439:295::-;2517:4;2573:2;2537:9;:15;2547:4;2537:15;;;;;;;;;;;;;;;:27;2553:10;2537:27;;;;;;;;;;;;;;;;:39;2533:138;;2622:38;2654:5;2622:9;:15;2632:4;2622:15;;;;;;;;;;;;;;;:27;2638:10;2622:27;;;;;;;;;;;;;;;;:31;;:38;;;;:::i;:::-;2592:9;:15;2602:4;2592:15;;;;;;;;;;;;;;;:27;2608:10;2592:27;;;;;;;;;;;;;;;:68;;;;2533:138;2680:26;2690:4;2696:2;2700:5;2680:9;:26::i;:::-;2723:4;2716:11;;2439:295;;;;;:::o;573:108::-;615:66;573:108;;;:::o;246:35::-;279:2;246:35;:::o;432:31::-;;;;:::o;2380:206:7:-;2475:7;;;;;;;;;;;2461:21;;:10;:21;;;2453:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:7;2537:6;;:16;;;;;;;;;;;;;;;;;;2572:7;2563:6;;:16;;;;;;;;;;;;;;;;;;2380:206;;:::o;1000:32::-;;;;:::o;1038:::-;;;;:::o;4530:1625::-;4579:14;1257:1;1245:8;;:13;1237:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:1;1290:8;:12;;;;4606:17:::1;4625::::0;4647:13:::1;:11;:13::i;:::-;4605:55;;;;;4685:13;4715:6;;;;;;;;;;;4701:31;;;4741:4;4701:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;4685:62;;4757:13;4787:6;;;;;;;;;;;4773:31;;;4813:4;4773:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;4757:62;;4829:12;4844:23;4857:9;4844:23;;:8;:12;;:23;;;;:::i;:::-;4829:38;;4877:12;4892:23;4905:9;4892:23;;:8;:12;;:23;;;;:::i;:::-;4877:38;;4926:10;4939:30;4948:9;4959;4939:8;:30::i;:::-;4926:43;;4979:17;4999:11:::0;::::1;4979:31;;5118:1;5102:12;:17;5098:739;;;5135:16;5172:7;;;;;;;;;;;5154:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;5135:56;;5223:8;5209:22;;:10;:22;;;5205:493;;;5273:8;5263:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;5251:50;;5339:1;5327:9;:13;:41;;;;;5365:2;5344:9;:24;;5327:41;5319:75;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;5205:493;;;5461:1;5441:22;;:8;:22;;;5433:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;5520:54;522:5;5520:31;5530:20;5542:7;5530;:11;;:20;;;;:::i;:::-;5520:9;:31::i;:::-;:35;;:54;;;;:::i;:::-;5508:66;;5592:36;5606:1;522:5;5592;:36::i;:::-;5205:493;5098:739;;;;5740:86;5777:9;5749:37;;:25;5761:12;5749:7;:11;;:25;;;;:::i;:::-;:37;;;;;;5816:9;5788:37;;:25;5800:12;5788:7;:11;;:25;;;;:::i;:::-;:37;;;;;;5740:8;:86::i;:::-;5728:98;;5098:739;5866:1;5854:9;:13;5846:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5922:20;5928:2;5932:9;5922:5;:20::i;:::-;5953:49;5961:8;5971;5981:9;5992;5953:7;:49::i;:::-;6016:5;6012:47;;;6031:28;6050:8;;;;;;;;;;;6031:28;;6036:8;;;;;;;;;;;6031:14;;:18;;:28;;;;:::i;:::-;6023:5;:36;;;;6012:47;6119:10;6114:34;;;6131:7;6140;6114:34;;;;;;;;;;;;;;;;;;;;;;;;1312:1;;;;;;;;1334::::0;1323:8;:12;;;;4530:1625;;;:::o;317:41:6:-;;;;;;;;;;;;;;;;;:::o;1076:17:7:-;;;;:::o;687:38:6:-;;;;;;;;;;;;;;;;;:::o;6264:1472:7:-;6313:12;6327;1257:1;1245:8;;:13;1237:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:1;1290:8;:12;;;;6352:17:::1;6371::::0;6393:13:::1;:11;:13::i;:::-;6351:55;;;;;6431:15;6449:6;;;;;;;;;;;6431:24;;6511:15;6529:6;;;;;;;;;;;6511:24;;6591:13;6621:7;6607:32;;;6648:4;6607:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;6591:63;;6664:13;6694:7;6680:32;;;6721:4;6680:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;6664:63;;6737:14;6754:9;:24;6772:4;6754:24;;;;;;;;;;;;;;;;6737:41;;6789:10;6802:30;6811:9;6822;6802:8;:30::i;:::-;6789:43;;6842:17;6862:11:::0;::::1;6842:31;;6997:12;6971:23;6985:8;6971:9;:13;;:23;;;;:::i;:::-;:38;;;;;;6961:48;;7103:12;7077:23;7091:8;7077:9;:13;;:23;;;;:::i;:::-;:38;;;;;;7067:48;;7191:1;7181:7;:11;:26;;;;;7206:1;7196:7;:11;7181:26;7173:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7262:31;7276:4;7283:9;7262:5;:31::i;:::-;7303:35;7317:7;7326:2;7330:7;7303:13;:35::i;:::-;7348;7362:7;7371:2;7375:7;7348:13;:35::i;:::-;7418:7;7404:32;;;7445:4;7404:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;7393:58;;7486:7;7472:32;;;7513:4;7472:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;7461:58;;7530:49;7538:8;7548;7558:9;7569;7530:7;:49::i;:::-;7593:5;7589:47;;;7608:28;7627:8;;;;;;;;;;;7608:28;;7613:8;;;;;;;;;;;7608:14;;:18;;:28;;;;:::i;:::-;7600:5;:36;;;;7589:47;7726:2;7691:38;;7696:10;7691:38;;;7708:7;7717;7691:38;;;;;;;;;;;;;;;;;;;;;;;;1312:1;;;;;;;;;1334::::0;1323:8;:12;;;;6264:1472;;;:::o;203:37:6:-;;;;;;;;;;;;;;;;;;;:::o;2297:136::-;2357:4;2373:32;2383:10;2395:2;2399:5;2373:9;:32::i;:::-;2422:4;2415:11;;2297:136;;;;:::o;481:46:7:-;522:5;481:46;:::o;9766:343::-;1257:1;1245:8;;:13;1237:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:1;1290:8;:12;;;;9816:15:::1;9834:6;;;;;;;;;;;9816:24;;9865:15;9883:6;;;;;;;;;;;9865:24;;9914:89;9928:7;9937:2;9941:61;9993:8;;;;;;;;;;;9941:61;;9955:7;9941:32;;;9982:4;9941:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:51;;:61;;;;:::i;:::-;9914:13;:89::i;:::-;10013;10027:7;10036:2;10040:61;10092:8;;;;;;;;;;;10040:61;;10054:7;10040:32;;;10081:4;10040:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:51;;:61;;;;:::i;:::-;10013:13;:89::i;:::-;1312:1;;1334::::0;1323:8;:12;;;;9766:343;:::o;628:22::-;;;;;;;;;;;;;:::o;683:21::-;;;;;;;;;;;;;:::o;2740:662:6:-;2885:15;2873:8;:27;;2865:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2933:14;3035:16;;615:66;3090:15;;3107:5;3114:7;3123:5;3130:6;:13;3137:5;3130:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;3147:8;3079:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:88;;;;;;2973:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2950:231;;;;;;2933:248;;3191:24;3218:26;3228:6;3236:1;3239;3242;3218:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3191:53;;3290:1;3262:30;;:16;:30;;;;:59;;;;;3316:5;3296:25;;:16;:25;;;3262:59;3254:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3364:31;3373:5;3380:7;3389:5;3364:8;:31::i;:::-;2740:662;;;;;;;;;:::o;364:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10155:170:7:-;1257:1;1245:8;;:13;1237:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:1;1290:8;:12;;;;10195:123:::1;10217:6;;;;;;;;;;;10203:31;;;10243:4;10203:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;10265:6;;;;;;;;;;;10251:31;;;10291:4;10251:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;10299:8;;;;;;;;;;;10309;;;;;;;;;;;10195:7;:123::i;:::-;1334:1:::0;1323:8;:12;;;;10155:170::o;1581:284::-;1662:12;1676:17;1697:5;:10;;585:34;;;;;;;;;;;;;;;;;575:45;;;;;;1741:2;1745:5;1708:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1697:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1661:91;;;;1770:7;:57;;;;;1797:1;1782:4;:11;:16;:44;;;;1813:4;1802:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:44;1770:57;1762:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1581:284;;;;;:::o;455:140:4:-;507:6;538:1;533;:6;:30;;;;562:1;557;552;548;:5;544:9;;;543:15;;;;;;:20;533:30;525:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;455:140;;;;:::o;322:127::-;374:6;415:1;409;405;:5;401:9;;;400:16;;392:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;322:127;;;;:::o;2668:847:7:-;2799:2;2779:23;;:8;:23;;:50;;;;;2826:2;2806:23;;:8;:23;;2779:50;2771:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2863:21;2912:5;2894:15;:23;;;;;;2863:55;;2928:18;2966;;;;;;;;;;;2949:14;:35;2928:56;;3035:1;3021:11;:15;;;:33;;;;;3053:1;3040:9;:14;;;;3021:33;:51;;;;;3071:1;3058:9;:14;;;;3021:51;3017:332;;;3225:11;3172:64;;3177:44;3211:9;3177:27;3194:9;3177:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;3172:50;;:64;3148:20;;:88;;;;;;;;;;;3327:11;3274:64;;3279:44;3313:9;3279:27;3296:9;3279:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;3274:50;;:64;3250:20;;:88;;;;;;;;;;;3017:332;3377:8;3358;;:28;;;;;;;;;;;;;;;;;;3415:8;3396;;:28;;;;;;;;;;;;;;;;;;3455:14;3434:18;;:35;;;;;;;;;;;;;;;;;;3484:24;3489:8;;;;;;;;;;;3499;;;;;;;;;;;3484:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:847;;;;;;:::o;1753:166:6:-;1861:5;1833:9;:16;1843:5;1833:16;;;;;;;;;;;;;;;:25;1850:7;1833:25;;;;;;;;;;;;;;;:33;;;;1897:7;1881:31;;1890:5;1881:31;;;1906:5;1881:31;;;;;;;;;;;;;;;;;;1753:166;;;:::o;1925:216::-;2018:26;2038:5;2018:9;:15;2028:4;2018:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;2000:9;:15;2010:4;2000:15;;;;;;;;;;;;;;;:44;;;;2070:24;2088:5;2070:9;:13;2080:2;2070:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;2054:9;:13;2064:2;2054:13;;;;;;;;;;;;;;;:40;;;;2124:2;2109:25;;2118:4;2109:25;;;2128:5;2109:25;;;;;;;;;;;;;;;;;;1925:216;;;:::o;3602:819:7:-;3675:10;3697:13;3731:7;;;;;;;;;;;3713:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3697:50;;3782:1;3765:19;;:5;:19;;;;3757:27;;3794:11;3808:5;;3794:19;;3842:5;3838:577;;;3877:1;3867:6;:11;3863:485;;3898:10;3911:41;3921:30;3941:9;3921:30;;3926:9;3921:15;;:19;;:30;;;;:::i;:::-;3911:9;:41::i;:::-;3898:54;;3970:14;3987:17;3997:6;3987:9;:17::i;:::-;3970:34;;4034:9;4026:5;:17;4022:312;;;4067:14;4084:37;4100:20;4110:9;4100:5;:9;;:20;;;;:::i;:::-;4084:11;;:15;;:37;;;;:::i;:::-;4067:54;;4143:16;4162:27;4179:9;4162:12;4172:1;4162:5;:9;;:12;;;;:::i;:::-;:16;;:27;;;;:::i;:::-;4143:46;;4211:14;4240:11;4228:9;:23;;;;;;4211:40;;4289:1;4277:9;:13;4273:42;;;4292:23;4298:5;4305:9;4292:5;:23::i;:::-;4273:42;4022:312;;;;3863:485;;;3838:577;;;4378:1;4368:6;:11;4364:51;;4403:1;4395:5;:9;;;;4364:51;3838:577;3602:819;;;;;;:::o;307:292:3:-;352:6;378:1;374;:5;370:223;;;399:1;395:5;;414:6;431:1;427;423;:5;;;;;;:9;414:18;;446:89;457:1;453;:5;446:89;;;482:1;478:5;;519:1;514;510;506;:5;;;;;;:9;505:15;;;;;;501:19;;446:89;;;370:223;;;;560:1;555;:6;551:42;;581:1;577:5;;551:42;370:223;307:292;;;:::o;1339:197:6:-;1411:22;1427:5;1411:11;;:15;;:22;;;;:::i;:::-;1397:11;:36;;;;1459:24;1477:5;1459:9;:13;1469:2;1459:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;1443:9;:13;1453:2;1443:13;;;;;;;;;;;;;;;:40;;;;1519:2;1498:31;;1515:1;1498:31;;;1523:5;1498:31;;;;;;;;;;;;;;;;;;1339:197;;:::o;98:94:3:-;150:6;176:1;172;:5;:13;;184:1;172:13;;;180:1;172:13;168:17;;98:94;;;;:::o;1542:205:6:-;1620:26;1640:5;1620:9;:15;1630:4;1620:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;1602:9;:15;1612:4;1602:15;;;;;;;;;;;;;;;:44;;;;1670:22;1686:5;1670:11;;:15;;:22;;;;:::i;:::-;1656:11;:36;;;;1730:1;1707:33;;1716:4;1707:33;;;1734:5;1707:33;;;;;;;;;;;;;;;;;;1542:205;;:::o;283:118:5:-;333:9;231:6;366:1;358:10;;:17;354:21;;283:118;;;:::o;469:106::-;529:9;566:1;558:10;;554:14;;:1;:14;;;;;;;;550:18;;469:106;;;;:::o;190:126:4:-;242:6;283:1;277;273;:5;269:9;;;268:16;;260:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;190:126;;;;:::o
Swarm Source
ipfs://6b97aa2244591f722e33d17bb5fc5340f99ff7957d0c41a78da084d96bdfa493
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.