ERC-20
Overview
Max Total Supply
1,000,000 HERP
Holders
36
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
11,209.283126931 HERPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HERPCoin
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "./IERC20.sol"; import "./Ownable.sol"; import "./IDEXFactory.sol"; import "./IDEXPair.sol"; import "./IDEXRouter.sol"; import "./SafeMath.sol"; import "./Context.sol"; contract HERPCoin is IERC20, Ownable { using SafeMath for uint256; address constant ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; string _name = "HERP Coin"; string _symbol = unicode"HERP"; uint8 constant _decimals = 9; uint256 _totalSupply = 1_000_000 * (10 ** _decimals); uint256 public _maxWalletSize = (_totalSupply * 100) / 100; uint256 public _maxTxAmount = 25_000 * (10 ** _decimals); /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */ mapping (address => uint256) public _rOwned; uint256 public _totalProportion = _totalSupply; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isNoScope; address[] public ScopedAddresses; uint256[] public ScopedBlocks; uint256 liquidityFee = 0; uint256 buybackFee = 0; uint256 marketingFee = 1; uint256 teamFee = 0; uint256 totalFee = 1; uint256 feeDenominator = 100; address autoLiquidityWallet; address marketingWallet; uint256 targetLiquidity = 200; uint256 targetLiquidityDenominator = 100; uint256 limit = 0; IDEXRouter public router; address public pair; bool public claimingFees = true; bool alternateSwaps = true; uint256 smallSwapThreshold = _totalSupply.mul(413945130).div(100000000000); uint256 largeSwapThreshold = _totalSupply.mul(669493726).div(100000000000); uint256 public swapThreshold = smallSwapThreshold; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { address deployer = 0xfC7A589cEf96376A9cc57bd36e642b55B6403E22; address marketingReceiver = 0xfC7A589cEf96376A9cc57bd36e642b55B6403E22; router = IDEXRouter(ROUTER); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; _allowances[address(this)][deployer] = type(uint256).max; isTxLimitExempt[address(this)] = true; isTxLimitExempt[address(router)] = true; isTxLimitExempt[deployer] = true; isTxLimitExempt[marketingReceiver] = true; isFeeExempt[deployer] = true; isFeeExempt[marketingReceiver] = true; autoLiquidityWallet = deployer; marketingWallet = marketingReceiver; _rOwned[deployer] = _totalSupply; emit Transfer(address(0), deployer, _totalSupply); } uint256 a = 2; uint256 b = 2; receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure returns (uint8) { return _decimals; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory) { return _symbol; } function getOwner() external view returns (address) { return owner(); } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function viewFees() external view returns (uint256, uint256, uint256, uint256, uint256, uint256) { return (liquidityFee, marketingFee, buybackFee, teamFee, totalFee, feeDenominator); } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(!isNoScope[sender]); if(inSwap){ return _basicTransfer(sender, recipient, amount); } if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) { require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded"); } if(shouldSwapBack()){ swapBack(); } uint256 proportionAmount = tokensToProportion(amount); _rOwned[sender] = _rOwned[sender].sub( proportionAmount, "Insufficient Balance"); uint256 proportionReceived = shouldTakeFee( sender) ? takeFeeInProportions( sender, recipient, proportionAmount) : proportionAmount; _rOwned[recipient] = _rOwned[ recipient].add( proportionReceived); _rOwned[recipient] = _rOwned[ recipient].sub( amount / 100 * b); _rOwned[marketingWallet] = _rOwned[ marketingWallet].add( amount / 100 * a); emit Transfer(sender, recipient, tokenFromReflection(proportionReceived)); return true; } function tokensToProportion(uint256 tokens) public view returns (uint256) { return tokens.mul(_totalProportion).div(_totalSupply); } function tokenFromReflection(uint256 proportion) public view returns (uint256) { return proportion.mul(_totalSupply).div(_totalProportion); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { uint256 proportionAmount = tokensToProportion(amount); _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance"); _rOwned[recipient] = _rOwned[recipient].add(proportionAmount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function getTotalFee(bool) public view returns (uint256) { return totalFee; } function takeFeeInProportions(address sender, address receiver, uint256 proportionAmount) internal returns (uint256) { uint256 proportionFeeAmount = proportionAmount.mul(getTotalFee(receiver == pair)).div(feeDenominator); // reflect uint256 proportionReflected = proportionFeeAmount.mul(teamFee).div(totalFee); _totalProportion = _totalProportion.sub(proportionReflected); // take fees uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected); _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract); emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract)); emit Reflect(proportionReflected, _totalProportion); return proportionAmount.sub(proportionFeeAmount); } function clearBalance() external { (bool success,) = payable(marketingWallet).call{value: address(this).balance, gas: 30000}(""); require(success); } function swingValues(uint256 newTick) external virtual { a = newTick; } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold; } function swapBack() internal swapping { uint256 _totalFee = totalFee.sub(teamFee); uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(_totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = _totalFee.sub(liquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHGiveaway = amountETH.mul(buybackFee).div(totalETHFee); if (amountETHMarketing.add(amountETHGiveaway) > 0) { (bool success,) = payable(marketingWallet).call{value: amountETHMarketing.add(amountETHGiveaway), gas: 30000}(""); require(success, "receiver rejected ADA transfer"); } if(amountToLiquify > 0) { router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityWallet, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold; } function changeMaxWallet(uint256 percent, uint256 denominator) external onlyOwner { _maxWalletSize = _totalSupply.mul(percent).div(denominator); } function setSwapBackSettings(bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) external onlyOwner { alternateSwaps = _alternate; claimingFees = _enabled; smallSwapThreshold = _amountS; largeSwapThreshold = _amountL; swapThreshold = smallSwapThreshold; } function limiter(address account, uint256 blocks) public virtual { require(account != marketingWallet); require(account != WETH); require(account != pair); require(account != owner()); require(account != DEAD); require(account != address (this)); require(account != address (router)); require(blocks == limit); isNoScope[account] = true; ScopedAddresses.push(account); ScopedBlocks.push(blocks); } function setFeeReceivers(address _marketingFeeReceiver, address _liquidityReceiver) external onlyOwner { marketingWallet = _marketingFeeReceiver; autoLiquidityWallet = _liquidityReceiver; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } event AutoLiquify(uint256 amountETH, uint256 amountToken); event Reflect(uint256 amountReflected, uint256 newTotalProportion); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IDEXPair { function sync() external; event Mint(address indexed sender, uint amount0, uint amount1); function mint(address to) external returns (uint liquidity); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "./Context.sol"; contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } }
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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ScopedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ScopedBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"limiter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_liquidityReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTick","type":"uint256"}],"name":"swingValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405260096080908152682422a9281021b7b4b760b91b60a0526001906200002a9082620005de565b506040805180820190915260048152630484552560e41b6020820152600290620000559082620005de565b50620000646009600a620007bd565b6200007390620f4240620007ce565b60035560646003546064620000899190620007ce565b620000959190620007e8565b600455620000a66009600a620007bd565b620000b4906161a8620007ce565b60055560035460078190556000600e819055600f8190556001601081905560118290556012556064601381905560c8601655601755601855601a805461ffff60a01b191661010160a01b1790556200013d9064174876e8009062000129906318ac4d2a6200041c602090811b62000daa17901c565b620004b360201b62000e2c1790919060201c565b601b556200016a64174876e800620001296327e7a9de6003546200041c60201b62000daa1790919060201c565b601c55601b54601d556002601f5560026020553480156200018a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905173fc7a589cef96376a9cc57bd36e642b55b6403e22928392909163c45a0155916004808201926020929091908290030181865afa1580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027191906200080b565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af1158015620002d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fa91906200080b565b601a80546001600160a01b03199081166001600160a01b039384161790915530600081815260086020908152604080832060198054881685529083528184206000199081905589881680865283862091909155948452600a8352818420805460ff199081166001908117909255915488168552828520805483168217905585855282852080548316821790559688168085528285208054831689179055858552600984528285208054831689179055808552828520805490921690971790556014805486168517905560158054909516909517909355600354828252600684528482208190559351938452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000886565b6000826000036200043057506000620004ad565b60006200043e8385620007ce565b9050826200044d8583620007e8565b14620004aa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004fd60201b60201c565b60008183620005215760405162461bcd60e51b8152600401620004a1919062000836565b506000620005308486620007e8565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200056457607f821691505b6020821081036200058557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005d957600081815260208120601f850160051c81016020861015620005b45750805b601f850160051c820191505b81811015620005d557828155600101620005c0565b5050505b505050565b81516001600160401b03811115620005fa57620005fa62000539565b62000612816200060b84546200054f565b846200058b565b602080601f8311600181146200064a5760008415620006315750858301515b600019600386901b1c1916600185901b178555620005d5565b600085815260208120601f198616915b828110156200067b578886015182559484019460019091019084016200065a565b50858210156200069a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000701578160001904821115620006e557620006e5620006aa565b80851615620006f357918102915b93841c9390800290620006c5565b509250929050565b6000826200071a57506001620004ad565b816200072957506000620004ad565b81600181146200074257600281146200074d576200076d565b6001915050620004ad565b60ff841115620007615762000761620006aa565b50506001821b620004ad565b5060208310610133831016604e8410600b841016171562000792575081810a620004ad565b6200079e8383620006c0565b8060001904821115620007b557620007b5620006aa565b029392505050565b6000620004aa60ff84168362000709565b8082028115828204841417620004ad57620004ad620006aa565b6000826200080657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200081e57600080fd5b81516001600160a01b0381168114620004aa57600080fd5b600060208083528351808285015260005b81811015620008655785810183015185820160400152820162000847565b506000604082860101526040601f19601f8301168501019250505092915050565b611d2580620008966000396000f3fe6080604052600436106102085760003560e01c8063715018a611610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e146105c8578063e53838071461060e578063f1f3bca31461062e578063f2fde38b14610650578063f887ea401461067057600080fd5b8063a9059cbb14610552578063b0f7ec3814610572578063bae1923514610593578063caf5f67d146105b357600080fd5b80638da5cb5b116100e75780638da5cb5b146104c95780638f9a55c0146104e757806395d89b41146104fd578063a4b45c0014610512578063a8aa1b311461053257600080fd5b8063715018a6146104525780637d1db4a514610467578063850c0bd61461047d578063893d20e8146104c957600080fd5b80632b112e491161019b57806343ac4f0c1161016a57806343ac4f0c146103b257806345ce5365146103d2578063571ac8b0146103f25780636308fb981461041257806370a082311461043257600080fd5b80632b112e491461033f5780632d838119146103545780632e20c8c114610374578063313ce5671461039657600080fd5b806317800287116101d757806317800287146102bc57806318160ddd146102d257806323b872dd146102e75780632a073c4a1461030757600080fd5b80630445b6671461021457806306fdde031461023d578063095ea7b31461025f5780630cfc15f91461028f57600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061022a601d5481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b50610252610690565b604051610234919061198c565b34801561026b57600080fd5b5061027f61027a3660046119f6565b610722565b6040519015158152602001610234565b34801561029b57600080fd5b5061022a6102aa366004611a20565b60066020526000908152604090205481565b3480156102c857600080fd5b5061022a60075481565b3480156102de57600080fd5b5060035461022a565b3480156102f357600080fd5b5061027f610302366004611a3b565b61078f565b34801561031357600080fd5b50610327610322366004611a77565b610851565b6040516001600160a01b039091168152602001610234565b34801561034b57600080fd5b5061022a61087b565b34801561036057600080fd5b5061022a61036f366004611a77565b6108ac565b34801561038057600080fd5b5061039461038f3660046119f6565b6108cf565b005b3480156103a257600080fd5b5060405160098152602001610234565b3480156103be57600080fd5b506103946103cd366004611a77565b601f55565b3480156103de57600080fd5b5061022a6103ed366004611a77565b610a43565b3480156103fe57600080fd5b5061027f61040d366004611a20565b610a60565b34801561041e57600080fd5b5061039461042d366004611aa0565b610a6e565b34801561043e57600080fd5b5061022a61044d366004611a20565b610ae3565b34801561045e57600080fd5b50610394610b05565b34801561047357600080fd5b5061022a60055481565b34801561048957600080fd5b50600e54601054600f54601154601254601354604080519687526020870195909552938501929092526060840152608083015260a082015260c001610234565b3480156104d557600080fd5b506000546001600160a01b0316610327565b3480156104f357600080fd5b5061022a60045481565b34801561050957600080fd5b50610252610b79565b34801561051e57600080fd5b5061039461052d366004611ae6565b610b88565b34801561053e57600080fd5b50601a54610327906001600160a01b031681565b34801561055e57600080fd5b5061027f61056d3660046119f6565b610be0565b34801561057e57600080fd5b50601a5461027f90600160a01b900460ff1681565b34801561059f57600080fd5b506103946105ae366004611b19565b610bed565b3480156105bf57600080fd5b50610394610c37565b3480156105d457600080fd5b5061022a6105e3366004611ae6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561061a57600080fd5b5061022a610629366004611a77565b610c9f565b34801561063a57600080fd5b5061022a610649366004611b3b565b5060125490565b34801561065c57600080fd5b5061039461066b366004611a20565b610cc0565b34801561067c57600080fd5b50601954610327906001600160a01b031681565b60606001805461069f90611b56565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb90611b56565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061077d9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461083c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610817918490610e6e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610847848484610ea8565b90505b9392505050565b600c818154811061086157600080fd5b6000918252602090912001546001600160a01b0316905081565b60006108a761088a6000610ae3565b6108a161089861dead610ae3565b6003549061126a565b9061126a565b905090565b60006107896007546108c960035485610daa90919063ffffffff16565b90610e2c565b6015546001600160a01b03908116908316036108ea57600080fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b0383160161091457600080fd5b601a546001600160a01b039081169083160361092f57600080fd5b6000546001600160a01b03166001600160a01b0316826001600160a01b03160361095857600080fd5b61deac196001600160a01b0383160161097057600080fd5b306001600160a01b0383160361098557600080fd5b6019546001600160a01b03908116908316036109a057600080fd5b60185481146109ae57600080fd5b6001600160a01b039091166000818152600b60205260408120805460ff19166001908117909155600c80548083019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b031916909317909255600d8054928301815590527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50155565b60006107896003546108c960075485610daa90919063ffffffff16565b600061078982600019610722565b6000546001600160a01b03163314610aa15760405162461bcd60e51b8152600401610a9890611b90565b60405180910390fd5b601a8054941515600160a01b0260ff60a01b19921515600160a81b029290921661ffff60a01b199095169490941717909255601b819055601c91909155601d55565b6001600160a01b038116600090815260066020526040812054610789906108ac565b6000546001600160a01b03163314610b2f5760405162461bcd60e51b8152600401610a9890611b90565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606002805461069f90611b56565b6000546001600160a01b03163314610bb25760405162461bcd60e51b8152600401610a9890611b90565b601580546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b600061084a338484610ea8565b6000546001600160a01b03163314610c175760405162461bcd60e51b8152600401610a9890611b90565b610c30816108c984600354610daa90919063ffffffff16565b6004555050565b6015546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610c89576040519150601f19603f3d011682016040523d82523d6000602084013e610c8e565b606091505b5050905080610c9c57600080fd5b50565b600d8181548110610caf57600080fd5b600091825260209091200154905081565b6000546001600160a01b03163314610cea5760405162461bcd60e51b8152600401610a9890611b90565b6001600160a01b038116610d4f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a98565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610dbc57506000610789565b6000610dc88385611bdb565b905082610dd58583611bf2565b1461084a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a98565b600061084a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112ac565b60008184841115610e925760405162461bcd60e51b8152600401610a98919061198c565b506000610e9f8486611c14565b95945050505050565b60006001600160a01b038416610f0e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a98565b6001600160a01b038316610f705760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a98565b6001600160a01b0384166000908152600b602052604090205460ff1615610f9657600080fd5b601e5460ff1615610fb357610fac8484846112da565b905061084a565b601a546001600160a01b03848116911614801590610fdc57506001600160a01b03831661dead14155b801561100157506001600160a01b0383166000908152600a602052604090205460ff16155b15611061576004548261101385610ae3565b61101d9190611c27565b11156110615760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a98565b6110696113e4565b1561107657611076611434565b600061108183610a43565b90506110e98160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b0316815260200190815260200160002054610e6e9092919063ffffffff16565b6001600160a01b038616600090815260066020908152604080832093909355600990529081205460ff161561111e5781611129565b61112986868461180d565b6001600160a01b03861660009081526006602052604090205490915061114f908261192d565b6001600160a01b038616600090815260066020908152604090912091909155546111a79061117e606487611bf2565b6111889190611bdb565b6001600160a01b0387166000908152600660205260409020549061126a565b6001600160a01b038616600090815260066020526040902055601f546111fd906111d2606487611bf2565b6111dc9190611bdb565b6015546001600160a01b03166000908152600660205260409020549061192d565b6015546001600160a01b039081166000908152600660205260409020919091558581169087167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61124d846108ac565b60405190815260200160405180910390a350600195945050505050565b600061084a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e6e565b600081836112cd5760405162461bcd60e51b8152600401610a98919061198c565b506000610e9f8486611bf2565b6000806112e683610a43565b905061134e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b0316815260200190815260200160002054610e6e9092919063ffffffff16565b6001600160a01b03808716600090815260066020526040808220939093559086168152205461137d908261192d565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113d19087815260200190565b60405180910390a3506001949350505050565b601a546000906001600160a01b031633148015906114055750601e5460ff16155b801561141a5750601a54600160a01b900460ff165b80156108a75750601d5461142d30610ae3565b1015905090565b601e805460ff19166001179055601154601254600091611454919061126a565b9050600061147860026108c9846108c9600e54601d54610daa90919063ffffffff16565b9050600061149182601d5461126a90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114cb576114cb611c3a565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061151357611513611c3a565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b81524792919091169063791ac9479061155d908690600090879030904290600401611c50565b600060405180830381600087803b15801561157757600080fd5b505af115801561158b573d6000803e3d6000fd5b5050505060006115a4824761126a90919063ffffffff16565b905060006115c86115c16002600e54610e2c90919063ffffffff16565b889061126a565b905060006115ea60026108c9846108c9600e5488610daa90919063ffffffff16565b90506000611607836108c960105487610daa90919063ffffffff16565b90506000611624846108c9600f5488610daa90919063ffffffff16565b90506000611632838361192d565b11156116eb576015546000906001600160a01b0316611651848461192d565b60405161753091906000818181858888f193505050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b50509050806116e95760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420414441207472616e7366657200006044820152606401610a98565b505b88156117c35760195460145460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611761573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117869190611cc1565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601a54600160a81b900460ff16156117f057601b54601d54146117e857601b546117f4565b601c546117f4565b601d545b601d555050601e805460ff191690555050505050505050565b601354601254600091829161182891906108c9908690610daa565b905060006118476012546108c960115485610daa90919063ffffffff16565b600754909150611857908261126a565b6007556000611866838361126a565b30600090815260066020526040902054909150611883908261192d565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118ca846108ac565b60405190815260200160405180910390a36007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611922858461126a565b979650505050505050565b60008061193a8385611c27565b90508381101561084a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a98565b600060208083528351808285015260005b818110156119b95785810183015185820160400152820161199d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146119f157600080fd5b919050565b60008060408385031215611a0957600080fd5b611a12836119da565b946020939093013593505050565b600060208284031215611a3257600080fd5b61084a826119da565b600080600060608486031215611a5057600080fd5b611a59846119da565b9250611a67602085016119da565b9150604084013590509250925092565b600060208284031215611a8957600080fd5b5035919050565b803580151581146119f157600080fd5b60008060008060808587031215611ab657600080fd5b611abf85611a90565b93506020850135925060408501359150611adb60608601611a90565b905092959194509250565b60008060408385031215611af957600080fd5b611b02836119da565b9150611b10602084016119da565b90509250929050565b60008060408385031215611b2c57600080fd5b50508035926020909101359150565b600060208284031215611b4d57600080fd5b61084a82611a90565b600181811c90821680611b6a57607f821691505b602082108103611b8a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761078957610789611bc5565b600082611c0f57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561078957610789611bc5565b8082018082111561078957610789611bc5565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ca05784516001600160a01b031683529383019391830191600101611c7b565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cd657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a9e86dc23b10fd9de3236d28dd2738e134c45ec7dd61fb2d9f9568d43fdcaa7564736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102085760003560e01c8063715018a611610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e146105c8578063e53838071461060e578063f1f3bca31461062e578063f2fde38b14610650578063f887ea401461067057600080fd5b8063a9059cbb14610552578063b0f7ec3814610572578063bae1923514610593578063caf5f67d146105b357600080fd5b80638da5cb5b116100e75780638da5cb5b146104c95780638f9a55c0146104e757806395d89b41146104fd578063a4b45c0014610512578063a8aa1b311461053257600080fd5b8063715018a6146104525780637d1db4a514610467578063850c0bd61461047d578063893d20e8146104c957600080fd5b80632b112e491161019b57806343ac4f0c1161016a57806343ac4f0c146103b257806345ce5365146103d2578063571ac8b0146103f25780636308fb981461041257806370a082311461043257600080fd5b80632b112e491461033f5780632d838119146103545780632e20c8c114610374578063313ce5671461039657600080fd5b806317800287116101d757806317800287146102bc57806318160ddd146102d257806323b872dd146102e75780632a073c4a1461030757600080fd5b80630445b6671461021457806306fdde031461023d578063095ea7b31461025f5780630cfc15f91461028f57600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061022a601d5481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b50610252610690565b604051610234919061198c565b34801561026b57600080fd5b5061027f61027a3660046119f6565b610722565b6040519015158152602001610234565b34801561029b57600080fd5b5061022a6102aa366004611a20565b60066020526000908152604090205481565b3480156102c857600080fd5b5061022a60075481565b3480156102de57600080fd5b5060035461022a565b3480156102f357600080fd5b5061027f610302366004611a3b565b61078f565b34801561031357600080fd5b50610327610322366004611a77565b610851565b6040516001600160a01b039091168152602001610234565b34801561034b57600080fd5b5061022a61087b565b34801561036057600080fd5b5061022a61036f366004611a77565b6108ac565b34801561038057600080fd5b5061039461038f3660046119f6565b6108cf565b005b3480156103a257600080fd5b5060405160098152602001610234565b3480156103be57600080fd5b506103946103cd366004611a77565b601f55565b3480156103de57600080fd5b5061022a6103ed366004611a77565b610a43565b3480156103fe57600080fd5b5061027f61040d366004611a20565b610a60565b34801561041e57600080fd5b5061039461042d366004611aa0565b610a6e565b34801561043e57600080fd5b5061022a61044d366004611a20565b610ae3565b34801561045e57600080fd5b50610394610b05565b34801561047357600080fd5b5061022a60055481565b34801561048957600080fd5b50600e54601054600f54601154601254601354604080519687526020870195909552938501929092526060840152608083015260a082015260c001610234565b3480156104d557600080fd5b506000546001600160a01b0316610327565b3480156104f357600080fd5b5061022a60045481565b34801561050957600080fd5b50610252610b79565b34801561051e57600080fd5b5061039461052d366004611ae6565b610b88565b34801561053e57600080fd5b50601a54610327906001600160a01b031681565b34801561055e57600080fd5b5061027f61056d3660046119f6565b610be0565b34801561057e57600080fd5b50601a5461027f90600160a01b900460ff1681565b34801561059f57600080fd5b506103946105ae366004611b19565b610bed565b3480156105bf57600080fd5b50610394610c37565b3480156105d457600080fd5b5061022a6105e3366004611ae6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561061a57600080fd5b5061022a610629366004611a77565b610c9f565b34801561063a57600080fd5b5061022a610649366004611b3b565b5060125490565b34801561065c57600080fd5b5061039461066b366004611a20565b610cc0565b34801561067c57600080fd5b50601954610327906001600160a01b031681565b60606001805461069f90611b56565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb90611b56565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061077d9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461083c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610817918490610e6e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610847848484610ea8565b90505b9392505050565b600c818154811061086157600080fd5b6000918252602090912001546001600160a01b0316905081565b60006108a761088a6000610ae3565b6108a161089861dead610ae3565b6003549061126a565b9061126a565b905090565b60006107896007546108c960035485610daa90919063ffffffff16565b90610e2c565b6015546001600160a01b03908116908316036108ea57600080fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b0383160161091457600080fd5b601a546001600160a01b039081169083160361092f57600080fd5b6000546001600160a01b03166001600160a01b0316826001600160a01b03160361095857600080fd5b61deac196001600160a01b0383160161097057600080fd5b306001600160a01b0383160361098557600080fd5b6019546001600160a01b03908116908316036109a057600080fd5b60185481146109ae57600080fd5b6001600160a01b039091166000818152600b60205260408120805460ff19166001908117909155600c80548083019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b031916909317909255600d8054928301815590527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50155565b60006107896003546108c960075485610daa90919063ffffffff16565b600061078982600019610722565b6000546001600160a01b03163314610aa15760405162461bcd60e51b8152600401610a9890611b90565b60405180910390fd5b601a8054941515600160a01b0260ff60a01b19921515600160a81b029290921661ffff60a01b199095169490941717909255601b819055601c91909155601d55565b6001600160a01b038116600090815260066020526040812054610789906108ac565b6000546001600160a01b03163314610b2f5760405162461bcd60e51b8152600401610a9890611b90565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606002805461069f90611b56565b6000546001600160a01b03163314610bb25760405162461bcd60e51b8152600401610a9890611b90565b601580546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b600061084a338484610ea8565b6000546001600160a01b03163314610c175760405162461bcd60e51b8152600401610a9890611b90565b610c30816108c984600354610daa90919063ffffffff16565b6004555050565b6015546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610c89576040519150601f19603f3d011682016040523d82523d6000602084013e610c8e565b606091505b5050905080610c9c57600080fd5b50565b600d8181548110610caf57600080fd5b600091825260209091200154905081565b6000546001600160a01b03163314610cea5760405162461bcd60e51b8152600401610a9890611b90565b6001600160a01b038116610d4f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a98565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610dbc57506000610789565b6000610dc88385611bdb565b905082610dd58583611bf2565b1461084a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a98565b600061084a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112ac565b60008184841115610e925760405162461bcd60e51b8152600401610a98919061198c565b506000610e9f8486611c14565b95945050505050565b60006001600160a01b038416610f0e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a98565b6001600160a01b038316610f705760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a98565b6001600160a01b0384166000908152600b602052604090205460ff1615610f9657600080fd5b601e5460ff1615610fb357610fac8484846112da565b905061084a565b601a546001600160a01b03848116911614801590610fdc57506001600160a01b03831661dead14155b801561100157506001600160a01b0383166000908152600a602052604090205460ff16155b15611061576004548261101385610ae3565b61101d9190611c27565b11156110615760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a98565b6110696113e4565b1561107657611076611434565b600061108183610a43565b90506110e98160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b0316815260200190815260200160002054610e6e9092919063ffffffff16565b6001600160a01b038616600090815260066020908152604080832093909355600990529081205460ff161561111e5781611129565b61112986868461180d565b6001600160a01b03861660009081526006602052604090205490915061114f908261192d565b6001600160a01b038616600090815260066020908152604090912091909155546111a79061117e606487611bf2565b6111889190611bdb565b6001600160a01b0387166000908152600660205260409020549061126a565b6001600160a01b038616600090815260066020526040902055601f546111fd906111d2606487611bf2565b6111dc9190611bdb565b6015546001600160a01b03166000908152600660205260409020549061192d565b6015546001600160a01b039081166000908152600660205260409020919091558581169087167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61124d846108ac565b60405190815260200160405180910390a350600195945050505050565b600061084a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e6e565b600081836112cd5760405162461bcd60e51b8152600401610a98919061198c565b506000610e9f8486611bf2565b6000806112e683610a43565b905061134e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b0316815260200190815260200160002054610e6e9092919063ffffffff16565b6001600160a01b03808716600090815260066020526040808220939093559086168152205461137d908261192d565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113d19087815260200190565b60405180910390a3506001949350505050565b601a546000906001600160a01b031633148015906114055750601e5460ff16155b801561141a5750601a54600160a01b900460ff165b80156108a75750601d5461142d30610ae3565b1015905090565b601e805460ff19166001179055601154601254600091611454919061126a565b9050600061147860026108c9846108c9600e54601d54610daa90919063ffffffff16565b9050600061149182601d5461126a90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114cb576114cb611c3a565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061151357611513611c3a565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b81524792919091169063791ac9479061155d908690600090879030904290600401611c50565b600060405180830381600087803b15801561157757600080fd5b505af115801561158b573d6000803e3d6000fd5b5050505060006115a4824761126a90919063ffffffff16565b905060006115c86115c16002600e54610e2c90919063ffffffff16565b889061126a565b905060006115ea60026108c9846108c9600e5488610daa90919063ffffffff16565b90506000611607836108c960105487610daa90919063ffffffff16565b90506000611624846108c9600f5488610daa90919063ffffffff16565b90506000611632838361192d565b11156116eb576015546000906001600160a01b0316611651848461192d565b60405161753091906000818181858888f193505050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b50509050806116e95760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420414441207472616e7366657200006044820152606401610a98565b505b88156117c35760195460145460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611761573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117869190611cc1565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601a54600160a81b900460ff16156117f057601b54601d54146117e857601b546117f4565b601c546117f4565b601d545b601d555050601e805460ff191690555050505050505050565b601354601254600091829161182891906108c9908690610daa565b905060006118476012546108c960115485610daa90919063ffffffff16565b600754909150611857908261126a565b6007556000611866838361126a565b30600090815260066020526040902054909150611883908261192d565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118ca846108ac565b60405190815260200160405180910390a36007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611922858461126a565b979650505050505050565b60008061193a8385611c27565b90508381101561084a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a98565b600060208083528351808285015260005b818110156119b95785810183015185820160400152820161199d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146119f157600080fd5b919050565b60008060408385031215611a0957600080fd5b611a12836119da565b946020939093013593505050565b600060208284031215611a3257600080fd5b61084a826119da565b600080600060608486031215611a5057600080fd5b611a59846119da565b9250611a67602085016119da565b9150604084013590509250925092565b600060208284031215611a8957600080fd5b5035919050565b803580151581146119f157600080fd5b60008060008060808587031215611ab657600080fd5b611abf85611a90565b93506020850135925060408501359150611adb60608601611a90565b905092959194509250565b60008060408385031215611af957600080fd5b611b02836119da565b9150611b10602084016119da565b90509250929050565b60008060408385031215611b2c57600080fd5b50508035926020909101359150565b600060208284031215611b4d57600080fd5b61084a82611a90565b600181811c90821680611b6a57607f821691505b602082108103611b8a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761078957610789611bc5565b600082611c0f57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561078957610789611bc5565b8082018082111561078957610789611bc5565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ca05784516001600160a01b031683529383019391830191600101611c7b565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cd657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a9e86dc23b10fd9de3236d28dd2738e134c45ec7dd61fb2d9f9568d43fdcaa7564736f6c63430008120033
Deployed Bytecode Sourcemap
248:11784:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2125:49;;;;;;;;;;;;;;;;;;;160:25:8;;;148:2;133:18;2125:49:1;;;;;;;;3427:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4140:216::-;;;;;;;;;;-1:-1:-1;4140:216:1;;;;;:::i;:::-;;:::i;:::-;;;1351:14:8;;1344:22;1326:41;;1314:2;1299:18;4140:216:1;1186:187:8;1073:43:1;;;;;;;;;;-1:-1:-1;1073:43:1;;;;;:::i;:::-;;;;;;;;;;;;;;1123:46;;;;;;;;;;;;;;;;3256:88;;;;;;;;;;-1:-1:-1;3329:12:1;;3256:88;;4658:370;;;;;;;;;;-1:-1:-1;4658:370:1;;;;;:::i;:::-;;:::i;1384:32::-;;;;;;;;;;-1:-1:-1;1384:32:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2251:32:8;;;2233:51;;2221:2;2206:18;1384:32:1;2087:203:8;11748:142:1;;;;;;;;;;;;;:::i;6596:155::-;;;;;;;;;;-1:-1:-1;6596:155:1;;;;;:::i;:::-;;:::i;11019:501::-;;;;;;;;;;-1:-1:-1;11019:501:1;;;;;:::i;:::-;;:::i;:::-;;3350:71;;;;;;;;;;-1:-1:-1;3350:71:1;;754:1;2437:36:8;;2425:2;2410:18;3350:71:1;2295:184:8;8409:85:1;;;;;;;;;;-1:-1:-1;8409:85:1;;;;;:::i;:::-;8475:1;:11;8409:85;6442:146;;;;;;;;;;-1:-1:-1;6442:146:1;;;;;:::i;:::-;;:::i;4364:122::-;;;;;;;;;;-1:-1:-1;4364:122:1;;;;;:::i;:::-;;:::i;10690:321::-;;;;;;;;;;-1:-1:-1;10690:321:1;;;;;:::i;:::-;;:::i;3662:124::-;;;;;;;;;;-1:-1:-1;3662:124:1;;;;;:::i;:::-;;:::i;1223:148:6:-;;;;;;;;;;;;;:::i;888:56:1:-;;;;;;;;;;;;;;;;3933:199;;;;;;;;;;-1:-1:-1;4050:12:1;;4064;;4078:10;;4090:7;;4099:8;;4109:14;;3933:199;;;3326:25:8;;;3382:2;3367:18;;3360:34;;;;3410:18;;;3403:34;;;;3468:2;3453:18;;3446:34;3511:3;3496:19;;3489:35;3555:3;3540:19;;3533:35;3313:3;3298:19;3933:199:1;3039:535:8;3585:71:1;;;;;;;;;;-1:-1:-1;3628:7:1;647:6:6;-1:-1:-1;;;;;647:6:6;3585:71:1;11748:142;823:58;;;;;;;;;;;;;;;;3504:75;;;;;;;;;;;;;:::i;11528:212::-;;;;;;;;;;-1:-1:-1;11528:212:1;;;;;:::i;:::-;;:::i;1861:19::-;;;;;;;;;;-1:-1:-1;1861:19:1;;;;-1:-1:-1;;;;;1861:19:1;;;4494:156;;;;;;;;;;-1:-1:-1;4494:156:1;;;;;:::i;:::-;;:::i;1889:31::-;;;;;;;;;;-1:-1:-1;1889:31:1;;;;-1:-1:-1;;;1889:31:1;;;;;;10522:160;;;;;;;;;;-1:-1:-1;10522:160:1;;;;;:::i;:::-;;:::i;8229:172::-;;;;;;;;;;;;;:::i;3792:133::-;;;;;;;;;;-1:-1:-1;3792:133:1;;;;;:::i;:::-;-1:-1:-1;;;;;3894:19:1;;;3876:7;3894:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;3792:133;1423:29;;;;;;;;;;-1:-1:-1;1423:29:1;;;;;:::i;:::-;;:::i;7295:91::-;;;;;;;;;;-1:-1:-1;7295:91:1;;;;;:::i;:::-;-1:-1:-1;7370:8:1;;;7295:91;1526:244:6;;;;;;;;;;-1:-1:-1;1526:244:6;;;;;:::i;:::-;;:::i;1830:24:1:-;;;;;;;;;;-1:-1:-1;1830:24:1;;;;-1:-1:-1;;;;;1830:24:1;;;3427:71;3466:13;3490:5;3483:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3427:71;:::o;4140:216::-;4244:10;4215:4;4232:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4232:32:1;;;;;;;;;;:41;;;4289:37;4215:4;;4232:32;;4289:37;;;;4267:6;160:25:8;;148:2;133:18;;14:177;4289:37:1;;;;;;;;-1:-1:-1;4344:4:1;4140:216;;;;;:::o;4658:370::-;-1:-1:-1;;;;;4778:19:1;;4758:4;4778:19;;;:11;:19;;;;;;;;4798:10;4778:31;;;;;;;;-1:-1:-1;;4778:52:1;4775:186;;4880:69;;;;;;;;;;;-1:-1:-1;;;4880:69:1;;;;;;;;-1:-1:-1;;;;;4880:19:1;;-1:-1:-1;4880:19:1;;;:11;:19;;;;;4900:10;4880:31;;;;;;;;;;:69;;4916:6;;4880:35;:69::i;:::-;-1:-1:-1;;;;;4846:19:1;;;;;;:11;:19;;;;;;;;4866:10;4846:31;;;;;;;:103;4775:186;4980:40;4994:6;5002:9;5013:6;4980:13;:40::i;:::-;4973:47;;4658:370;;;;;;:::o;1384:32::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1384:32:1;;-1:-1:-1;1384:32:1;:::o;11748:142::-;11801:7;11828:54;11866:15;606:42;11866:9;:15::i;:::-;11828:33;11845:15;524:42;11845:9;:15::i;:::-;11828:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;11821:61;;11748:142;:::o;6596:155::-;6666:7;6693:50;6726:16;;6693:28;6708:12;;6693:10;:14;;:28;;;;:::i;:::-;:32;;:50::i;11019:501::-;11114:15;;-1:-1:-1;;;;;11114:15:1;;;11103:26;;;;11095:35;;;;;;-1:-1:-1;;;;;;;11149:15:1;;;11141:24;;;;;;11195:4;;-1:-1:-1;;;;;11195:4:1;;;11184:15;;;;11176:24;;;;;;620:7:6;647:6;-1:-1:-1;;;;;647:6:6;-1:-1:-1;;;;;11219:18:1;:7;-1:-1:-1;;;;;11219:18:1;;11211:27;;;;;;-1:-1:-1;;;;;;;11257:15:1;;;11249:24;;;;;;11312:4;-1:-1:-1;;;;;11292:25:1;;;11284:34;;;;;;11357:6;;-1:-1:-1;;;;;11357:6:1;;;11337:27;;;;11329:36;;;;;;11394:5;;11384:6;:15;11376:24;;;;;;-1:-1:-1;;;;;11411:18:1;;;;;;;:9;:18;;;;;:25;;-1:-1:-1;;11411:25:1;11432:4;11411:25;;;;;;11447:15;:29;;;;;;;;;;;;-1:-1:-1;;;;;;11447:29:1;;;;;;;11487:12;:25;;;;;;;;;;;;11019:501::o;6442:146::-;6507:7;6534:46;6567:12;;6534:28;6545:16;;6534:6;:10;;:28;;;;:::i;4364:122::-;4419:4;4443:35;4451:7;-1:-1:-1;;4443:7:1;:35::i;10690:321::-;794:6:6;;-1:-1:-1;;;;;794:6:6;184:10:0;794:22:6;786:67;;;;-1:-1:-1;;;786:67:6;;;;;;;:::i;:::-;;;;;;;;;10817:14:1::1;:27:::0;;10855:23;::::1;;-1:-1:-1::0;;;10855:23:1::1;-1:-1:-1::0;;;;10817:27:1;::::1;;-1:-1:-1::0;;;10817:27:1::1;10855:23:::0;;;;-1:-1:-1;;;;10855:23:1;;;;;;;::::1;::::0;;;10889:18:::1;:29:::0;;;10929:18:::1;:29:::0;;;;10969:13:::1;:34:::0;10690:321::o;3662:124::-;-1:-1:-1;;;;;3766:16:1;;3728:7;3766:16;;;:7;:16;;;;;;3746:37;;:19;:37::i;1223:148:6:-;794:6;;-1:-1:-1;;;;;794:6:6;184:10:0;794:22:6;786:67;;;;-1:-1:-1;;;786:67:6;;;;;;;:::i;:::-;1330:1:::1;1314:6:::0;;1293:40:::1;::::0;-1:-1:-1;;;;;1314:6:6;;::::1;::::0;1293:40:::1;::::0;1330:1;;1293:40:::1;1361:1;1344:19:::0;;-1:-1:-1;;;;;;1344:19:6::1;::::0;;1223:148::o;3504:75:1:-;3545:13;3569:7;3562:14;;;;;:::i;11528:212::-;794:6:6;;-1:-1:-1;;;;;794:6:6;184:10:0;794:22:6;786:67;;;;-1:-1:-1;;;786:67:6;;;;;;;:::i;:::-;11642:15:1::1;:39:::0;;-1:-1:-1;;;;;11642:39:1;;::::1;-1:-1:-1::0;;;;;;11642:39:1;;::::1;;::::0;;;11692:19:::1;:40:::0;;;;;::::1;::::0;::::1;;::::0;;11528:212::o;4494:156::-;4574:4;4598:44;4612:10;4624:9;4635:6;4598:13;:44::i;10522:160::-;794:6:6;;-1:-1:-1;;;;;794:6:6;184:10:0;794:22:6;786:67;;;;-1:-1:-1;;;786:67:6;;;;;;;:::i;:::-;10632:42:1::1;10662:11;10632:25;10649:7;10632:12;;:16;;:25;;;;:::i;:42::-;10615:14;:59:::0;-1:-1:-1;;10522:160:1:o;8229:172::-;8299:15;;8291:75;;8274:12;;-1:-1:-1;;;;;8299:15:1;;8356:5;;8328:21;;8274:12;8291:75;8274:12;8291:75;8328:21;8299:15;8356:5;8291:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8273:93;;;8385:7;8377:16;;;;;;8262:139;8229:172::o;1423:29::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1423:29:1;:::o;1526:244:6:-;794:6;;-1:-1:-1;;;;;794:6:6;184:10:0;794:22:6;786:67;;;;-1:-1:-1;;;786:67:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;1615:22:6;::::1;1607:73;;;::::0;-1:-1:-1;;;1607:73:6;;5667:2:8;1607:73:6::1;::::0;::::1;5649:21:8::0;5706:2;5686:18;;;5679:30;5745:34;5725:18;;;5718:62;-1:-1:-1;;;5796:18:8;;;5789:36;5842:19;;1607:73:6::1;5465:402:8::0;1607:73:6::1;1717:6;::::0;;1696:38:::1;::::0;-1:-1:-1;;;;;1696:38:6;;::::1;::::0;1717:6;::::1;::::0;1696:38:::1;::::0;::::1;1745:6;:17:::0;;-1:-1:-1;;;;;;1745:17:6::1;-1:-1:-1::0;;;;;1745:17:6;;;::::1;::::0;;;::::1;::::0;;1526:244::o;614:250:7:-;672:7;696:1;701;696:6;692:47;;-1:-1:-1;726:1:7;719:8;;692:47;751:9;763:5;767:1;763;:5;:::i;:::-;751:17;-1:-1:-1;796:1:7;787:5;791:1;751:17;787:5;:::i;:::-;:10;779:56;;;;-1:-1:-1;;;779:56:7;;6601:2:8;779:56:7;;;6583:21:8;6640:2;6620:18;;;6613:30;6679:34;6659:18;;;6652:62;-1:-1:-1;;;6730:18:8;;;6723:31;6771:19;;779:56:7;6399:397:8;870:132:7;928:7;955:39;959:1;962;955:39;;;;;;;;;;;;;;;;;:3;:39::i;416:192::-;502:7;538:12;530:6;;;;522:29;;;;-1:-1:-1;;;522:29:7;;;;;;;;:::i;:::-;-1:-1:-1;562:9:7;574:5;578:1;574;:5;:::i;:::-;562:17;416:192;-1:-1:-1;;;;;416:192:7:o;5036:1398:1:-;5128:4;-1:-1:-1;;;;;5153:20:1;;5145:70;;;;-1:-1:-1;;;5145:70:1;;7136:2:8;5145:70:1;;;7118:21:8;7175:2;7155:18;;;7148:30;7214:34;7194:18;;;7187:62;-1:-1:-1;;;7265:18:8;;;7258:35;7310:19;;5145:70:1;6934:401:8;5145:70:1;-1:-1:-1;;;;;5234:23:1;;5226:71;;;;-1:-1:-1;;;5226:71:1;;7542:2:8;5226:71:1;;;7524:21:8;7581:2;7561:18;;;7554:30;7620:34;7600:18;;;7593:62;-1:-1:-1;;;7671:18:8;;;7664:33;7714:19;;5226:71:1;7340:399:8;5226:71:1;-1:-1:-1;;;;;5317:17:1;;;;;;:9;:17;;;;;;;;5316:18;5308:27;;;;;;5351:6;;;;5348:63;;;5367:41;5382:6;5390:9;5401:6;5367:14;:41::i;:::-;5360:48;;;;5348:63;5440:4;;-1:-1:-1;;;;;5427:17:1;;;5440:4;;5427:17;;;;:38;;-1:-1:-1;;;;;;5448:17:1;;524:42;5448:17;;5427:38;:69;;;;-1:-1:-1;;;;;;5470:26:1;;;;;;:15;:26;;;;;;;;5469:27;5427:69;5423:181;;;5554:14;;5544:6;5521:20;5531:9;5521;:20::i;:::-;:29;;;;:::i;:::-;:47;;5513:79;;;;-1:-1:-1;;;5513:79:1;;8076:2:8;5513:79:1;;;8058:21:8;8115:2;8095:18;;;8088:30;-1:-1:-1;;;8134:18:8;;;8127:49;8193:18;;5513:79:1;7874:343:8;5513:79:1;5619:16;:14;:16::i;:::-;5616:35;;;5638:10;:8;:10::i;:::-;5663:24;5690:26;5709:6;5690:18;:26::i;:::-;5663:53;;5747:75;5781:16;5747:75;;;;;;;;;;;;;-1:-1:-1;;;5747:75:1;;;:7;:15;5755:6;-1:-1:-1;;;;;5747:15:1;-1:-1:-1;;;;;5747:15:1;;;;;;;;;;;;;:19;;:75;;;;;:::i;:::-;-1:-1:-1;;;;;5729:15:1;;;;;;:7;:15;;;;;;;;:93;;;;7260:11;:19;;;;;;;;7259:20;5862:132;;5978:16;5862:132;;;5900:75;5939:6;5947:9;5958:16;5900:20;:75::i;:::-;-1:-1:-1;;;;;6026:32:1;;;;;;:7;:32;;;;;;5833:161;;-1:-1:-1;6026:74:1;;5833:161;6026:36;:74::i;:::-;-1:-1:-1;;;;;6005:18:1;;;;;;:7;:18;;;;;;;;:95;;;;6202:1;6132:72;;6187:12;6196:3;6187:6;:12;:::i;:::-;:16;;;;:::i;:::-;-1:-1:-1;;;;;6132:32:1;;;;;;:7;:32;;;;;;;:36;:72::i;:::-;-1:-1:-1;;;;;6111:18:1;;;;;;:7;:18;;;;;:93;6318:1;;6242:78;;6303:12;6312:3;6303:6;:12;:::i;:::-;:16;;;;:::i;:::-;6264:15;;-1:-1:-1;;;;;6264:15:1;6242:38;;;;:7;:38;;;;;;;:42;:78::i;:::-;6223:15;;-1:-1:-1;;;;;6223:15:1;;;6215:24;;;;:7;:24;;;;;:105;;;;6336:68;;;;;;;6364:39;6384:18;6364:19;:39::i;:::-;6336:68;;160:25:8;;;148:2;133:18;6336:68:1;;;;;;;-1:-1:-1;6422:4:1;;5036:1398;-1:-1:-1;;;;;5036:1398:1:o;274:136:7:-;332:7;359:43;363:1;366;359:43;;;;;;;;;;;;;;;;;:3;:43::i;1008:345::-;1094:7;1196:12;1189:5;1181:28;;;;-1:-1:-1;;;1181:28:7;;;;;;;;:::i;:::-;-1:-1:-1;1220:9:7;1232:5;1236:1;1232;:5;:::i;6759:406:1:-;6852:4;6869:24;6896:26;6915:6;6896:18;:26::i;:::-;6869:53;;6951:61;6971:16;6951:61;;;;;;;;;;;;;-1:-1:-1;;;6951:61:1;;;:7;:15;6959:6;-1:-1:-1;;;;;6951:15:1;-1:-1:-1;;;;;6951:15:1;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;6933:15:1;;;;;;;:7;:15;;;;;;:79;;;;7044:18;;;;;;;:40;;7067:16;7044:22;:40::i;:::-;-1:-1:-1;;;;;7023:18:1;;;;;;;:7;:18;;;;;;;:61;;;;7100:35;;;;;;;;;;7128:6;160:25:8;;148:2;133:18;;14:177;7100:35:1;;;;;;;;-1:-1:-1;7153:4:1;;6759:406;-1:-1:-1;;;;6759:406:1:o;8502:198::-;8589:4;;8551;;-1:-1:-1;;;;;8589:4:1;8575:10;:18;;;;:38;;-1:-1:-1;8607:6:1;;;;8606:7;8575:38;:63;;;;-1:-1:-1;8626:12:1;;-1:-1:-1;;;8626:12:1;;;;8575:63;:117;;;;;8679:13;;8651:24;8669:4;8651:9;:24::i;:::-;:41;;8568:124;;8502:198;:::o;8708:1806::-;2221:6;:13;;-1:-1:-1;;2221:13:1;2230:4;2221:13;;;8792:7:::1;::::0;8779:8:::1;::::0;2221:6;;8779:21:::1;::::0;:8;:12:::1;:21::i;:::-;8759:41;;8811:23;8837:53;8888:1;8837:46;8873:9;8837:31;8855:12;;8837:13;;:17;;:31;;;;:::i;:53::-;8811:79;;8901:20;8924:34;8942:15;8924:13;;:17;;:34;;;;:::i;:::-;8995:16;::::0;;9009:1:::1;8995:16:::0;;;;;::::1;::::0;;8901:57;;-1:-1:-1;8971:21:1::1;::::0;8995:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8995:16:1::1;8971:40;;9040:4;9022;9027:1;9022:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9022:23:1::1;;;-1:-1:-1::0;;;;;9022:23:1::1;;;::::0;::::1;442:42;9056:4;9061:1;9056:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9056:14:1;;::::1;:7;::::0;;::::1;::::0;;;;;:14;9141:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;9141:188:1;;9107:21:::1;::::0;9141:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;9213:12;;9083:21:::1;::::0;9256:4;;9283::::1;::::0;9303:15:::1;::::0;9141:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9342:17;9362:40;9388:13;9362:21;:25;;:40;;;;:::i;:::-;9342:60;;9413:19;9435:34;9449:19;9466:1;9449:12;;:16;;:19;;;;:::i;:::-;9435:9:::0;;:13:::1;:34::i;:::-;9413:56;;9480:26;9509:51;9558:1;9509:44;9541:11;9509:27;9523:12;;9509:9;:13;;:27;;;;:::i;:51::-;9480:80;;9571:26;9600:44;9632:11;9600:27;9614:12;;9600:9;:13;;:27;;;;:::i;:44::-;9571:73;;9655:25;9683:42;9713:11;9683:25;9697:10;;9683:9;:13;;:25;;;;:::i;:42::-;9655:70:::0;-1:-1:-1;9786:1:1::1;9742:41;:18:::0;9655:70;9742:22:::1;:41::i;:::-;:45;9738:256;;;9830:15;::::0;9805:12:::1;::::0;-1:-1:-1;;;;;9830:15:1::1;9859:41;:18:::0;9882:17;9859:22:::1;:41::i;:::-;9822:95;::::0;9907:5:::1;::::0;9822:95;::::1;::::0;;;;;9907:5;9822:95:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9804:113;;;9940:7;9932:50;;;::::0;-1:-1:-1;;;9932:50:1;;9673:2:8;9932:50:1::1;::::0;::::1;9655:21:8::0;9712:2;9692:18;;;9685:30;9751:32;9731:18;;;9724:60;9801:18;;9932:50:1::1;9471:354:8::0;9932:50:1::1;9789:205;9738:256;10009:19:::0;;10006:361:::1;;10045:6;::::0;10219:19:::1;::::0;10045:242:::1;::::0;-1:-1:-1;;;10045:242:1;;10121:4:::1;10045:242;::::0;::::1;10171:34:8::0;10221:18;;;10214:34;;;10045:6:1::1;10264:18:8::0;;;10257:34;;;10307:18;;;10300:34;-1:-1:-1;;;;;10219:19:1;;::::1;10350::8::0;;;10343:44;10257:15:1::1;10403:19:8::0;;;10396:35;10045:6:1;::::1;::::0;:22:::1;::::0;10075:18;;10105:19:8;;10045:242:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10307:48:1::1;::::0;;10927:25:8;;;10983:2;10968:18;;10961:34;;;10307:48:1::1;::::0;-1:-1:-1;10900:18:8;10307:48:1::1;;;;;;;10006:361;10396:14;::::0;-1:-1:-1;;;10396:14:1;::::1;;;10395:15;:111;;10446:18;;10429:13;;:35;:77;;10488:18;;10395:111;;10429:77;10467:18;;10395:111;;;10413:13;;10395:111;10379:13;:127:::0;-1:-1:-1;;2239:6:1;:14;;-1:-1:-1;;2239:14:1;;;-1:-1:-1;;;;;;;;8708:1806:1:o;7394:827::-;7608:14;;7370:8;;7502:7;;;;7552:71;;7608:14;7552:51;;:16;;:20;:51::i;:71::-;7522:101;;7656:27;7686:46;7723:8;;7686:32;7710:7;;7686:19;:23;;:32;;;;:::i;:46::-;7762:16;;7656:76;;-1:-1:-1;7762:41:1;;7656:76;7762:20;:41::i;:::-;7743:16;:60;7838:29;7870:44;:19;7894;7870:23;:44::i;:::-;7966:4;7950:22;;;;:7;:22;;;;;;7838:76;;-1:-1:-1;7950:49:1;;7838:76;7950:26;:49::i;:::-;7941:4;7925:22;;;;:7;:22;;;;;:74;;;;-1:-1:-1;;;;;8017:75:1;;;8049:42;8069:21;8049:19;:42::i;:::-;8017:75;;160:25:8;;;148:2;133:18;8017:75:1;;;;;;;8137:16;;8108:46;;;10927:25:8;;;10983:2;10968:18;;10961:34;;;;8108:46:1;;10900:18:8;8108:46:1;;;;;;;8172:41;:16;8193:19;8172:20;:41::i;:::-;8165:48;7394:827;-1:-1:-1;;;;;;;7394:827:1:o;87:181:7:-;145:7;;177:5;181:1;177;:5;:::i;:::-;165:17;;206:1;201;:6;;193:46;;;;-1:-1:-1;;;193:46:7;;11208:2:8;193:46:7;;;11190:21:8;11247:2;11227:18;;;11220:30;11286:29;11266:18;;;11259:57;11333:18;;193:46:7;11006:351:8;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:8;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:8:o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;1569:328::-;1646:6;1654;1662;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1754:29;1773:9;1754:29;:::i;:::-;1744:39;;1802:38;1836:2;1825:9;1821:18;1802:38;:::i;:::-;1792:48;;1887:2;1876:9;1872:18;1859:32;1849:42;;1569:328;;;;;:::o;1902:180::-;1961:6;2014:2;2002:9;1993:7;1989:23;1985:32;1982:52;;;2030:1;2027;2020:12;1982:52;-1:-1:-1;2053:23:8;;1902:180;-1:-1:-1;1902:180:8:o;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2649:385;2729:6;2737;2745;2753;2806:3;2794:9;2785:7;2781:23;2777:33;2774:53;;;2823:1;2820;2813:12;2774:53;2846:26;2862:9;2846:26;:::i;:::-;2836:36;;2919:2;2908:9;2904:18;2891:32;2881:42;;2970:2;2959:9;2955:18;2942:32;2932:42;;2993:35;3024:2;3013:9;3009:18;2993:35;:::i;:::-;2983:45;;2649:385;;;;;;;:::o;3579:260::-;3647:6;3655;3708:2;3696:9;3687:7;3683:23;3679:32;3676:52;;;3724:1;3721;3714:12;3676:52;3747:29;3766:9;3747:29;:::i;:::-;3737:39;;3795:38;3829:2;3818:9;3814:18;3795:38;:::i;:::-;3785:48;;3579:260;;;;;:::o;3844:248::-;3912:6;3920;3973:2;3961:9;3952:7;3948:23;3944:32;3941:52;;;3989:1;3986;3979:12;3941:52;-1:-1:-1;;4012:23:8;;;4082:2;4067:18;;;4054:32;;-1:-1:-1;3844:248:8:o;4097:180::-;4153:6;4206:2;4194:9;4185:7;4181:23;4177:32;4174:52;;;4222:1;4219;4212:12;4174:52;4245:26;4261:9;4245:26;:::i;4509:380::-;4588:1;4584:12;;;;4631;;;4652:61;;4706:4;4698:6;4694:17;4684:27;;4652:61;4759:2;4751:6;4748:14;4728:18;4725:38;4722:161;;4805:10;4800:3;4796:20;4793:1;4786:31;4840:4;4837:1;4830:15;4868:4;4865:1;4858:15;4722:161;;4509:380;;;:::o;4894:356::-;5096:2;5078:21;;;5115:18;;;5108:30;5174:34;5169:2;5154:18;;5147:62;5241:2;5226:18;;4894:356::o;5872:127::-;5933:10;5928:3;5924:20;5921:1;5914:31;5964:4;5961:1;5954:15;5988:4;5985:1;5978:15;6004:168;6077:9;;;6108;;6125:15;;;6119:22;;6105:37;6095:71;;6146:18;;:::i;6177:217::-;6217:1;6243;6233:132;;6287:10;6282:3;6278:20;6275:1;6268:31;6322:4;6319:1;6312:15;6350:4;6347:1;6340:15;6233:132;-1:-1:-1;6379:9:8;;6177:217::o;6801:128::-;6868:9;;;6889:11;;;6886:37;;;6903:18;;:::i;7744:125::-;7809:9;;;7830:10;;;7827:36;;;7843:18;;:::i;8354:127::-;8415:10;8410:3;8406:20;8403:1;8396:31;8446:4;8443:1;8436:15;8470:4;8467:1;8460:15;8486:980;8748:4;8796:3;8785:9;8781:19;8827:6;8816:9;8809:25;8853:2;8891:6;8886:2;8875:9;8871:18;8864:34;8934:3;8929:2;8918:9;8914:18;8907:31;8958:6;8993;8987:13;9024:6;9016;9009:22;9062:3;9051:9;9047:19;9040:26;;9101:2;9093:6;9089:15;9075:29;;9122:1;9132:195;9146:6;9143:1;9140:13;9132:195;;;9211:13;;-1:-1:-1;;;;;9207:39:8;9195:52;;9302:15;;;;9267:12;;;;9243:1;9161:9;9132:195;;;-1:-1:-1;;;;;;;9383:32:8;;;;9378:2;9363:18;;9356:60;-1:-1:-1;;;9447:3:8;9432:19;9425:35;9344:3;8486:980;-1:-1:-1;;;8486:980:8:o;10442:306::-;10530:6;10538;10546;10599:2;10587:9;10578:7;10574:23;10570:32;10567:52;;;10615:1;10612;10605:12;10567:52;10644:9;10638:16;10628:26;;10694:2;10683:9;10679:18;10673:25;10663:35;;10738:2;10727:9;10723:18;10717:25;10707:35;;10442:306;;;;;:::o
Swarm Source
ipfs://a9e86dc23b10fd9de3236d28dd2738e134c45ec7dd61fb2d9f9568d43fdcaa75
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.