ERC-20
Overview
Max Total Supply
100,000,000 0xl.im
Holders
75
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
993,212.180366248 0xl.imValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Oxlim
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-01-09 */ /** Hello, agent. Website: https://0xl.im/ X: https://x.com/erc20_0xL TG: https://t.me/erc20_0xL ccc */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.14; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract Oxlim is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "0xl.im"; string private constant _symbol = "0xl.im"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 100000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 20; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 25; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; mapping (address => bool) public preTrader; address payable private _developmentAddress = payable(0x7AFAE46416c3E025160d1bC676D931Bc4017CE3a); address payable private _marketingAddress = payable(0x7AFAE46416c3E025160d1bC676D931Bc4017CE3a); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 2000000 * 10**9; uint256 public _maxWalletSize = 2000000 * 10**9; uint256 public _swapTokensAtAmount = 1000000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner() && !preTrader[from] && !preTrader[to]) { //Trade start check if (!tradingOpen) { require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function enableTrading() external onlyOwner { require(!tradingOpen,"Trading is opened"); tradingOpen = true; } function agentSwap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function agentSend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBadBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function makeBotFriendly(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setAgentConfig(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokens(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set maximum transaction function maxTransactionSetter(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function maxWalletSetter(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":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":"address","name":"","type":"address"}],"name":"_buyMap","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":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"agentSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"agentSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBadBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"makeBotFriendly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTransactionSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"maxWalletSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setAgentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405267016345785d8a00005f1961001991906106c8565b5f196100259190610725565b6006555f60085560146009555f600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f55737afae46416c3e025160d1bc676d931bc4017ce3a60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737afae46416c3e025160d1bc676d931bc4017ce3a60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff02191690831515021790555066071afd498d000060175566071afd498d000060185566038d7ea4c6800060195534801561015a575f80fd5b505f61016a61066460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61021a61066460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031c91906107b6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610381573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a591906107b6565b6040518363ffffffff1660e01b81526004016103c29291906107f0565b6020604051808303815f875af11580156103de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040291906107b6565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61045461066b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506105f261066460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516106569190610826565b60405180910390a35061083f565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106d282610692565b91506106dd83610692565b9250826106ed576106ec61069b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61072f82610692565b915061073a83610692565b9250828203905081811115610752576107516106f8565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107858261075c565b9050919050565b6107958161077b565b811461079f575f80fd5b50565b5f815190506107b08161078c565b92915050565b5f602082840312156107cb576107ca610758565b5b5f6107d8848285016107a2565b91505092915050565b6107ea8161077b565b82525050565b5f6040820190506108035f8301856107e1565b61081060208301846107e1565b9392505050565b61082081610692565b82525050565b5f6020820190506108395f830184610817565b92915050565b613c648061084c5f395ff3fe6080604052600436106101d0575f3560e01c80637dededf8116100f6578063bc0bbc5111610094578063c4d0293f11610063578063c4d0293f14610643578063dd62ed3e1461066b578063dd888005146106a7578063f2fde38b146106cf576101d7565b8063bc0bbc511461058d578063bdd795ef146105a3578063bfd79284146105df578063c492f0461461061b576101d7565b80638da5cb5b116100d05780638da5cb5b146104d35780638f9a55c0146104fd57806395d89b4114610527578063a9059cbb14610551576101d7565b80637dededf8146104595780637f2feddc146104815780638a8c523c146104bd576101d7565b8063270e86261161016e57806366be1eec1161013d57806366be1eec146103b557806370a08231146103dd578063715018a6146104195780637d1db4a51461042f576101d7565b8063270e8626146103215780632fd689e314610337578063313ce5671461036157806349bd5a5e1461038b576101d7565b80630ae81fc8116101aa5780630ae81fc8146102695780631694505e1461029157806318160ddd146102bb57806323b872dd146102e5576101d7565b8063018bfb2f146101db57806306fdde0314610203578063095ea7b31461022d576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc9190612b65565b6106f7565b005b34801561020e575f80fd5b50610217610795565b6040516102249190612c00565b60405180910390f35b348015610238575f80fd5b50610253600480360381019061024e9190612c7a565b6107d2565b6040516102609190612cd2565b60405180910390f35b348015610274575f80fd5b5061028f600480360381019061028a9190612ceb565b6107ef565b005b34801561029c575f80fd5b506102a56108a5565b6040516102b29190612daa565b60405180910390f35b3480156102c6575f80fd5b506102cf6108ca565b6040516102dc9190612dd2565b60405180910390f35b3480156102f0575f80fd5b5061030b60048036038101906103069190612deb565b6108d9565b6040516103189190612cd2565b60405180910390f35b34801561032c575f80fd5b506103356109ad565b005b348015610342575f80fd5b5061034b610a7a565b6040516103589190612dd2565b60405180910390f35b34801561036c575f80fd5b50610375610a80565b6040516103829190612e56565b60405180910390f35b348015610396575f80fd5b5061039f610a88565b6040516103ac9190612e7e565b60405180910390f35b3480156103c0575f80fd5b506103db60048036038101906103d69190612b65565b610aad565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190612e97565b610b4b565b6040516104109190612dd2565b60405180910390f35b348015610424575f80fd5b5061042d610b99565b005b34801561043a575f80fd5b50610443610ce7565b6040516104509190612dd2565b60405180910390f35b348015610464575f80fd5b5061047f600480360381019061047a9190612e97565b610ced565b005b34801561048c575f80fd5b506104a760048036038101906104a29190612e97565b610dd8565b6040516104b49190612dd2565b60405180910390f35b3480156104c8575f80fd5b506104d1610ded565b005b3480156104de575f80fd5b506104e7610eee565b6040516104f49190612e7e565b60405180910390f35b348015610508575f80fd5b50610511610f15565b60405161051e9190612dd2565b60405180910390f35b348015610532575f80fd5b5061053b610f1b565b6040516105489190612c00565b60405180910390f35b34801561055c575f80fd5b5061057760048036038101906105729190612c7a565b610f58565b6040516105849190612cd2565b60405180910390f35b348015610598575f80fd5b506105a1610f75565b005b3480156105ae575f80fd5b506105c960048036038101906105c49190612e97565b61104a565b6040516105d69190612cd2565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190612e97565b611067565b6040516106129190612cd2565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c9190612f4d565b611084565b005b34801561064e575f80fd5b50610669600480360381019061066491906130e2565b6111b3565b005b348015610676575f80fd5b50610691600480360381019061068c9190613129565b6112d2565b60405161069e9190612dd2565b60405180910390f35b3480156106b2575f80fd5b506106cd60048036038101906106c89190612b65565b611354565b005b3480156106da575f80fd5b506106f560048036038101906106f09190612e97565b6113f2565b005b6106ff6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610782906131b1565b60405180910390fd5b8060188190555050565b60606040518060400160405280600681526020017f30786c2e696d0000000000000000000000000000000000000000000000000000815250905090565b5f6107e56107de6115af565b84846115b6565b6001905092915050565b6107f76115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087a906131b1565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108e5848484611779565b6109a2846108f16115af565b61099d85604051806060016040528060288152602001613c076028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109546115af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120939092919063ffffffff16565b6115b6565b600190509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ed6115af565b73ffffffffffffffffffffffffffffffffffffffff161480610a62575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a4a6115af565b73ffffffffffffffffffffffffffffffffffffffff16145b610a6a575f80fd5b5f479050610a77816120f5565b50565b60195481565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab56115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b38906131b1565b60405180910390fd5b8060178190555050565b5f610b9260025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215d565b9050919050565b610ba16115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c24906131b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b610cf56115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d78906131b1565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6011602052805f5260405f205f915090505481565b610df56115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e78906131b1565b60405180910390fd5b601660149054906101000a900460ff1615610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890613219565b60405180910390fd5b6001601660146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600681526020017f30786c2e696d0000000000000000000000000000000000000000000000000000815250905090565b5f610f6b610f646115af565b8484611779565b6001905092915050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fb56115af565b73ffffffffffffffffffffffffffffffffffffffff16148061102a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110126115af565b73ffffffffffffffffffffffffffffffffffffffff16145b611032575f80fd5b5f61103c30610b4b565b9050611047816121c9565b50565b6012602052805f5260405f205f915054906101000a900460ff1681565b6010602052805f5260405f205f915054906101000a900460ff1681565b61108c6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f906131b1565b60405180910390fd5b5f5b838390508110156111ad578160055f86868581811061113c5761113b613237565b5b90506020020160208101906111519190612e97565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061111a565b50505050565b6111bb6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e906131b1565b60405180910390fd5b5f5b81518110156112ce57600160105f84848151811061126a57611269613237565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611249565b5050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61135c6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df906131b1565b60405180910390fd5b8060198190555050565b6113fa6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906131b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906132d4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90613362565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611692576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611689906133f0565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161176c9190612dd2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de9061347e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c9061350c565b60405180910390fd5b5f8111611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061359a565b60405180910390fd5b61189f610eee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190d57506118dd610eee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611960575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119b3575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611da057601660149054906101000a900460ff16611a565760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4c90613628565b60405180910390fd5b5b601754811115611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613690565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b39575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f9061371e565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c245760185481611bd984610b4b565b611be39190613769565b10611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a9061380c565b60405180910390fd5b5b5f611c2e30610b4b565b90505f60195482101590506017548210611c485760175491505b808015611c625750601660159054906101000a900460ff16155b8015611cbb575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd1575060168054906101000a900460ff165b8015611d24575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d77575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d9d57611d85826121c9565b5f4790505f811115611d9b57611d9a476120f5565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e40575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef1575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ef0575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611efe575f9050612081565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fa7575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fbf57600854600c81905550600954600d819055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612068575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561208057600a54600c81905550600b54600d819055505b5b61208d84848484612434565b50505050565b5f8383111582906120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d19190612c00565b60405180910390fd5b505f83856120e8919061382a565b9050809150509392505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612159573d5f803e3d5ffd5b5050565b5f6006548211156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a906138cd565b60405180910390fd5b5f6121ac612461565b90506121c1818461248a90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612200576121ff612faa565b5b60405190808252806020026020018201604052801561222e5781602001602082028036833780820191505090505b50905030815f8151811061224557612244613237565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230d91906138ff565b8160018151811061232157612320613237565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123873060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115b6565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e9959493929190613a1a565b5f604051808303815f87803b158015612400575f80fd5b505af1158015612412573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b80612442576124416124d3565b5b61244d84848461250c565b8061245b5761245a6126cc565b5b50505050565b5f805f61246c6126e0565b91509150612483818361248a90919063ffffffff16565b9250505090565b5f6124cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061273c565b905092915050565b5f600c541480156124e557505f600d54145b61250a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251b8761279d565b9550955095509550955095506125778660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127fd90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126088560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612652816128a3565b61265c848361295a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b99190612dd2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061271167016345785d8a000060065461248a90919063ffffffff16565b82101561272f5760065467016345785d8a0000935093505050612738565b81819350935050505b9091565b5f8083118290612782576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127799190612c00565b60405180910390fd5b505f83856127909190613a9f565b9050809150509392505050565b5f805f805f805f805f6127b58a600c54600d54612994565b9250925092505f6127c4612461565b90505f805f6127d58e878787612a26565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61283e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612093565b905092915050565b5f8082846128549190613769565b905083811015612899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289090613b19565b60405180910390fd5b8091505092915050565b5f6128ac612461565b90505f6128c28284612aaa90919063ffffffff16565b90506129148160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61296f826006546127fd90919063ffffffff16565b60068190555061298a8160075461284690919063ffffffff16565b6007819055505050565b5f805f806129be60646129b0888a612aaa90919063ffffffff16565b61248a90919063ffffffff16565b90505f6129e760646129d9888b612aaa90919063ffffffff16565b61248a90919063ffffffff16565b90505f612a0f82612a01858c6127fd90919063ffffffff16565b6127fd90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a3d8589612aaa90919063ffffffff16565b90505f612a538689612aaa90919063ffffffff16565b90505f612a698789612aaa90919063ffffffff16565b90505f612a9182612a8385876127fd90919063ffffffff16565b6127fd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612aba575f9050612b1b565b5f8284612ac79190613b37565b9050828482612ad69190613a9f565b14612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90613be8565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612b4481612b32565b8114612b4e575f80fd5b50565b5f81359050612b5f81612b3b565b92915050565b5f60208284031215612b7a57612b79612b2a565b5b5f612b8784828501612b51565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bd282612b90565b612bdc8185612b9a565b9350612bec818560208601612baa565b612bf581612bb8565b840191505092915050565b5f6020820190508181035f830152612c188184612bc8565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c4982612c20565b9050919050565b612c5981612c3f565b8114612c63575f80fd5b50565b5f81359050612c7481612c50565b92915050565b5f8060408385031215612c9057612c8f612b2a565b5b5f612c9d85828601612c66565b9250506020612cae85828601612b51565b9150509250929050565b5f8115159050919050565b612ccc81612cb8565b82525050565b5f602082019050612ce55f830184612cc3565b92915050565b5f805f8060808587031215612d0357612d02612b2a565b5b5f612d1087828801612b51565b9450506020612d2187828801612b51565b9350506040612d3287828801612b51565b9250506060612d4387828801612b51565b91505092959194509250565b5f819050919050565b5f612d72612d6d612d6884612c20565b612d4f565b612c20565b9050919050565b5f612d8382612d58565b9050919050565b5f612d9482612d79565b9050919050565b612da481612d8a565b82525050565b5f602082019050612dbd5f830184612d9b565b92915050565b612dcc81612b32565b82525050565b5f602082019050612de55f830184612dc3565b92915050565b5f805f60608486031215612e0257612e01612b2a565b5b5f612e0f86828701612c66565b9350506020612e2086828701612c66565b9250506040612e3186828701612b51565b9150509250925092565b5f60ff82169050919050565b612e5081612e3b565b82525050565b5f602082019050612e695f830184612e47565b92915050565b612e7881612c3f565b82525050565b5f602082019050612e915f830184612e6f565b92915050565b5f60208284031215612eac57612eab612b2a565b5b5f612eb984828501612c66565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612ee357612ee2612ec2565b5b8235905067ffffffffffffffff811115612f0057612eff612ec6565b5b602083019150836020820283011115612f1c57612f1b612eca565b5b9250929050565b612f2c81612cb8565b8114612f36575f80fd5b50565b5f81359050612f4781612f23565b92915050565b5f805f60408486031215612f6457612f63612b2a565b5b5f84013567ffffffffffffffff811115612f8157612f80612b2e565b5b612f8d86828701612ece565b93509350506020612fa086828701612f39565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612fe082612bb8565b810181811067ffffffffffffffff82111715612fff57612ffe612faa565b5b80604052505050565b5f613011612b21565b905061301d8282612fd7565b919050565b5f67ffffffffffffffff82111561303c5761303b612faa565b5b602082029050602081019050919050565b5f61305f61305a84613022565b613008565b9050808382526020820190506020840283018581111561308257613081612eca565b5b835b818110156130ab57806130978882612c66565b845260208401935050602081019050613084565b5050509392505050565b5f82601f8301126130c9576130c8612ec2565b5b81356130d984826020860161304d565b91505092915050565b5f602082840312156130f7576130f6612b2a565b5b5f82013567ffffffffffffffff81111561311457613113612b2e565b5b613120848285016130b5565b91505092915050565b5f806040838503121561313f5761313e612b2a565b5b5f61314c85828601612c66565b925050602061315d85828601612c66565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61319b602083612b9a565b91506131a682613167565b602082019050919050565b5f6020820190508181035f8301526131c88161318f565b9050919050565b7f54726164696e67206973206f70656e65640000000000000000000000000000005f82015250565b5f613203601183612b9a565b915061320e826131cf565b602082019050919050565b5f6020820190508181035f830152613230816131f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6132be602683612b9a565b91506132c982613264565b604082019050919050565b5f6020820190508181035f8301526132eb816132b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61334c602483612b9a565b9150613357826132f2565b604082019050919050565b5f6020820190508181035f83015261337981613340565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133da602283612b9a565b91506133e582613380565b604082019050919050565b5f6020820190508181035f830152613407816133ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613468602583612b9a565b91506134738261340e565b604082019050919050565b5f6020820190508181035f8301526134958161345c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134f6602383612b9a565b91506135018261349c565b604082019050919050565b5f6020820190508181035f830152613523816134ea565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613584602983612b9a565b915061358f8261352a565b604082019050919050565b5f6020820190508181035f8301526135b181613578565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613612603f83612b9a565b915061361d826135b8565b604082019050919050565b5f6020820190508181035f83015261363f81613606565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61367a601c83612b9a565b915061368582613646565b602082019050919050565b5f6020820190508181035f8301526136a78161366e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613708602383612b9a565b9150613713826136ae565b604082019050919050565b5f6020820190508181035f830152613735816136fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61377382612b32565b915061377e83612b32565b92508282019050808211156137965761379561373c565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6137f6602383612b9a565b91506138018261379c565b604082019050919050565b5f6020820190508181035f830152613823816137ea565b9050919050565b5f61383482612b32565b915061383f83612b32565b92508282039050818111156138575761385661373c565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6138b7602a83612b9a565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b5f815190506138f981612c50565b92915050565b5f6020828403121561391457613913612b2a565b5b5f613921848285016138eb565b91505092915050565b5f819050919050565b5f61394d6139486139438461392a565b612d4f565b612b32565b9050919050565b61395d81613933565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61399581612c3f565b82525050565b5f6139a6838361398c565b60208301905092915050565b5f602082019050919050565b5f6139c882613963565b6139d2818561396d565b93506139dd8361397d565b805f5b83811015613a0d5781516139f4888261399b565b97506139ff836139b2565b9250506001810190506139e0565b5085935050505092915050565b5f60a082019050613a2d5f830188612dc3565b613a3a6020830187613954565b8181036040830152613a4c81866139be565b9050613a5b6060830185612e6f565b613a686080830184612dc3565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aa982612b32565b9150613ab483612b32565b925082613ac457613ac3613a72565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b03601b83612b9a565b9150613b0e82613acf565b602082019050919050565b5f6020820190508181035f830152613b3081613af7565b9050919050565b5f613b4182612b32565b9150613b4c83612b32565b9250828202613b5a81612b32565b91508282048414831517613b7157613b7061373c565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bd2602183612b9a565b9150613bdd82613b78565b604082019050919050565b5f6020820190508181035f830152613bff81613bc6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c61f1fcf81675d5a9dd63d25c062ff691968d5f4fa3ca2fceeab8b2079133a4b64736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106101d0575f3560e01c80637dededf8116100f6578063bc0bbc5111610094578063c4d0293f11610063578063c4d0293f14610643578063dd62ed3e1461066b578063dd888005146106a7578063f2fde38b146106cf576101d7565b8063bc0bbc511461058d578063bdd795ef146105a3578063bfd79284146105df578063c492f0461461061b576101d7565b80638da5cb5b116100d05780638da5cb5b146104d35780638f9a55c0146104fd57806395d89b4114610527578063a9059cbb14610551576101d7565b80637dededf8146104595780637f2feddc146104815780638a8c523c146104bd576101d7565b8063270e86261161016e57806366be1eec1161013d57806366be1eec146103b557806370a08231146103dd578063715018a6146104195780637d1db4a51461042f576101d7565b8063270e8626146103215780632fd689e314610337578063313ce5671461036157806349bd5a5e1461038b576101d7565b80630ae81fc8116101aa5780630ae81fc8146102695780631694505e1461029157806318160ddd146102bb57806323b872dd146102e5576101d7565b8063018bfb2f146101db57806306fdde0314610203578063095ea7b31461022d576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc9190612b65565b6106f7565b005b34801561020e575f80fd5b50610217610795565b6040516102249190612c00565b60405180910390f35b348015610238575f80fd5b50610253600480360381019061024e9190612c7a565b6107d2565b6040516102609190612cd2565b60405180910390f35b348015610274575f80fd5b5061028f600480360381019061028a9190612ceb565b6107ef565b005b34801561029c575f80fd5b506102a56108a5565b6040516102b29190612daa565b60405180910390f35b3480156102c6575f80fd5b506102cf6108ca565b6040516102dc9190612dd2565b60405180910390f35b3480156102f0575f80fd5b5061030b60048036038101906103069190612deb565b6108d9565b6040516103189190612cd2565b60405180910390f35b34801561032c575f80fd5b506103356109ad565b005b348015610342575f80fd5b5061034b610a7a565b6040516103589190612dd2565b60405180910390f35b34801561036c575f80fd5b50610375610a80565b6040516103829190612e56565b60405180910390f35b348015610396575f80fd5b5061039f610a88565b6040516103ac9190612e7e565b60405180910390f35b3480156103c0575f80fd5b506103db60048036038101906103d69190612b65565b610aad565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190612e97565b610b4b565b6040516104109190612dd2565b60405180910390f35b348015610424575f80fd5b5061042d610b99565b005b34801561043a575f80fd5b50610443610ce7565b6040516104509190612dd2565b60405180910390f35b348015610464575f80fd5b5061047f600480360381019061047a9190612e97565b610ced565b005b34801561048c575f80fd5b506104a760048036038101906104a29190612e97565b610dd8565b6040516104b49190612dd2565b60405180910390f35b3480156104c8575f80fd5b506104d1610ded565b005b3480156104de575f80fd5b506104e7610eee565b6040516104f49190612e7e565b60405180910390f35b348015610508575f80fd5b50610511610f15565b60405161051e9190612dd2565b60405180910390f35b348015610532575f80fd5b5061053b610f1b565b6040516105489190612c00565b60405180910390f35b34801561055c575f80fd5b5061057760048036038101906105729190612c7a565b610f58565b6040516105849190612cd2565b60405180910390f35b348015610598575f80fd5b506105a1610f75565b005b3480156105ae575f80fd5b506105c960048036038101906105c49190612e97565b61104a565b6040516105d69190612cd2565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190612e97565b611067565b6040516106129190612cd2565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c9190612f4d565b611084565b005b34801561064e575f80fd5b50610669600480360381019061066491906130e2565b6111b3565b005b348015610676575f80fd5b50610691600480360381019061068c9190613129565b6112d2565b60405161069e9190612dd2565b60405180910390f35b3480156106b2575f80fd5b506106cd60048036038101906106c89190612b65565b611354565b005b3480156106da575f80fd5b506106f560048036038101906106f09190612e97565b6113f2565b005b6106ff6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610782906131b1565b60405180910390fd5b8060188190555050565b60606040518060400160405280600681526020017f30786c2e696d0000000000000000000000000000000000000000000000000000815250905090565b5f6107e56107de6115af565b84846115b6565b6001905092915050565b6107f76115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087a906131b1565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6108e5848484611779565b6109a2846108f16115af565b61099d85604051806060016040528060288152602001613c076028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109546115af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120939092919063ffffffff16565b6115b6565b600190509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ed6115af565b73ffffffffffffffffffffffffffffffffffffffff161480610a62575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a4a6115af565b73ffffffffffffffffffffffffffffffffffffffff16145b610a6a575f80fd5b5f479050610a77816120f5565b50565b60195481565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab56115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b38906131b1565b60405180910390fd5b8060178190555050565b5f610b9260025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215d565b9050919050565b610ba16115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c24906131b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b610cf56115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d78906131b1565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6011602052805f5260405f205f915090505481565b610df56115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e78906131b1565b60405180910390fd5b601660149054906101000a900460ff1615610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890613219565b60405180910390fd5b6001601660146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600681526020017f30786c2e696d0000000000000000000000000000000000000000000000000000815250905090565b5f610f6b610f646115af565b8484611779565b6001905092915050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fb56115af565b73ffffffffffffffffffffffffffffffffffffffff16148061102a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110126115af565b73ffffffffffffffffffffffffffffffffffffffff16145b611032575f80fd5b5f61103c30610b4b565b9050611047816121c9565b50565b6012602052805f5260405f205f915054906101000a900460ff1681565b6010602052805f5260405f205f915054906101000a900460ff1681565b61108c6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f906131b1565b60405180910390fd5b5f5b838390508110156111ad578160055f86868581811061113c5761113b613237565b5b90506020020160208101906111519190612e97565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061111a565b50505050565b6111bb6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e906131b1565b60405180910390fd5b5f5b81518110156112ce57600160105f84848151811061126a57611269613237565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611249565b5050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61135c6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df906131b1565b60405180910390fd5b8060198190555050565b6113fa6115af565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906131b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906132d4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90613362565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611692576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611689906133f0565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161176c9190612dd2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de9061347e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c9061350c565b60405180910390fd5b5f8111611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061359a565b60405180910390fd5b61189f610eee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190d57506118dd610eee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611960575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119b3575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611da057601660149054906101000a900460ff16611a565760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4c90613628565b60405180910390fd5b5b601754811115611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613690565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b39575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f9061371e565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c245760185481611bd984610b4b565b611be39190613769565b10611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a9061380c565b60405180910390fd5b5b5f611c2e30610b4b565b90505f60195482101590506017548210611c485760175491505b808015611c625750601660159054906101000a900460ff16155b8015611cbb575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd1575060168054906101000a900460ff165b8015611d24575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d77575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d9d57611d85826121c9565b5f4790505f811115611d9b57611d9a476120f5565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e40575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef1575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ef0575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611efe575f9050612081565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fa7575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fbf57600854600c81905550600954600d819055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612068575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561208057600a54600c81905550600b54600d819055505b5b61208d84848484612434565b50505050565b5f8383111582906120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d19190612c00565b60405180910390fd5b505f83856120e8919061382a565b9050809150509392505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612159573d5f803e3d5ffd5b5050565b5f6006548211156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a906138cd565b60405180910390fd5b5f6121ac612461565b90506121c1818461248a90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612200576121ff612faa565b5b60405190808252806020026020018201604052801561222e5781602001602082028036833780820191505090505b50905030815f8151811061224557612244613237565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230d91906138ff565b8160018151811061232157612320613237565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123873060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115b6565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e9959493929190613a1a565b5f604051808303815f87803b158015612400575f80fd5b505af1158015612412573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b80612442576124416124d3565b5b61244d84848461250c565b8061245b5761245a6126cc565b5b50505050565b5f805f61246c6126e0565b91509150612483818361248a90919063ffffffff16565b9250505090565b5f6124cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061273c565b905092915050565b5f600c541480156124e557505f600d54145b61250a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251b8761279d565b9550955095509550955095506125778660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127fd90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126088560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612652816128a3565b61265c848361295a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b99190612dd2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061271167016345785d8a000060065461248a90919063ffffffff16565b82101561272f5760065467016345785d8a0000935093505050612738565b81819350935050505b9091565b5f8083118290612782576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127799190612c00565b60405180910390fd5b505f83856127909190613a9f565b9050809150509392505050565b5f805f805f805f805f6127b58a600c54600d54612994565b9250925092505f6127c4612461565b90505f805f6127d58e878787612a26565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61283e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612093565b905092915050565b5f8082846128549190613769565b905083811015612899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289090613b19565b60405180910390fd5b8091505092915050565b5f6128ac612461565b90505f6128c28284612aaa90919063ffffffff16565b90506129148160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61296f826006546127fd90919063ffffffff16565b60068190555061298a8160075461284690919063ffffffff16565b6007819055505050565b5f805f806129be60646129b0888a612aaa90919063ffffffff16565b61248a90919063ffffffff16565b90505f6129e760646129d9888b612aaa90919063ffffffff16565b61248a90919063ffffffff16565b90505f612a0f82612a01858c6127fd90919063ffffffff16565b6127fd90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a3d8589612aaa90919063ffffffff16565b90505f612a538689612aaa90919063ffffffff16565b90505f612a698789612aaa90919063ffffffff16565b90505f612a9182612a8385876127fd90919063ffffffff16565b6127fd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612aba575f9050612b1b565b5f8284612ac79190613b37565b9050828482612ad69190613a9f565b14612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90613be8565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612b4481612b32565b8114612b4e575f80fd5b50565b5f81359050612b5f81612b3b565b92915050565b5f60208284031215612b7a57612b79612b2a565b5b5f612b8784828501612b51565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bd282612b90565b612bdc8185612b9a565b9350612bec818560208601612baa565b612bf581612bb8565b840191505092915050565b5f6020820190508181035f830152612c188184612bc8565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c4982612c20565b9050919050565b612c5981612c3f565b8114612c63575f80fd5b50565b5f81359050612c7481612c50565b92915050565b5f8060408385031215612c9057612c8f612b2a565b5b5f612c9d85828601612c66565b9250506020612cae85828601612b51565b9150509250929050565b5f8115159050919050565b612ccc81612cb8565b82525050565b5f602082019050612ce55f830184612cc3565b92915050565b5f805f8060808587031215612d0357612d02612b2a565b5b5f612d1087828801612b51565b9450506020612d2187828801612b51565b9350506040612d3287828801612b51565b9250506060612d4387828801612b51565b91505092959194509250565b5f819050919050565b5f612d72612d6d612d6884612c20565b612d4f565b612c20565b9050919050565b5f612d8382612d58565b9050919050565b5f612d9482612d79565b9050919050565b612da481612d8a565b82525050565b5f602082019050612dbd5f830184612d9b565b92915050565b612dcc81612b32565b82525050565b5f602082019050612de55f830184612dc3565b92915050565b5f805f60608486031215612e0257612e01612b2a565b5b5f612e0f86828701612c66565b9350506020612e2086828701612c66565b9250506040612e3186828701612b51565b9150509250925092565b5f60ff82169050919050565b612e5081612e3b565b82525050565b5f602082019050612e695f830184612e47565b92915050565b612e7881612c3f565b82525050565b5f602082019050612e915f830184612e6f565b92915050565b5f60208284031215612eac57612eab612b2a565b5b5f612eb984828501612c66565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612ee357612ee2612ec2565b5b8235905067ffffffffffffffff811115612f0057612eff612ec6565b5b602083019150836020820283011115612f1c57612f1b612eca565b5b9250929050565b612f2c81612cb8565b8114612f36575f80fd5b50565b5f81359050612f4781612f23565b92915050565b5f805f60408486031215612f6457612f63612b2a565b5b5f84013567ffffffffffffffff811115612f8157612f80612b2e565b5b612f8d86828701612ece565b93509350506020612fa086828701612f39565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612fe082612bb8565b810181811067ffffffffffffffff82111715612fff57612ffe612faa565b5b80604052505050565b5f613011612b21565b905061301d8282612fd7565b919050565b5f67ffffffffffffffff82111561303c5761303b612faa565b5b602082029050602081019050919050565b5f61305f61305a84613022565b613008565b9050808382526020820190506020840283018581111561308257613081612eca565b5b835b818110156130ab57806130978882612c66565b845260208401935050602081019050613084565b5050509392505050565b5f82601f8301126130c9576130c8612ec2565b5b81356130d984826020860161304d565b91505092915050565b5f602082840312156130f7576130f6612b2a565b5b5f82013567ffffffffffffffff81111561311457613113612b2e565b5b613120848285016130b5565b91505092915050565b5f806040838503121561313f5761313e612b2a565b5b5f61314c85828601612c66565b925050602061315d85828601612c66565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61319b602083612b9a565b91506131a682613167565b602082019050919050565b5f6020820190508181035f8301526131c88161318f565b9050919050565b7f54726164696e67206973206f70656e65640000000000000000000000000000005f82015250565b5f613203601183612b9a565b915061320e826131cf565b602082019050919050565b5f6020820190508181035f830152613230816131f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6132be602683612b9a565b91506132c982613264565b604082019050919050565b5f6020820190508181035f8301526132eb816132b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61334c602483612b9a565b9150613357826132f2565b604082019050919050565b5f6020820190508181035f83015261337981613340565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133da602283612b9a565b91506133e582613380565b604082019050919050565b5f6020820190508181035f830152613407816133ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613468602583612b9a565b91506134738261340e565b604082019050919050565b5f6020820190508181035f8301526134958161345c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134f6602383612b9a565b91506135018261349c565b604082019050919050565b5f6020820190508181035f830152613523816134ea565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613584602983612b9a565b915061358f8261352a565b604082019050919050565b5f6020820190508181035f8301526135b181613578565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613612603f83612b9a565b915061361d826135b8565b604082019050919050565b5f6020820190508181035f83015261363f81613606565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61367a601c83612b9a565b915061368582613646565b602082019050919050565b5f6020820190508181035f8301526136a78161366e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613708602383612b9a565b9150613713826136ae565b604082019050919050565b5f6020820190508181035f830152613735816136fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61377382612b32565b915061377e83612b32565b92508282019050808211156137965761379561373c565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6137f6602383612b9a565b91506138018261379c565b604082019050919050565b5f6020820190508181035f830152613823816137ea565b9050919050565b5f61383482612b32565b915061383f83612b32565b92508282039050818111156138575761385661373c565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6138b7602a83612b9a565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b5f815190506138f981612c50565b92915050565b5f6020828403121561391457613913612b2a565b5b5f613921848285016138eb565b91505092915050565b5f819050919050565b5f61394d6139486139438461392a565b612d4f565b612b32565b9050919050565b61395d81613933565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61399581612c3f565b82525050565b5f6139a6838361398c565b60208301905092915050565b5f602082019050919050565b5f6139c882613963565b6139d2818561396d565b93506139dd8361397d565b805f5b83811015613a0d5781516139f4888261399b565b97506139ff836139b2565b9250506001810190506139e0565b5085935050505092915050565b5f60a082019050613a2d5f830188612dc3565b613a3a6020830187613954565b8181036040830152613a4c81866139be565b9050613a5b6060830185612e6f565b613a686080830184612dc3565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aa982612b32565b9150613ab483612b32565b925082613ac457613ac3613a72565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b03601b83612b9a565b9150613b0e82613acf565b602082019050919050565b5f6020820190508181035f830152613b3081613af7565b9050919050565b5f613b4182612b32565b9150613b4c83612b32565b9250828202613b5a81612b32565b91508282048414831517613b7157613b7061373c565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bd2602183612b9a565b9150613bdd82613b78565b604082019050919050565b5f6020820190508181035f830152613bff81613bc6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c61f1fcf81675d5a9dd63d25c062ff691968d5f4fa3ca2fceeab8b2079133a4b64736f6c634300081a0033
Deployed Bytecode Sourcemap
4210:13466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17317:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6752:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7677:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16676:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5602:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7029:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7878:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12751:234;;;;;;;;;;;;;:::i;:::-;;5898:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6938:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5650:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17196:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7132:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1697:148;;;;;;;;;;;;;:::i;:::-;;5792:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13173:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5295:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12367:133;;;;;;;;;;;;;:::i;:::-;;1483:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5844:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6843:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7278:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12508:235;;;;;;;;;;;;;:::i;:::-;;5345:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5257:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17439:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12993:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7485:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17027:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1853:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17317:114;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17410:13:::1;17393:14;:30;;;;17317:114:::0;:::o;6752:83::-;6789:13;6822:5;;;;;;;;;;;;;;;;;6815:12;;6752:83;:::o;7677:193::-;7779:4;7801:39;7810:12;:10;:12::i;:::-;7824:7;7833:6;7801:8;:39::i;:::-;7858:4;7851:11;;7677:193;;;;:::o;16676:299::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16835:13:::1;16818:14;:30;;;;16877:14;16859:15;:32;;;;16917:11;16902:12;:26;;;;16955:12;16939:13;:28;;;;16676:299:::0;;;;:::o;5602:41::-;;;;;;;;;;;;;:::o;7029:95::-;7082:7;4754:21;7102:14;;7029:95;:::o;7878:446::-;8010:4;8027:36;8037:6;8045:9;8056:6;8027:9;:36::i;:::-;8074:220;8097:6;8118:12;:10;:12::i;:::-;8145:138;8201:6;8145:138;;;;;;;;;;;;;;;;;:11;:19;8157:6;8145:19;;;;;;;;;;;;;;;:33;8165:12;:10;:12::i;:::-;8145:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8074:8;:220::i;:::-;8312:4;8305:11;;7878:446;;;;;:::o;12751:234::-;12816:19;;;;;;;;;;;12800:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12855:17;;;;;;;;;;;12839:33;;:12;:10;:12::i;:::-;:33;;;12800:72;12792:81;;;;;;12884:26;12913:21;12884:50;;12945:32;12958:18;12945:12;:32::i;:::-;12781:204;12751:234::o;5898:52::-;;;;:::o;6938:83::-;6979:5;4428:1;6997:16;;6938:83;:::o;5650:28::-;;;;;;;;;;;;;:::o;17196:113::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17290:11:::1;17275:12;:26;;;;17196:113:::0;:::o;7132:138::-;7198:7;7225:37;7245:7;:16;7253:7;7245:16;;;;;;;;;;;;;;;;7225:19;:37::i;:::-;7218:44;;7132:138;;;:::o;1697:148::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1804:1:::1;1767:40;;1788:6;::::0;::::1;;;;;;;;1767:40;;;;;;;;;;;;1835:1;1818:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1697:148::o:0;5792:45::-;;;;:::o;13173:97::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13257:5:::1;13242:4;:12;13247:6;13242:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13173:97:::0;:::o;5295:43::-;;;;;;;;;;;;;;;;;:::o;12367:133::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12431:11:::1;;;;;;;;;;;12430:12;12422:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;12488:4;12474:11;;:18;;;;;;;;;;;;;;;;;;12367:133::o:0;1483:79::-;1521:7;1548:6;;;;;;;;;;;1541:13;;1483:79;:::o;5844:47::-;;;;:::o;6843:87::-;6882:13;6915:7;;;;;;;;;;;;;;;;;6908:14;;6843:87;:::o;7278:199::-;7383:4;7405:42;7415:12;:10;:12::i;:::-;7429:9;7440:6;7405:9;:42::i;:::-;7465:4;7458:11;;7278:199;;;;:::o;12508:235::-;12573:19;;;;;;;;;;;12557:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12612:17;;;;;;;;;;;12596:33;;:12;:10;:12::i;:::-;:33;;;12557:72;12549:81;;;;;;12641:23;12667:24;12685:4;12667:9;:24::i;:::-;12641:50;;12702:33;12719:15;12702:16;:33::i;:::-;12538:205;12508:235::o;5345:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5257:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17439:234::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17556:9:::1;17552:114;17575:8;;:15;;17571:1;:19;17552:114;;;17646:8;17612:18;:31;17631:8;;17640:1;17631:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17612:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17592:3;;;;;;;17552:114;;;;17439:234:::0;;;:::o;12993:172::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13072:9:::1;13067:91;13091:5;:12;13087:1;:16;13067:91;;;13142:4;13125;:14;13130:5;13136:1;13130:8;;;;;;;;:::i;:::-;;;;;;;;13125:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13105:3;;;;;;;13067:91;;;;12993:172:::0;:::o;7485:184::-;7602:7;7634:11;:18;7646:5;7634:18;;;;;;;;;;;;;;;:27;7653:7;7634:27;;;;;;;;;;;;;;;;7627:34;;7485:184;;;;:::o;17027:130::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17131:18:::1;17109:19;:40;;;;17027:130:::0;:::o;1853:244::-;1620:12;:10;:12::i;:::-;1610:22;;:6;;;;;;;;;;:22;;;1602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1962:1:::1;1942:22;;:8;:22;;::::0;1934:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2052:8;2023:38;;2044:6;::::0;::::1;;;;;;;;2023:38;;;;;;;;;;;;2081:8;2072:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1853:244:::0;:::o;242:98::-;295:7;322:10;315:17;;242:98;:::o;9015:369::-;9159:1;9142:19;;:5;:19;;;9134:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9240:1;9221:21;;:7;:21;;;9213:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9322:6;9292:11;:18;9304:5;9292:18;;;;;;;;;;;;;;;:27;9311:7;9292:27;;;;;;;;;;;;;;;:36;;;;9360:7;9344:32;;9353:5;9344:32;;;9369:6;9344:32;;;;;;:::i;:::-;;;;;;;;9015:369;;;:::o;9392:2369::-;9530:1;9514:18;;:4;:18;;;9506:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9607:1;9593:16;;:2;:16;;;9585:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9677:1;9668:6;:10;9660:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9750:7;:5;:7::i;:::-;9742:15;;:4;:15;;;;:32;;;;;9767:7;:5;:7::i;:::-;9761:13;;:2;:13;;;;9742:32;:52;;;;;9779:9;:15;9789:4;9779:15;;;;;;;;;;;;;;;;;;;;;;;;;9778:16;9742:52;:70;;;;;9799:9;:13;9809:2;9799:13;;;;;;;;;;;;;;;;;;;;;;;;;9798:14;9742:70;9738:1297;;;9869:11;;;;;;;;;;;9864:144;;9909:9;:15;9919:4;9909:15;;;;;;;;;;;;;;;;;;;;;;;;;9901:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9864:144;10042:12;;10032:6;:22;;10024:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10111:4;:10;10116:4;10111:10;;;;;;;;;;;;;;;;;;;;;;;;;10110:11;:24;;;;;10126:4;:8;10131:2;10126:8;;;;;;;;;;;;;;;;;;;;;;;;;10125:9;10110:24;10102:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10200:13;;;;;;;;;;;10194:19;;:2;:19;;;10191:146;;10267:14;;10258:6;10242:13;10252:2;10242:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10234:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10191:146;10353:28;10384:24;10402:4;10384:9;:24::i;:::-;10353:55;;10423:12;10462:19;;10438:20;:43;;10423:58;;10525:12;;10501:20;:36;10498:124;;10594:12;;10571:35;;10498:124;10642:7;:18;;;;;10654:6;;;;;;;;;;;10653:7;10642:18;:43;;;;;10672:13;;;;;;;;;;;10664:21;;:4;:21;;;;10642:43;:58;;;;;10689:11;;;;;;;;;;10642:58;:87;;;;;10705:18;:24;10724:4;10705:24;;;;;;;;;;;;;;;;;;;;;;;;;10704:25;10642:87;:114;;;;;10734:18;:22;10753:2;10734:22;;;;;;;;;;;;;;;;;;;;;;;;;10733:23;10642:114;10638:386;;;10777:38;10794:20;10777:16;:38::i;:::-;10834:26;10863:21;10834:50;;10928:1;10907:18;:22;10903:106;;;10954:35;10967:21;10954:12;:35::i;:::-;10903:106;10758:266;10638:386;9814:1221;;9738:1297;11047:12;11062:4;11047:19;;11111:18;:24;11130:4;11111:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11139:18;:22;11158:2;11139:22;;;;;;;;;;;;;;;;;;;;;;;;;11111:50;11110:102;;;;11175:13;;;;;;;;;;;11167:21;;:4;:21;;;;:44;;;;;11198:13;;;;;;;;;;;11192:19;;:2;:19;;;;11167:44;11110:102;11106:594;;;11239:5;11229:15;;11106:594;;;11322:13;;;;;;;;;;;11314:21;;:4;:21;;;:55;;;;;11353:15;;;;;;;;;;;11339:30;;:2;:30;;;;11314:55;11311:162;;;11402:14;;11390:9;:26;;;;11445:12;;11435:7;:22;;;;11311:162;11532:13;;;;;;;;;;;11526:19;;:2;:19;;;:55;;;;;11565:15;;;;;;;;;;;11549:32;;:4;:32;;;;11526:55;11522:165;;;11614:15;;11602:9;:27;;;;11658:13;;11648:7;:23;;;;11522:165;11106:594;11712:41;11727:4;11733:2;11737:6;11745:7;11712:14;:41::i;:::-;9495:2266;9392:2369;;;:::o;2461:224::-;2581:7;2614:1;2609;:6;;2617:12;2601:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2641:9;2657:1;2653;:5;;;;:::i;:::-;2641:17;;2676:1;2669:8;;;2461:224;;;;;:::o;12260:99::-;12317:17;;;;;;;;;;;:26;;:34;12344:6;12317:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12260:99;:::o;8332:323::-;8427:7;8485;;8474;:18;;8452:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8573:19;8595:10;:8;:10::i;:::-;8573:32;;8623:24;8635:11;8623:7;:11;;:24;;;;:::i;:::-;8616:31;;;8332:323;;;:::o;11769:483::-;6053:4;6044:6;;:13;;;;;;;;;;;;;;;;;;11847:21:::1;11885:1;11871:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11847:40;;11916:4;11898;11903:1;11898:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11942:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11932:4;11937:1;11932:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11975:62;11992:4;12007:15;;;;;;;;;;;12025:11;11975:8;:62::i;:::-;12048:15;;;;;;;;;;;:66;;;12129:11;12155:1;12171:4;12198;12218:15;12048:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11836:416;6089:5:::0;6080:6;;:14;;;;;;;;;;;;;;;;;;11769:483;:::o;13278:282::-;13434:7;13429:28;;13443:14;:12;:14::i;:::-;13429:28;13468:44;13486:6;13494:9;13505:6;13468:17;:44::i;:::-;13528:7;13523:29;;13537:15;:13;:15::i;:::-;13523:29;13278:282;;;;:::o;16239:164::-;16281:7;16302:15;16319;16338:19;:17;:19::i;:::-;16301:56;;;;16375:20;16387:7;16375;:11;;:20;;;;:::i;:::-;16368:27;;;;16239:164;:::o;2947:132::-;3005:7;3032:39;3036:1;3039;3032:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3025:46;;2947:132;;;;:::o;8663:219::-;8723:1;8710:9;;:14;:30;;;;;8739:1;8728:7;;:12;8710:30;8742:7;8706:43;8781:9;;8761:17;:29;;;;8819:7;;8801:15;:25;;;;8851:1;8839:9;:13;;;;8873:1;8863:7;:11;;;;8663:219;:::o;13568:610::-;13715:15;13745:23;13783:12;13810:23;13848:12;13875:13;13902:19;13913:7;13902:10;:19::i;:::-;13700:221;;;;;;;;;;;;13950:28;13970:7;13950;:15;13958:6;13950:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13932:7;:15;13940:6;13932:15;;;;;;;;;;;;;;;:46;;;;14010:39;14033:15;14010:7;:18;14018:9;14010:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13989:7;:18;13997:9;13989:18;;;;;;;;;;;;;;;:60;;;;14060:16;14070:5;14060:9;:16::i;:::-;14087:23;14099:4;14105;14087:11;:23::i;:::-;14143:9;14126:44;;14135:6;14126:44;;;14154:15;14126:44;;;;;;:::i;:::-;;;;;;;;13689:489;;;;;;13568:610;;;:::o;8890:117::-;8946:17;;8934:9;:29;;;;8984:15;;8974:7;:25;;;;8890:117::o;16411:257::-;16462:7;16471;16491:15;16509:7;;16491:25;;16527:15;4754:21;16527:25;;16577:20;4754:21;16577:7;;:11;;:20;;;;:::i;:::-;16567:7;:30;16563:61;;;16607:7;;4754:21;16599:25;;;;;;;;16563:61;16643:7;16652;16635:25;;;;;;16411:257;;;:::o;3087:223::-;3207:7;3239:1;3235;:5;3242:12;3227:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3266:9;3282:1;3278;:5;;;;:::i;:::-;3266:17;;3301:1;3294:8;;;3087:223;;;;;:::o;14597:615::-;14697:7;14719;14741;14763;14785;14807;14843:23;14868:12;14882:13;14912:40;14924:7;14933:9;;14944:7;;14912:11;:40::i;:::-;14842:110;;;;;;14963:19;14985:10;:8;:10::i;:::-;14963:32;;15007:15;15024:23;15049:12;15078:46;15090:7;15099:4;15105:5;15112:11;15078;:46::i;:::-;15006:118;;;;;;15143:7;15152:15;15169:4;15175:15;15192:4;15198:5;15135:69;;;;;;;;;;;;;;;;;;;14597:615;;;;;;;:::o;2317:136::-;2375:7;2402:43;2406:1;2409;2402:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2395:50;;2317:136;;;;:::o;2130:179::-;2188:7;2208:9;2224:1;2220;:5;;;;:::i;:::-;2208:17;;2249:1;2244;:6;;2236:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2300:1;2293:8;;;2130:179;;;;:::o;14186:211::-;14239:19;14261:10;:8;:10::i;:::-;14239:32;;14282:13;14298:22;14308:11;14298:5;:9;;:22;;;;:::i;:::-;14282:38;;14356:33;14383:5;14356:7;:22;14372:4;14356:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14331:7;:22;14347:4;14331:22;;;;;;;;;;;;;;;:58;;;;14228:169;;14186:211;:::o;14405:147::-;14483:17;14495:4;14483:7;;:11;;:17;;;;:::i;:::-;14473:7;:27;;;;14524:20;14539:4;14524:10;;:14;;:20;;;;:::i;:::-;14511:10;:33;;;;14405:147;;:::o;15220:469::-;15389:7;15411;15433;15468:12;15483:30;15509:3;15483:21;15495:8;15483:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15468:45;;15524:13;15540:28;15564:3;15540:19;15552:6;15540:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15524:44;;15579:23;15605:28;15627:5;15605:17;15617:4;15605:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15579:54;;15652:15;15669:4;15675:5;15644:37;;;;;;;;;15220:469;;;;;;;:::o;15697:534::-;15891:7;15913;15935;15970:15;15988:24;16000:11;15988:7;:11;;:24;;;;:::i;:::-;15970:42;;16023:12;16038:21;16047:11;16038:4;:8;;:21;;;;:::i;:::-;16023:36;;16070:13;16086:22;16096:11;16086:5;:9;;:22;;;;:::i;:::-;16070:38;;16119:23;16145:28;16167:5;16145:17;16157:4;16145:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16119:54;;16192:7;16201:15;16218:4;16184:39;;;;;;;;;;15697:534;;;;;;;;:::o;2693:246::-;2751:7;2780:1;2775;:6;2771:47;;2805:1;2798:8;;;;2771:47;2828:9;2844:1;2840;:5;;;;:::i;:::-;2828:17;;2873:1;2868;2864;:5;;;;:::i;:::-;:10;2856:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2930:1;2923:8;;;2693:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:139::-;1394:6;1389:3;1384;1378:23;1435:1;1426:6;1421:3;1417:16;1410:27;1305:139;;;:::o;1450:102::-;1491:6;1542:2;1538:7;1533:2;1526:5;1522:14;1518:28;1508:38;;1450:102;;;:::o;1558:377::-;1646:3;1674:39;1707:5;1674:39;:::i;:::-;1729:71;1793:6;1788:3;1729:71;:::i;:::-;1722:78;;1809:65;1867:6;1862:3;1855:4;1848:5;1844:16;1809:65;:::i;:::-;1899:29;1921:6;1899:29;:::i;:::-;1894:3;1890:39;1883:46;;1650:285;1558:377;;;;:::o;1941:313::-;2054:4;2092:2;2081:9;2077:18;2069:26;;2141:9;2135:4;2131:20;2127:1;2116:9;2112:17;2105:47;2169:78;2242:4;2233:6;2169:78;:::i;:::-;2161:86;;1941:313;;;;:::o;2260:126::-;2297:7;2337:42;2330:5;2326:54;2315:65;;2260:126;;;:::o;2392:96::-;2429:7;2458:24;2476:5;2458:24;:::i;:::-;2447:35;;2392:96;;;:::o;2494:122::-;2567:24;2585:5;2567:24;:::i;:::-;2560:5;2557:35;2547:63;;2606:1;2603;2596:12;2547:63;2494:122;:::o;2622:139::-;2668:5;2706:6;2693:20;2684:29;;2722:33;2749:5;2722:33;:::i;:::-;2622:139;;;;:::o;2767:474::-;2835:6;2843;2892:2;2880:9;2871:7;2867:23;2863:32;2860:119;;;2898:79;;:::i;:::-;2860:119;3018:1;3043:53;3088:7;3079:6;3068:9;3064:22;3043:53;:::i;:::-;3033:63;;2989:117;3145:2;3171:53;3216:7;3207:6;3196:9;3192:22;3171:53;:::i;:::-;3161:63;;3116:118;2767:474;;;;;:::o;3247:90::-;3281:7;3324:5;3317:13;3310:21;3299:32;;3247:90;;;:::o;3343:109::-;3424:21;3439:5;3424:21;:::i;:::-;3419:3;3412:34;3343:109;;:::o;3458:210::-;3545:4;3583:2;3572:9;3568:18;3560:26;;3596:65;3658:1;3647:9;3643:17;3634:6;3596:65;:::i;:::-;3458:210;;;;:::o;3674:765::-;3760:6;3768;3776;3784;3833:3;3821:9;3812:7;3808:23;3804:33;3801:120;;;3840:79;;:::i;:::-;3801:120;3960:1;3985:53;4030:7;4021:6;4010:9;4006:22;3985:53;:::i;:::-;3975:63;;3931:117;4087:2;4113:53;4158:7;4149:6;4138:9;4134:22;4113:53;:::i;:::-;4103:63;;4058:118;4215:2;4241:53;4286:7;4277:6;4266:9;4262:22;4241:53;:::i;:::-;4231:63;;4186:118;4343:2;4369:53;4414:7;4405:6;4394:9;4390:22;4369:53;:::i;:::-;4359:63;;4314:118;3674:765;;;;;;;:::o;4445:60::-;4473:3;4494:5;4487:12;;4445:60;;;:::o;4511:142::-;4561:9;4594:53;4612:34;4621:24;4639:5;4621:24;:::i;:::-;4612:34;:::i;:::-;4594:53;:::i;:::-;4581:66;;4511:142;;;:::o;4659:126::-;4709:9;4742:37;4773:5;4742:37;:::i;:::-;4729:50;;4659:126;;;:::o;4791:152::-;4867:9;4900:37;4931:5;4900:37;:::i;:::-;4887:50;;4791:152;;;:::o;4949:183::-;5062:63;5119:5;5062:63;:::i;:::-;5057:3;5050:76;4949:183;;:::o;5138:274::-;5257:4;5295:2;5284:9;5280:18;5272:26;;5308:97;5402:1;5391:9;5387:17;5378:6;5308:97;:::i;:::-;5138:274;;;;:::o;5418:118::-;5505:24;5523:5;5505:24;:::i;:::-;5500:3;5493:37;5418:118;;:::o;5542:222::-;5635:4;5673:2;5662:9;5658:18;5650:26;;5686:71;5754:1;5743:9;5739:17;5730:6;5686:71;:::i;:::-;5542:222;;;;:::o;5770:619::-;5847:6;5855;5863;5912:2;5900:9;5891:7;5887:23;5883:32;5880:119;;;5918:79;;:::i;:::-;5880:119;6038:1;6063:53;6108:7;6099:6;6088:9;6084:22;6063:53;:::i;:::-;6053:63;;6009:117;6165:2;6191:53;6236:7;6227:6;6216:9;6212:22;6191:53;:::i;:::-;6181:63;;6136:118;6293:2;6319:53;6364:7;6355:6;6344:9;6340:22;6319:53;:::i;:::-;6309:63;;6264:118;5770:619;;;;;:::o;6395:86::-;6430:7;6470:4;6463:5;6459:16;6448:27;;6395:86;;;:::o;6487:112::-;6570:22;6586:5;6570:22;:::i;:::-;6565:3;6558:35;6487:112;;:::o;6605:214::-;6694:4;6732:2;6721:9;6717:18;6709:26;;6745:67;6809:1;6798:9;6794:17;6785:6;6745:67;:::i;:::-;6605:214;;;;:::o;6825:118::-;6912:24;6930:5;6912:24;:::i;:::-;6907:3;6900:37;6825:118;;:::o;6949:222::-;7042:4;7080:2;7069:9;7065:18;7057:26;;7093:71;7161:1;7150:9;7146:17;7137:6;7093:71;:::i;:::-;6949:222;;;;:::o;7177:329::-;7236:6;7285:2;7273:9;7264:7;7260:23;7256:32;7253:119;;;7291:79;;:::i;:::-;7253:119;7411:1;7436:53;7481:7;7472:6;7461:9;7457:22;7436:53;:::i;:::-;7426:63;;7382:117;7177:329;;;;:::o;7512:117::-;7621:1;7618;7611:12;7635:117;7744:1;7741;7734:12;7758:117;7867:1;7864;7857:12;7898:568;7971:8;7981:6;8031:3;8024:4;8016:6;8012:17;8008:27;7998:122;;8039:79;;:::i;:::-;7998:122;8152:6;8139:20;8129:30;;8182:18;8174:6;8171:30;8168:117;;;8204:79;;:::i;:::-;8168:117;8318:4;8310:6;8306:17;8294:29;;8372:3;8364:4;8356:6;8352:17;8342:8;8338:32;8335:41;8332:128;;;8379:79;;:::i;:::-;8332:128;7898:568;;;;;:::o;8472:116::-;8542:21;8557:5;8542:21;:::i;:::-;8535:5;8532:32;8522:60;;8578:1;8575;8568:12;8522:60;8472:116;:::o;8594:133::-;8637:5;8675:6;8662:20;8653:29;;8691:30;8715:5;8691:30;:::i;:::-;8594:133;;;;:::o;8733:698::-;8825:6;8833;8841;8890:2;8878:9;8869:7;8865:23;8861:32;8858:119;;;8896:79;;:::i;:::-;8858:119;9044:1;9033:9;9029:17;9016:31;9074:18;9066:6;9063:30;9060:117;;;9096:79;;:::i;:::-;9060:117;9209:80;9281:7;9272:6;9261:9;9257:22;9209:80;:::i;:::-;9191:98;;;;8987:312;9338:2;9364:50;9406:7;9397:6;9386:9;9382:22;9364:50;:::i;:::-;9354:60;;9309:115;8733:698;;;;;:::o;9437:180::-;9485:77;9482:1;9475:88;9582:4;9579:1;9572:15;9606:4;9603:1;9596:15;9623:281;9706:27;9728:4;9706:27;:::i;:::-;9698:6;9694:40;9836:6;9824:10;9821:22;9800:18;9788:10;9785:34;9782:62;9779:88;;;9847:18;;:::i;:::-;9779:88;9887:10;9883:2;9876:22;9666:238;9623:281;;:::o;9910:129::-;9944:6;9971:20;;:::i;:::-;9961:30;;10000:33;10028:4;10020:6;10000:33;:::i;:::-;9910:129;;;:::o;10045:311::-;10122:4;10212:18;10204:6;10201:30;10198:56;;;10234:18;;:::i;:::-;10198:56;10284:4;10276:6;10272:17;10264:25;;10344:4;10338;10334:15;10326:23;;10045:311;;;:::o;10379:710::-;10475:5;10500:81;10516:64;10573:6;10516:64;:::i;:::-;10500:81;:::i;:::-;10491:90;;10601:5;10630:6;10623:5;10616:21;10664:4;10657:5;10653:16;10646:23;;10717:4;10709:6;10705:17;10697:6;10693:30;10746:3;10738:6;10735:15;10732:122;;;10765:79;;:::i;:::-;10732:122;10880:6;10863:220;10897:6;10892:3;10889:15;10863:220;;;10972:3;11001:37;11034:3;11022:10;11001:37;:::i;:::-;10996:3;10989:50;11068:4;11063:3;11059:14;11052:21;;10939:144;10923:4;10918:3;10914:14;10907:21;;10863:220;;;10867:21;10481:608;;10379:710;;;;;:::o;11112:370::-;11183:5;11232:3;11225:4;11217:6;11213:17;11209:27;11199:122;;11240:79;;:::i;:::-;11199:122;11357:6;11344:20;11382:94;11472:3;11464:6;11457:4;11449:6;11445:17;11382:94;:::i;:::-;11373:103;;11189:293;11112:370;;;;:::o;11488:539::-;11572:6;11621:2;11609:9;11600:7;11596:23;11592:32;11589:119;;;11627:79;;:::i;:::-;11589:119;11775:1;11764:9;11760:17;11747:31;11805:18;11797:6;11794:30;11791:117;;;11827:79;;:::i;:::-;11791:117;11932:78;12002:7;11993:6;11982:9;11978:22;11932:78;:::i;:::-;11922:88;;11718:302;11488:539;;;;:::o;12033:474::-;12101:6;12109;12158:2;12146:9;12137:7;12133:23;12129:32;12126:119;;;12164:79;;:::i;:::-;12126:119;12284:1;12309:53;12354:7;12345:6;12334:9;12330:22;12309:53;:::i;:::-;12299:63;;12255:117;12411:2;12437:53;12482:7;12473:6;12462:9;12458:22;12437:53;:::i;:::-;12427:63;;12382:118;12033:474;;;;;:::o;12513:182::-;12653:34;12649:1;12641:6;12637:14;12630:58;12513:182;:::o;12701:366::-;12843:3;12864:67;12928:2;12923:3;12864:67;:::i;:::-;12857:74;;12940:93;13029:3;12940:93;:::i;:::-;13058:2;13053:3;13049:12;13042:19;;12701:366;;;:::o;13073:419::-;13239:4;13277:2;13266:9;13262:18;13254:26;;13326:9;13320:4;13316:20;13312:1;13301:9;13297:17;13290:47;13354:131;13480:4;13354:131;:::i;:::-;13346:139;;13073:419;;;:::o;13498:167::-;13638:19;13634:1;13626:6;13622:14;13615:43;13498:167;:::o;13671:366::-;13813:3;13834:67;13898:2;13893:3;13834:67;:::i;:::-;13827:74;;13910:93;13999:3;13910:93;:::i;:::-;14028:2;14023:3;14019:12;14012:19;;13671:366;;;:::o;14043:419::-;14209:4;14247:2;14236:9;14232:18;14224:26;;14296:9;14290:4;14286:20;14282:1;14271:9;14267:17;14260:47;14324:131;14450:4;14324:131;:::i;:::-;14316:139;;14043:419;;;:::o;14468:180::-;14516:77;14513:1;14506:88;14613:4;14610:1;14603:15;14637:4;14634:1;14627:15;14654:225;14794:34;14790:1;14782:6;14778:14;14771:58;14863:8;14858:2;14850:6;14846:15;14839:33;14654:225;:::o;14885:366::-;15027:3;15048:67;15112:2;15107:3;15048:67;:::i;:::-;15041:74;;15124:93;15213:3;15124:93;:::i;:::-;15242:2;15237:3;15233:12;15226:19;;14885:366;;;:::o;15257:419::-;15423:4;15461:2;15450:9;15446:18;15438:26;;15510:9;15504:4;15500:20;15496:1;15485:9;15481:17;15474:47;15538:131;15664:4;15538:131;:::i;:::-;15530:139;;15257:419;;;:::o;15682:223::-;15822:34;15818:1;15810:6;15806:14;15799:58;15891:6;15886:2;15878:6;15874:15;15867:31;15682:223;:::o;15911:366::-;16053:3;16074:67;16138:2;16133:3;16074:67;:::i;:::-;16067:74;;16150:93;16239:3;16150:93;:::i;:::-;16268:2;16263:3;16259:12;16252:19;;15911:366;;;:::o;16283:419::-;16449:4;16487:2;16476:9;16472:18;16464:26;;16536:9;16530:4;16526:20;16522:1;16511:9;16507:17;16500:47;16564:131;16690:4;16564:131;:::i;:::-;16556:139;;16283:419;;;:::o;16708:221::-;16848:34;16844:1;16836:6;16832:14;16825:58;16917:4;16912:2;16904:6;16900:15;16893:29;16708:221;:::o;16935:366::-;17077:3;17098:67;17162:2;17157:3;17098:67;:::i;:::-;17091:74;;17174:93;17263:3;17174:93;:::i;:::-;17292:2;17287:3;17283:12;17276:19;;16935:366;;;:::o;17307:419::-;17473:4;17511:2;17500:9;17496:18;17488:26;;17560:9;17554:4;17550:20;17546:1;17535:9;17531:17;17524:47;17588:131;17714:4;17588:131;:::i;:::-;17580:139;;17307:419;;;:::o;17732:224::-;17872:34;17868:1;17860:6;17856:14;17849:58;17941:7;17936:2;17928:6;17924:15;17917:32;17732:224;:::o;17962:366::-;18104:3;18125:67;18189:2;18184:3;18125:67;:::i;:::-;18118:74;;18201:93;18290:3;18201:93;:::i;:::-;18319:2;18314:3;18310:12;18303:19;;17962:366;;;:::o;18334:419::-;18500:4;18538:2;18527:9;18523:18;18515:26;;18587:9;18581:4;18577:20;18573:1;18562:9;18558:17;18551:47;18615:131;18741:4;18615:131;:::i;:::-;18607:139;;18334:419;;;:::o;18759:222::-;18899:34;18895:1;18887:6;18883:14;18876:58;18968:5;18963:2;18955:6;18951:15;18944:30;18759:222;:::o;18987:366::-;19129:3;19150:67;19214:2;19209:3;19150:67;:::i;:::-;19143:74;;19226:93;19315:3;19226:93;:::i;:::-;19344:2;19339:3;19335:12;19328:19;;18987:366;;;:::o;19359:419::-;19525:4;19563:2;19552:9;19548:18;19540:26;;19612:9;19606:4;19602:20;19598:1;19587:9;19583:17;19576:47;19640:131;19766:4;19640:131;:::i;:::-;19632:139;;19359:419;;;:::o;19784:228::-;19924:34;19920:1;19912:6;19908:14;19901:58;19993:11;19988:2;19980:6;19976:15;19969:36;19784:228;:::o;20018:366::-;20160:3;20181:67;20245:2;20240:3;20181:67;:::i;:::-;20174:74;;20257:93;20346:3;20257:93;:::i;:::-;20375:2;20370:3;20366:12;20359:19;;20018:366;;;:::o;20390:419::-;20556:4;20594:2;20583:9;20579:18;20571:26;;20643:9;20637:4;20633:20;20629:1;20618:9;20614:17;20607:47;20671:131;20797:4;20671:131;:::i;:::-;20663:139;;20390:419;;;:::o;20815:250::-;20955:34;20951:1;20943:6;20939:14;20932:58;21024:33;21019:2;21011:6;21007:15;21000:58;20815:250;:::o;21071:366::-;21213:3;21234:67;21298:2;21293:3;21234:67;:::i;:::-;21227:74;;21310:93;21399:3;21310:93;:::i;:::-;21428:2;21423:3;21419:12;21412:19;;21071:366;;;:::o;21443:419::-;21609:4;21647:2;21636:9;21632:18;21624:26;;21696:9;21690:4;21686:20;21682:1;21671:9;21667:17;21660:47;21724:131;21850:4;21724:131;:::i;:::-;21716:139;;21443:419;;;:::o;21868:178::-;22008:30;22004:1;21996:6;21992:14;21985:54;21868:178;:::o;22052:366::-;22194:3;22215:67;22279:2;22274:3;22215:67;:::i;:::-;22208:74;;22291:93;22380:3;22291:93;:::i;:::-;22409:2;22404:3;22400:12;22393:19;;22052:366;;;:::o;22424:419::-;22590:4;22628:2;22617:9;22613:18;22605:26;;22677:9;22671:4;22667:20;22663:1;22652:9;22648:17;22641:47;22705:131;22831:4;22705:131;:::i;:::-;22697:139;;22424:419;;;:::o;22849:222::-;22989:34;22985:1;22977:6;22973:14;22966:58;23058:5;23053:2;23045:6;23041:15;23034:30;22849:222;:::o;23077:366::-;23219:3;23240:67;23304:2;23299:3;23240:67;:::i;:::-;23233:74;;23316:93;23405:3;23316:93;:::i;:::-;23434:2;23429:3;23425:12;23418:19;;23077:366;;;:::o;23449:419::-;23615:4;23653:2;23642:9;23638:18;23630:26;;23702:9;23696:4;23692:20;23688:1;23677:9;23673:17;23666:47;23730:131;23856:4;23730:131;:::i;:::-;23722:139;;23449:419;;;:::o;23874:180::-;23922:77;23919:1;23912:88;24019:4;24016:1;24009:15;24043:4;24040:1;24033:15;24060:191;24100:3;24119:20;24137:1;24119:20;:::i;:::-;24114:25;;24153:20;24171:1;24153:20;:::i;:::-;24148:25;;24196:1;24193;24189:9;24182:16;;24217:3;24214:1;24211:10;24208:36;;;24224:18;;:::i;:::-;24208:36;24060:191;;;;:::o;24257:222::-;24397:34;24393:1;24385:6;24381:14;24374:58;24466:5;24461:2;24453:6;24449:15;24442:30;24257:222;:::o;24485:366::-;24627:3;24648:67;24712:2;24707:3;24648:67;:::i;:::-;24641:74;;24724:93;24813:3;24724:93;:::i;:::-;24842:2;24837:3;24833:12;24826:19;;24485:366;;;:::o;24857:419::-;25023:4;25061:2;25050:9;25046:18;25038:26;;25110:9;25104:4;25100:20;25096:1;25085:9;25081:17;25074:47;25138:131;25264:4;25138:131;:::i;:::-;25130:139;;24857:419;;;:::o;25282:194::-;25322:4;25342:20;25360:1;25342:20;:::i;:::-;25337:25;;25376:20;25394:1;25376:20;:::i;:::-;25371:25;;25420:1;25417;25413:9;25405:17;;25444:1;25438:4;25435:11;25432:37;;;25449:18;;:::i;:::-;25432:37;25282:194;;;;:::o;25482:229::-;25622:34;25618:1;25610:6;25606:14;25599:58;25691:12;25686:2;25678:6;25674:15;25667:37;25482:229;:::o;25717:366::-;25859:3;25880:67;25944:2;25939:3;25880:67;:::i;:::-;25873:74;;25956:93;26045:3;25956:93;:::i;:::-;26074:2;26069:3;26065:12;26058:19;;25717:366;;;:::o;26089:419::-;26255:4;26293:2;26282:9;26278:18;26270:26;;26342:9;26336:4;26332:20;26328:1;26317:9;26313:17;26306:47;26370:131;26496:4;26370:131;:::i;:::-;26362:139;;26089:419;;;:::o;26514:143::-;26571:5;26602:6;26596:13;26587:22;;26618:33;26645:5;26618:33;:::i;:::-;26514:143;;;;:::o;26663:351::-;26733:6;26782:2;26770:9;26761:7;26757:23;26753:32;26750:119;;;26788:79;;:::i;:::-;26750:119;26908:1;26933:64;26989:7;26980:6;26969:9;26965:22;26933:64;:::i;:::-;26923:74;;26879:128;26663:351;;;;:::o;27020:85::-;27065:7;27094:5;27083:16;;27020:85;;;:::o;27111:158::-;27169:9;27202:61;27220:42;27229:32;27255:5;27229:32;:::i;:::-;27220:42;:::i;:::-;27202:61;:::i;:::-;27189:74;;27111:158;;;:::o;27275:147::-;27370:45;27409:5;27370:45;:::i;:::-;27365:3;27358:58;27275:147;;:::o;27428:114::-;27495:6;27529:5;27523:12;27513:22;;27428:114;;;:::o;27548:184::-;27647:11;27681:6;27676:3;27669:19;27721:4;27716:3;27712:14;27697:29;;27548:184;;;;:::o;27738:132::-;27805:4;27828:3;27820:11;;27858:4;27853:3;27849:14;27841:22;;27738:132;;;:::o;27876:108::-;27953:24;27971:5;27953:24;:::i;:::-;27948:3;27941:37;27876:108;;:::o;27990:179::-;28059:10;28080:46;28122:3;28114:6;28080:46;:::i;:::-;28158:4;28153:3;28149:14;28135:28;;27990:179;;;;:::o;28175:113::-;28245:4;28277;28272:3;28268:14;28260:22;;28175:113;;;:::o;28324:732::-;28443:3;28472:54;28520:5;28472:54;:::i;:::-;28542:86;28621:6;28616:3;28542:86;:::i;:::-;28535:93;;28652:56;28702:5;28652:56;:::i;:::-;28731:7;28762:1;28747:284;28772:6;28769:1;28766:13;28747:284;;;28848:6;28842:13;28875:63;28934:3;28919:13;28875:63;:::i;:::-;28868:70;;28961:60;29014:6;28961:60;:::i;:::-;28951:70;;28807:224;28794:1;28791;28787:9;28782:14;;28747:284;;;28751:14;29047:3;29040:10;;28448:608;;;28324:732;;;;:::o;29062:831::-;29325:4;29363:3;29352:9;29348:19;29340:27;;29377:71;29445:1;29434:9;29430:17;29421:6;29377:71;:::i;:::-;29458:80;29534:2;29523:9;29519:18;29510:6;29458:80;:::i;:::-;29585:9;29579:4;29575:20;29570:2;29559:9;29555:18;29548:48;29613:108;29716:4;29707:6;29613:108;:::i;:::-;29605:116;;29731:72;29799:2;29788:9;29784:18;29775:6;29731:72;:::i;:::-;29813:73;29881:3;29870:9;29866:19;29857:6;29813:73;:::i;:::-;29062:831;;;;;;;;:::o;29899:180::-;29947:77;29944:1;29937:88;30044:4;30041:1;30034:15;30068:4;30065:1;30058:15;30085:185;30125:1;30142:20;30160:1;30142:20;:::i;:::-;30137:25;;30176:20;30194:1;30176:20;:::i;:::-;30171:25;;30215:1;30205:35;;30220:18;;:::i;:::-;30205:35;30262:1;30259;30255:9;30250:14;;30085:185;;;;:::o;30276:177::-;30416:29;30412:1;30404:6;30400:14;30393:53;30276:177;:::o;30459:366::-;30601:3;30622:67;30686:2;30681:3;30622:67;:::i;:::-;30615:74;;30698:93;30787:3;30698:93;:::i;:::-;30816:2;30811:3;30807:12;30800:19;;30459:366;;;:::o;30831:419::-;30997:4;31035:2;31024:9;31020:18;31012:26;;31084:9;31078:4;31074:20;31070:1;31059:9;31055:17;31048:47;31112:131;31238:4;31112:131;:::i;:::-;31104:139;;30831:419;;;:::o;31256:410::-;31296:7;31319:20;31337:1;31319:20;:::i;:::-;31314:25;;31353:20;31371:1;31353:20;:::i;:::-;31348:25;;31408:1;31405;31401:9;31430:30;31448:11;31430:30;:::i;:::-;31419:41;;31609:1;31600:7;31596:15;31593:1;31590:22;31570:1;31563:9;31543:83;31520:139;;31639:18;;:::i;:::-;31520:139;31304:362;31256:410;;;;:::o;31672:220::-;31812:34;31808:1;31800:6;31796:14;31789:58;31881:3;31876:2;31868:6;31864:15;31857:28;31672:220;:::o;31898:366::-;32040:3;32061:67;32125:2;32120:3;32061:67;:::i;:::-;32054:74;;32137:93;32226:3;32137:93;:::i;:::-;32255:2;32250:3;32246:12;32239:19;;31898:366;;;:::o;32270:419::-;32436:4;32474:2;32463:9;32459:18;32451:26;;32523:9;32517:4;32513:20;32509:1;32498:9;32494:17;32487:47;32551:131;32677:4;32551:131;:::i;:::-;32543:139;;32270:419;;;:::o
Swarm Source
ipfs://c61f1fcf81675d5a9dd63d25c062ff691968d5f4fa3ca2fceeab8b2079133a4b
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.