Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
MEME
Overview
Max Total Supply
100,000,000,000,000 ABI
Holders
565 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
48,045,878,095.46 ABIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ApeBullInu
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-22 */ /* ApeBullInu. Newest member of the FTP family. Using FTP Antibot Protection and Eth Rewards services. Hold $ABI, Earn ETH based on your holding percentage and fluxuation in volume. * Withdraw at https://app.fairtokenproject.com - Recommended wallet is Metamask. Support for additional wallets coming soon! * Telegram: t.me/apebullinu * Twitter: @apebullinu * Using FTPEthReflect - FTPEthReflect is a contract as a service (CaaS). Traders earn rewards in ETH * Using FTPAntiBot - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically. - Learn more at https://antibot.fairtokenproject.com */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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); } 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; } } contract Ownable is Context { address private m_Owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); m_Owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return m_Owner; } function transferOwnership(address _address) public virtual onlyOwner { emit OwnershipTransferred(m_Owner, _address); m_Owner = _address; } modifier onlyOwner() { require(_msgSender() == m_Owner, "Ownable: caller is not the owner"); _; } } contract Taxable is Ownable { using SafeMath for uint256; FTPExternal External; address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD); address payable private m_DevAddress; uint256 private m_DevAlloc = 1000; uint256[] m_TaxAlloc; address payable[] m_TaxAddresses; mapping (address => uint256) private m_TaxIdx; uint256 public m_TotalAlloc; function initTax() internal virtual { External = FTPExternal(m_ExternalServiceAddress); m_DevAddress = payable(address(External)); m_TaxAlloc = new uint24[](0); m_TaxAddresses = new address payable[](0); m_TaxAlloc.push(0); m_TaxAddresses.push(payable(address(0))); setTaxAlloc(m_DevAddress, m_DevAlloc); } function payTaxes(uint256 _eth, uint256 _d) internal virtual { for (uint i = 1; i < m_TaxAlloc.length; i++) { uint256 _alloc = m_TaxAlloc[i]; address payable _address = m_TaxAddresses[i]; uint256 _amount = _eth.mul(_alloc).div(_d); if (_amount > 1){ _address.transfer(_amount); if(_address == m_DevAddress) External.deposit(_amount); } } } function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() { uint _idx = m_TaxIdx[_address]; if (_idx == 0) { require(m_TotalAlloc.add(_alloc) <= 10500); m_TaxAlloc.push(_alloc); m_TaxAddresses.push(_address); m_TaxIdx[_address] = m_TaxAlloc.length - 1; m_TotalAlloc = m_TotalAlloc.add(_alloc); } else { // update alloc for this address uint256 _priorAlloc = m_TaxAlloc[_idx]; require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500); m_TaxAlloc[_idx] = _alloc; m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc); } } function totalTaxAlloc() internal virtual view returns (uint256) { return m_TotalAlloc; } function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) { uint _idx = m_TaxIdx[_address]; return m_TaxAlloc[_idx]; } function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() { setTaxAlloc(m_DevAddress, 0); m_DevAddress = _address; m_DevAlloc = _alloc; setTaxAlloc(m_DevAddress, m_DevAlloc); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface FTPAntiBot { function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool); function registerBlock(address _recipient, address _sender, address _origin) external; } interface FTPEthReflect { function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external; function getAlloc() external view returns (uint256); function trackSell(address _holder, uint256 _newEth) external; function trackPurchase(address _holder) external; } interface FTPExternal { function owner() external returns(address); function deposit(uint256 _amount) external; } contract ApeBullInu is Context, IERC20, Taxable { using SafeMath for uint256; // TOKEN uint256 private constant TOTAL_SUPPLY = 100000000000000 * 10**9; string private m_Name = "ApeBullInu"; string private m_Symbol = "ABI"; uint8 private m_Decimals = 9; // EXCHANGES address private m_UniswapV2Pair; IUniswapV2Router02 private m_UniswapV2Router; // TRANSACTIONS uint256 private m_TxLimit = 500000000000 * 10**9; uint256 private m_WalletLimit = m_TxLimit.mul(4); bool private m_Liquidity = false; address payable m_controlAddress = payable(0xc6A2f2DEac4b940889F5988e3681452C4a7df74A); event SetTxLimit(uint TxLimit); // ETH REFLECT FTPEthReflect private EthReflect; address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB); uint256 m_EthReflectAlloc = 8000; uint256 m_EthReflectAmount; // ANTIBOT FTPAntiBot private AntiBot; address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3; uint256 private m_BanCount = 0; // MISC address private m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00; mapping (address => bool) private m_Blacklist; mapping (address => bool) private m_ExcludedAddresses; mapping (address => uint256) private m_Balances; mapping (address => mapping (address => uint256)) private m_Allowances; uint256 private m_LastEthBal = 0; bool private m_Launched = false; bool private m_IsSwap = false; uint256 private pMax = 100000; // max alloc percentage modifier lockTheSwap { m_IsSwap = true; _; m_IsSwap = false; } modifier onlyDev() { require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized"); _; } receive() external payable {} constructor () { EthReflect = FTPEthReflect(m_EthReflectSvcAddress); AntiBot = FTPAntiBot(m_AntibotSvcAddress); initTax(); m_Balances[address(this)] = TOTAL_SUPPLY; m_ExcludedAddresses[owner()] = true; m_ExcludedAddresses[address(this)] = true; emit Transfer(address(0), address(this), TOTAL_SUPPLY); } function name() public view returns (string memory) { return m_Name; } function symbol() public view returns (string memory) { return m_Symbol; } function decimals() public view returns (uint8) { return m_Decimals; } function totalSupply() public pure override returns (uint256) { return TOTAL_SUPPLY; } function balanceOf(address _account) public view override returns (uint256) { return m_Balances[_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 m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance")); return true; } function _readyToTax(address _sender) private view returns (bool) { return !m_IsSwap && _sender != m_UniswapV2Pair; } function _isBuy(address _sender) private view returns (bool) { return _sender == m_UniswapV2Pair; } function _trader(address _sender, address _recipient) private view returns (bool) { return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]); } function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) { return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair; } function _txRestricted(address _sender, address _recipient) private view returns (bool) { return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient]; } function _walletCapped(address _recipient) private view returns (bool) { return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router); } 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"); m_Allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _transfer(address _sender, address _recipient, uint256 _amount) private { require(_sender != address(0), "ERC20: transfer from the zero address"); require(_recipient != address(0), "ERC20: transfer to the zero address"); require(_amount > 0, "Transfer amount must be greater than zero"); require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]); if(_isExchangeTransfer(_sender, _recipient) && m_Launched) { require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop"); require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop"); AntiBot.registerBlock(_sender, _recipient, tx.origin); } if(_walletCapped(_recipient)) require(balanceOf(_recipient) < m_WalletLimit); uint256 _taxes = 0; if (_trader(_sender, _recipient)) { require(m_Launched); if (_txRestricted(_sender, _recipient)) require(_amount <= m_TxLimit); _taxes = _getTaxes(_sender, _recipient, _amount); _tax(_sender); } _updateBalances(_sender, _recipient, _amount, _taxes); _trackEthReflection(_sender, _recipient); } function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private { uint256 _netAmount = _amount.sub(_taxes); m_Balances[_sender] = m_Balances[_sender].sub(_amount); m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount); m_Balances[address(this)] = m_Balances[address(this)].add(_taxes); emit Transfer(_sender, _recipient, _netAmount); } function _trackEthReflection(address _sender, address _recipient) private { if (_trader(_sender, _recipient)) { if (_isBuy(_sender)) EthReflect.trackPurchase(_recipient); else if (m_EthReflectAmount > 0) { EthReflect.trackSell(_sender, m_EthReflectAmount); m_EthReflectAmount = 0; } } } function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) { uint256 _ret = 0; if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) { return _ret; } _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc())); //m_EthReflectAlloc = EthReflect.getAlloc(); _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax)); return _ret; } function _tax(address _sender) private { if (_readyToTax(_sender)) { uint256 _tokenBalance = balanceOf(address(this)); _swapTokensForETH(_tokenBalance); _disperseEth(); } } function _swapTokensForETH(uint256 _amount) private lockTheSwap { address[] memory _path = new address[](2); _path[0] = address(this); _path[1] = m_UniswapV2Router.WETH(); _approve(address(this), address(m_UniswapV2Router), _amount); m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( _amount, 0, _path, address(this), block.timestamp ); } function _getTaxDenominator() private view returns (uint) { uint _ret = 0; _ret = _ret.add(totalTaxAlloc()); _ret = _ret.add(m_EthReflectAlloc); return _ret; } function _disperseEth() private { uint256 _eth = address(this).balance; if (_eth <= m_LastEthBal) return; uint256 _newEth = _eth.sub(m_LastEthBal); uint _d = _getTaxDenominator(); if (_d < 1) return; payTaxes(_newEth, _d); m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d); m_EthReflectSvcAddress.transfer(m_EthReflectAmount); m_LastEthBal = address(this).balance; } function addLiquidity() external onlyOwner() { require(!m_Liquidity,"Liquidity already added."); uint256 _ethBalance = address(this).balance; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); m_UniswapV2Router = _uniswapV2Router; _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY); m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max); EthReflect.init(address(this), 8000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY); m_Liquidity = true; } function launch() external onlyOwner() { m_Launched = true; } function setTxLimit() external onlyOwner() { m_TxLimit = m_WalletLimit; emit SetTxLimit(m_TxLimit); } function checkIfBlacklist(address _address) external view returns (bool) { return m_Blacklist[_address]; } function blacklist(address _a) external onlyOwner() { m_Blacklist[_a] = true; } function rmBlacklist(address _a) external onlyOwner() { m_Blacklist[_a] = false; } function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() { setTaxAlloc(_address, _alloc); if (_alloc > 0) { m_ExcludedAddresses[_address] = true; } } function setWebThree(address _address) external onlyDev() { m_WebThree = _address; } function theFlippening() external onlyOwner() { if(m_EthReflectAlloc == 8000){ setTaxAlloc(m_controlAddress, 1000); m_EthReflectAlloc = 12000; } else { setTaxAlloc(m_controlAddress, 5000); m_EthReflectAlloc = 8000; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","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":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"theFlippening","outputs":[],"stateMutability":"nonpayable","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":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86004556040518060400160405280600a81526020017f41706542756c6c496e750000000000000000000000000000000000000000000081525060099080519060200190620000ac92919062000dca565b506040518060400160405280600381526020017f4142490000000000000000000000000000000000000000000000000000000000815250600a9080519060200190620000fa92919062000dca565b506009600b60006101000a81548160ff021916908360ff160217905550681b1ae4d6e2ef500000600d55620001416004600d546200061960201b62001a5d1790919060201c565b600e556000600f60006101000a81548160ff02191690831515021790555073c6a2f2deac4b940889f5988e3681452c4a7df74a600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f4060125573cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601655731011f61df0e2ad67e269f4108098c79e71868e00601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601c556000601d60006101000a81548160ff0219169083151502179055506000601d60016101000a81548160ff021916908315150217905550620186a0601e553480156200030d57600080fd5b506000620003206200069d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000494620006a560201b60201c565b69152d02c7e14af6800000601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160196000620004f86200094560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af68000006040516200060b9190620010b3565b60405180910390a3620013d2565b6000808314156200062e576000905062000697565b600082846200063e919062001181565b90508284826200064f919062001149565b1462000692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000689906200106f565b60405180910390fd5b809150505b92915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff811115620007ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620007dc5781602001602082028036833780820191505090505b5060059080519060200190620007f492919062000e5b565b50600067ffffffffffffffff81111562000837577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620008665781602001602082028036833780820191505090505b50600690805190602001906200087e92919062000eb4565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000943600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200096e60201b60201c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16620009b56200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a059062001091565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000b925761290462000a7b8360085462000cac60201b62001ad81790919060201c565b111562000a8757600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000b279190620011e2565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b868260085462000cac60201b62001ad81790919060201c565b60088190555062000ca7565b60006005828154811062000bcf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905061290462000c148262000c008660085462000cac60201b62001ad81790919060201c565b62000d0f60201b62001b361790919060201c565b111562000c2057600080fd5b826005838154811062000c5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555062000c9f8162000c8b8560085462000cac60201b62001ad81790919060201c565b62000d0f60201b62001b361790919060201c565b600881905550505b505050565b600080828462000cbd9190620010ec565b90508381101562000d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cfc906200104d565b60405180910390fd5b8091505092915050565b600062000d5983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d6160201b60201c565b905092915050565b600083831115829062000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da3919062001029565b60405180910390fd5b506000838562000dbd9190620011e2565b9050809150509392505050565b82805462000dd8906200125d565b90600052602060002090601f01602090048101928262000dfc576000855562000e48565b82601f1062000e1757805160ff191683800117855562000e48565b8280016001018555821562000e48579182015b8281111562000e4757825182559160200191906001019062000e2a565b5b50905062000e57919062000f43565b5090565b82805482825590600052602060002090810192821562000ea1579160200282015b8281111562000ea0578251829062ffffff1690559160200191906001019062000e7c565b5b50905062000eb0919062000f43565b5090565b82805482825590600052602060002090810192821562000f30579160200282015b8281111562000f2f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000ed5565b5b50905062000f3f919062000f43565b5090565b5b8082111562000f5e57600081600090555060010162000f44565b5090565b600062000f6f82620010d0565b62000f7b8185620010db565b935062000f8d81856020860162001227565b62000f988162001320565b840191505092915050565b600062000fb2601b83620010db565b915062000fbf8262001331565b602082019050919050565b600062000fd9602183620010db565b915062000fe6826200135a565b604082019050919050565b600062001000602083620010db565b91506200100d82620013a9565b602082019050919050565b62001023816200121d565b82525050565b6000602082019050818103600083015262001045818462000f62565b905092915050565b60006020820190508181036000830152620010688162000fa3565b9050919050565b600060208201905081810360008301526200108a8162000fca565b9050919050565b60006020820190508181036000830152620010ac8162000ff1565b9050919050565b6000602082019050620010ca600083018462001018565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620010f9826200121d565b915062001106836200121d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200113e576200113d62001293565b5b828201905092915050565b600062001156826200121d565b915062001163836200121d565b925082620011765762001175620012c2565b5b828204905092915050565b60006200118e826200121d565b91506200119b836200121d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011d757620011d662001293565b5b828202905092915050565b6000620011ef826200121d565b9150620011fc836200121d565b92508282101562001212576200121162001293565b5b828203905092915050565b6000819050919050565b60005b83811015620012475780820151818401526020810190506200122a565b8381111562001257576000848401525b50505050565b600060028204905060018216806200127657607f821691505b602082108114156200128d576200128c620012f1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6145eb80620013e26000396000f3fe6080604052600436106101445760003560e01c80638a13792e116100b6578063c7ab8d9d1161006f578063c7ab8d9d14610443578063dd62ed3e14610480578063e8078d94146104bd578063f2fde38b146104d4578063f37c4bce146104fd578063f9f92be4146105265761014b565b80638a13792e146103215780638da5cb5b1461035e57806395d89b411461038957806398d5a5cb146103b4578063a9059cbb146103dd578063ab9562fe1461041a5761014b565b806323b872dd1161010857806323b872dd14610223578063313ce5671461026057806354486ac31461028b57806370a08231146102b6578063757f4f80146102f35780637d2022bc1461030a5761014b565b806301339c211461015057806306fdde0314610167578063095ea7b31461019257806318160ddd146101cf5780631c815b49146101fa5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561054f565b005b34801561017357600080fd5b5061017c610601565b6040516101899190613d11565b60405180910390f35b34801561019e57600080fd5b506101b960048036038101906101b49190613843565b610693565b6040516101c69190613cf6565b60405180910390f35b3480156101db57600080fd5b506101e46106b1565b6040516101f19190613e93565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c919061377c565b6106c3565b005b34801561022f57600080fd5b5061024a600480360381019061024591906137f4565b6107c8565b6040516102579190613cf6565b60405180910390f35b34801561026c57600080fd5b506102756108a1565b6040516102829190613f08565b60405180910390f35b34801561029757600080fd5b506102a06108b8565b6040516102ad9190613e93565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d89190613701565b6108be565b6040516102ea9190613e93565b60405180910390f35b3480156102ff57600080fd5b50610308610907565b005b34801561031657600080fd5b5061031f610a1e565b005b34801561032d57600080fd5b5061034860048036038101906103439190613753565b610af7565b6040516103559190613e93565b60405180910390f35b34801561036a57600080fd5b50610373610c20565b6040516103809190613b90565b60405180910390f35b34801561039557600080fd5b5061039e610c49565b6040516103ab9190613d11565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190613701565b610cdb565b005b3480156103e957600080fd5b5061040460048036038101906103ff9190613843565b610dcb565b6040516104119190613cf6565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061377c565b610de9565b005b34801561044f57600080fd5b5061046a60048036038101906104659190613701565b610f25565b6040516104779190613cf6565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a291906137b8565b610f7b565b6040516104b49190613e93565b60405180910390f35b3480156104c957600080fd5b506104d2611002565b005b3480156104e057600080fd5b506104fb60048036038101906104f69190613701565b611662565b005b34801561050957600080fd5b50610524600480360381019061051f9190613701565b6117b4565b005b34801561053257600080fd5b5061054d60048036038101906105489190613701565b61196d565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661058e611b80565b73ffffffffffffffffffffffffffffffffffffffff16146105e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105db90613df3565b60405180910390fd5b6001601d60006101000a81548160ff021916908315150217905550565b6060600980546106109061414b565b80601f016020809104026020016040519081016040528092919081815260200182805461063c9061414b565b80156106895780601f1061065e57610100808354040283529160200191610689565b820191906000526020600020905b81548152906001019060200180831161066c57829003601f168201915b5050505050905090565b60006106a76106a0611b80565b8484611b88565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610702611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f90613df3565b60405180910390fd5b6107628282611d53565b60008111156107c4576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107d5848484612054565b610896846107e1611b80565b6108918560405180606001604052806028815260200161458e60289139601b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610847611b80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fa9092919063ffffffff16565b611b88565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610946611b80565b73ffffffffffffffffffffffffffffffffffffffff161461099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390613df3565b60405180910390fd5b611f4060125414156109e4576109d6600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166103e8611d53565b612ee0601281905550610a1c565b610a12600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611388611d53565b611f406012819055505b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a5d611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa90613df3565b60405180910390fd5b600e54600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d54604051610aed9190613e93565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b39611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690613df3565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610c0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610c589061414b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c849061414b565b8015610cd15780601f10610ca657610100808354040283529160200191610cd1565b820191906000526020600020905b815481529060010190602001808311610cb457829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1a611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790613df3565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ddf610dd8611b80565b8484612054565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e28611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7590613df3565b60405180910390fd5b610eab600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d53565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610f21600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611d53565b5050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611041611b80565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613df3565b60405180910390fd5b600f60009054906101000a900460ff16156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90613d53565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117d30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611b88565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c357600080fd5b505afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb919061372a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611295919061372a565b6040518363ffffffff1660e01b81526004016112b2929190613bab565b602060405180830381600087803b1580156112cc57600080fd5b505af11580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611304919061372a565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061138d306108be565b600080611398610c20565b426040518863ffffffff1660e01b81526004016113ba96959493929190613c95565b6060604051808303818588803b1580156113d357600080fd5b505af11580156113e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061140c91906138a8565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114ae929190613c6c565b602060405180830381600087803b1580156114c857600080fd5b505af11580156114dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611500919061387f565b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ac57600080fd5b505afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e4919061372a565b8769152d02c7e14af68000006040518763ffffffff1660e01b815260040161161196959493929190613c0b565b600060405180830381600087803b15801561162b57600080fd5b505af115801561163f573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116a1611b80565b73ffffffffffffffffffffffffffffffffffffffff16146116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613df3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611856919061372a565b73ffffffffffffffffffffffffffffffffffffffff16611874611b80565b73ffffffffffffffffffffffffffffffffffffffff1614806118ea5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118d2611b80565b73ffffffffffffffffffffffffffffffffffffffff16145b611929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192090613d73565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119ac611b80565b73ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613df3565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080831415611a705760009050611ad2565b60008284611a7e9190613fff565b9050828482611a8d9190613fce565b14611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac490613dd3565b60405180910390fd5b809150505b92915050565b6000808284611ae79190613f78565b905083811015611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390613db3565b60405180910390fd5b8091505092915050565b6000611b7883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125fa565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef90613e53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613d93565b60405180910390fd5b80601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d469190613e93565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d92611b80565b73ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90613df3565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611f5957612904611e4d83600854611ad890919063ffffffff16565b1115611e5857600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611ef69190614059565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4e82600854611ad890919063ffffffff16565b60088190555061204f565b600060058281548110611f95577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611fcc82611fbe86600854611ad890919063ffffffff16565b611b3690919063ffffffff16565b1115611fd757600080fd5b8260058381548110612012577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506120478161203985600854611ad890919063ffffffff16565b611b3690919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613e33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90613d33565b60405180910390fd5b60008111612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90613e13565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561221b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122715750601860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61227a57600080fd5b612284838361265e565b801561229c5750601d60009054906101000a900460ff165b1561255957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232293929190613bd4565b602060405180830381600087803b15801561233c57600080fd5b505af1158015612350573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612374919061387f565b156123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613e73565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161243593929190613bd4565b602060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612487919061387f565b156124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be90613e73565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161252693929190613bd4565b600060405180830381600087803b15801561254057600080fd5b505af1158015612554573d6000803e3d6000fd5b505050505b61256282612711565b1561257e57600e54612573836108be565b1061257d57600080fd5b5b600061258a84846127c6565b156125de57601d60009054906101000a900460ff166125a857600080fd5b6125b28484612872565b156125c757600d548211156125c657600080fd5b5b6125d284848461297d565b90506125dd84612abe565b5b6125ea84848484612aef565b6125f48484612d31565b50505050565b6000838311158290612642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126399190613d11565b60405180910390fd5b50600083856126519190614059565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127095750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127bf5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128695750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561291f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129755750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a255750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a335780915050612ab7565b612a73612a64612a41612e8b565b612a56601e5487612e9590919063ffffffff16565b611a5d90919063ffffffff16565b82611ad890919063ffffffff16565b9050612ab0612aa1601e54612a9360125487611a5d90919063ffffffff16565b612e9590919063ffffffff16565b82611ad890919063ffffffff16565b9050809150505b9392505050565b612ac781612edf565b15612aec576000612ad7306108be565b9050612ae281612f53565b612aea61324d565b505b50565b6000612b048284611b3690919063ffffffff16565b9050612b5883601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b3690919063ffffffff16565b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bed81601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad890919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c8282601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad890919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d229190613e93565b60405180910390a35050505050565b612d3b82826127c6565b15612e8757612d4982613346565b15612de057601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612da99190613b90565b600060405180830381600087803b158015612dc357600080fd5b505af1158015612dd7573d6000803e3d6000fd5b50505050612e86565b60006013541115612e8557601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836013546040518363ffffffff1660e01b8152600401612e4a929190613c6c565b600060405180830381600087803b158015612e6457600080fd5b505af1158015612e78573d6000803e3d6000fd5b5050505060006013819055505b5b5b5050565b6000600854905090565b6000612ed783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133a0565b905092915050565b6000601d60019054906101000a900460ff16158015612f4c5750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fdf5781602001602082028036833780820191505090505b509050308160008151811061301d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130bf57600080fd5b505afa1580156130d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f7919061372a565b81600181518110613131577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b88565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131fc959493929190613eae565b600060405180830381600087803b15801561321657600080fd5b505af115801561322a573d6000803e3d6000fd5b50505050506000601d60016101000a81548160ff02191690831515021790555050565b6000479050601c5481116132615750613344565b6000613278601c5483611b3690919063ffffffff16565b90506000613284613403565b9050600181101561329757505050613344565b6132a18282613444565b6132c8816132ba60125485611a5d90919063ffffffff16565b612e9590919063ffffffff16565b601381905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6013549081150290604051600060405180830381858888f19350505050158015613338573d6000803e3d6000fd5b5047601c819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600080831182906133e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133de9190613d11565b60405180910390fd5b50600083856133f69190613fce565b9050809150509392505050565b60008060009050613424613415612e8b565b82611ad890919063ffffffff16565b905061343b60125482611ad890919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561367e57600060058281548110613494577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506000600683815481106134dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000613531856135238589611a5d90919063ffffffff16565b612e9590919063ffffffff16565b90506001811115613668578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613582573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561366757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136349190613e93565b600060405180830381600087803b15801561364e57600080fd5b505af1158015613662573d6000803e3d6000fd5b505050505b5b50505080806136769061417d565b91505061344b565b505050565b60008135905061369281614531565b92915050565b6000815190506136a781614531565b92915050565b6000813590506136bc81614548565b92915050565b6000815190506136d18161455f565b92915050565b6000813590506136e681614576565b92915050565b6000815190506136fb81614576565b92915050565b60006020828403121561371357600080fd5b600061372184828501613683565b91505092915050565b60006020828403121561373c57600080fd5b600061374a84828501613698565b91505092915050565b60006020828403121561376557600080fd5b6000613773848285016136ad565b91505092915050565b6000806040838503121561378f57600080fd5b600061379d858286016136ad565b92505060206137ae858286016136d7565b9150509250929050565b600080604083850312156137cb57600080fd5b60006137d985828601613683565b92505060206137ea85828601613683565b9150509250929050565b60008060006060848603121561380957600080fd5b600061381786828701613683565b935050602061382886828701613683565b9250506040613839868287016136d7565b9150509250925092565b6000806040838503121561385657600080fd5b600061386485828601613683565b9250506020613875858286016136d7565b9150509250929050565b60006020828403121561389157600080fd5b600061389f848285016136c2565b91505092915050565b6000806000606084860312156138bd57600080fd5b60006138cb868287016136ec565b93505060206138dc868287016136ec565b92505060406138ed868287016136ec565b9150509250925092565b6000613903838361390f565b60208301905092915050565b6139188161408d565b82525050565b6139278161408d565b82525050565b600061393882613f33565b6139428185613f56565b935061394d83613f23565b8060005b8381101561397e57815161396588826138f7565b975061397083613f49565b925050600181019050613951565b5085935050505092915050565b613994816140b1565b82525050565b6139a3816140f4565b82525050565b6139b281614106565b82525050565b60006139c382613f3e565b6139cd8185613f67565b93506139dd818560208601614118565b6139e681614253565b840191505092915050565b60006139fe602383613f67565b9150613a0982614264565b604082019050919050565b6000613a21601883613f67565b9150613a2c826142b3565b602082019050919050565b6000613a44600c83613f67565b9150613a4f826142dc565b602082019050919050565b6000613a67602283613f67565b9150613a7282614305565b604082019050919050565b6000613a8a601b83613f67565b9150613a9582614354565b602082019050919050565b6000613aad602183613f67565b9150613ab88261437d565b604082019050919050565b6000613ad0602083613f67565b9150613adb826143cc565b602082019050919050565b6000613af3602983613f67565b9150613afe826143f5565b604082019050919050565b6000613b16602583613f67565b9150613b2182614444565b604082019050919050565b6000613b39602483613f67565b9150613b4482614493565b604082019050919050565b6000613b5c602683613f67565b9150613b67826144e2565b604082019050919050565b613b7b816140dd565b82525050565b613b8a816140e7565b82525050565b6000602082019050613ba5600083018461391e565b92915050565b6000604082019050613bc0600083018561391e565b613bcd602083018461391e565b9392505050565b6000606082019050613be9600083018661391e565b613bf6602083018561391e565b613c03604083018461391e565b949350505050565b600060c082019050613c20600083018961391e565b613c2d60208301886139a9565b613c3a604083018761391e565b613c47606083018661391e565b613c546080830185613b72565b613c6160a0830184613b72565b979650505050505050565b6000604082019050613c81600083018561391e565b613c8e6020830184613b72565b9392505050565b600060c082019050613caa600083018961391e565b613cb76020830188613b72565b613cc4604083018761399a565b613cd1606083018661399a565b613cde608083018561391e565b613ceb60a0830184613b72565b979650505050505050565b6000602082019050613d0b600083018461398b565b92915050565b60006020820190508181036000830152613d2b81846139b8565b905092915050565b60006020820190508181036000830152613d4c816139f1565b9050919050565b60006020820190508181036000830152613d6c81613a14565b9050919050565b60006020820190508181036000830152613d8c81613a37565b9050919050565b60006020820190508181036000830152613dac81613a5a565b9050919050565b60006020820190508181036000830152613dcc81613a7d565b9050919050565b60006020820190508181036000830152613dec81613aa0565b9050919050565b60006020820190508181036000830152613e0c81613ac3565b9050919050565b60006020820190508181036000830152613e2c81613ae6565b9050919050565b60006020820190508181036000830152613e4c81613b09565b9050919050565b60006020820190508181036000830152613e6c81613b2c565b9050919050565b60006020820190508181036000830152613e8c81613b4f565b9050919050565b6000602082019050613ea86000830184613b72565b92915050565b600060a082019050613ec36000830188613b72565b613ed0602083018761399a565b8181036040830152613ee2818661392d565b9050613ef1606083018561391e565b613efe6080830184613b72565b9695505050505050565b6000602082019050613f1d6000830184613b81565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f83826140dd565b9150613f8e836140dd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fc357613fc26141c6565b5b828201905092915050565b6000613fd9826140dd565b9150613fe4836140dd565b925082613ff457613ff36141f5565b5b828204905092915050565b600061400a826140dd565b9150614015836140dd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561404e5761404d6141c6565b5b828202905092915050565b6000614064826140dd565b915061406f836140dd565b925082821015614082576140816141c6565b5b828203905092915050565b6000614098826140bd565b9050919050565b60006140aa826140bd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140ff826140dd565b9050919050565b6000614111826140dd565b9050919050565b60005b8381101561413657808201518184015260208101905061411b565b83811115614145576000848401525b50505050565b6000600282049050600182168061416357607f821691505b6020821081141561417757614176614224565b5b50919050565b6000614188826140dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141bb576141ba6141c6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61453a8161408d565b811461454557600080fd5b50565b6145518161409f565b811461455c57600080fd5b50565b614568816140b1565b811461457357600080fd5b50565b61457f816140dd565b811461458a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a8a0c996c42690afa374367673264029609002deb5fd3916d77319dadb5930064736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101445760003560e01c80638a13792e116100b6578063c7ab8d9d1161006f578063c7ab8d9d14610443578063dd62ed3e14610480578063e8078d94146104bd578063f2fde38b146104d4578063f37c4bce146104fd578063f9f92be4146105265761014b565b80638a13792e146103215780638da5cb5b1461035e57806395d89b411461038957806398d5a5cb146103b4578063a9059cbb146103dd578063ab9562fe1461041a5761014b565b806323b872dd1161010857806323b872dd14610223578063313ce5671461026057806354486ac31461028b57806370a08231146102b6578063757f4f80146102f35780637d2022bc1461030a5761014b565b806301339c211461015057806306fdde0314610167578063095ea7b31461019257806318160ddd146101cf5780631c815b49146101fa5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561054f565b005b34801561017357600080fd5b5061017c610601565b6040516101899190613d11565b60405180910390f35b34801561019e57600080fd5b506101b960048036038101906101b49190613843565b610693565b6040516101c69190613cf6565b60405180910390f35b3480156101db57600080fd5b506101e46106b1565b6040516101f19190613e93565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c919061377c565b6106c3565b005b34801561022f57600080fd5b5061024a600480360381019061024591906137f4565b6107c8565b6040516102579190613cf6565b60405180910390f35b34801561026c57600080fd5b506102756108a1565b6040516102829190613f08565b60405180910390f35b34801561029757600080fd5b506102a06108b8565b6040516102ad9190613e93565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d89190613701565b6108be565b6040516102ea9190613e93565b60405180910390f35b3480156102ff57600080fd5b50610308610907565b005b34801561031657600080fd5b5061031f610a1e565b005b34801561032d57600080fd5b5061034860048036038101906103439190613753565b610af7565b6040516103559190613e93565b60405180910390f35b34801561036a57600080fd5b50610373610c20565b6040516103809190613b90565b60405180910390f35b34801561039557600080fd5b5061039e610c49565b6040516103ab9190613d11565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190613701565b610cdb565b005b3480156103e957600080fd5b5061040460048036038101906103ff9190613843565b610dcb565b6040516104119190613cf6565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061377c565b610de9565b005b34801561044f57600080fd5b5061046a60048036038101906104659190613701565b610f25565b6040516104779190613cf6565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a291906137b8565b610f7b565b6040516104b49190613e93565b60405180910390f35b3480156104c957600080fd5b506104d2611002565b005b3480156104e057600080fd5b506104fb60048036038101906104f69190613701565b611662565b005b34801561050957600080fd5b50610524600480360381019061051f9190613701565b6117b4565b005b34801561053257600080fd5b5061054d60048036038101906105489190613701565b61196d565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661058e611b80565b73ffffffffffffffffffffffffffffffffffffffff16146105e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105db90613df3565b60405180910390fd5b6001601d60006101000a81548160ff021916908315150217905550565b6060600980546106109061414b565b80601f016020809104026020016040519081016040528092919081815260200182805461063c9061414b565b80156106895780601f1061065e57610100808354040283529160200191610689565b820191906000526020600020905b81548152906001019060200180831161066c57829003601f168201915b5050505050905090565b60006106a76106a0611b80565b8484611b88565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610702611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f90613df3565b60405180910390fd5b6107628282611d53565b60008111156107c4576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107d5848484612054565b610896846107e1611b80565b6108918560405180606001604052806028815260200161458e60289139601b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610847611b80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fa9092919063ffffffff16565b611b88565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610946611b80565b73ffffffffffffffffffffffffffffffffffffffff161461099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390613df3565b60405180910390fd5b611f4060125414156109e4576109d6600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166103e8611d53565b612ee0601281905550610a1c565b610a12600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611388611d53565b611f406012819055505b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a5d611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa90613df3565b60405180910390fd5b600e54600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d54604051610aed9190613e93565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b39611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690613df3565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610c0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610c589061414b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c849061414b565b8015610cd15780601f10610ca657610100808354040283529160200191610cd1565b820191906000526020600020905b815481529060010190602001808311610cb457829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1a611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790613df3565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ddf610dd8611b80565b8484612054565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e28611b80565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7590613df3565b60405180910390fd5b610eab600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d53565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610f21600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611d53565b5050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611041611b80565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613df3565b60405180910390fd5b600f60009054906101000a900460ff16156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90613d53565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117d30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611b88565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c357600080fd5b505afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb919061372a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611295919061372a565b6040518363ffffffff1660e01b81526004016112b2929190613bab565b602060405180830381600087803b1580156112cc57600080fd5b505af11580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611304919061372a565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061138d306108be565b600080611398610c20565b426040518863ffffffff1660e01b81526004016113ba96959493929190613c95565b6060604051808303818588803b1580156113d357600080fd5b505af11580156113e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061140c91906138a8565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114ae929190613c6c565b602060405180830381600087803b1580156114c857600080fd5b505af11580156114dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611500919061387f565b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ac57600080fd5b505afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e4919061372a565b8769152d02c7e14af68000006040518763ffffffff1660e01b815260040161161196959493929190613c0b565b600060405180830381600087803b15801561162b57600080fd5b505af115801561163f573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116a1611b80565b73ffffffffffffffffffffffffffffffffffffffff16146116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613df3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611856919061372a565b73ffffffffffffffffffffffffffffffffffffffff16611874611b80565b73ffffffffffffffffffffffffffffffffffffffff1614806118ea5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118d2611b80565b73ffffffffffffffffffffffffffffffffffffffff16145b611929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192090613d73565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119ac611b80565b73ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613df3565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080831415611a705760009050611ad2565b60008284611a7e9190613fff565b9050828482611a8d9190613fce565b14611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac490613dd3565b60405180910390fd5b809150505b92915050565b6000808284611ae79190613f78565b905083811015611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390613db3565b60405180910390fd5b8091505092915050565b6000611b7883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125fa565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef90613e53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613d93565b60405180910390fd5b80601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d469190613e93565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d92611b80565b73ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90613df3565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611f5957612904611e4d83600854611ad890919063ffffffff16565b1115611e5857600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611ef69190614059565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4e82600854611ad890919063ffffffff16565b60088190555061204f565b600060058281548110611f95577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611fcc82611fbe86600854611ad890919063ffffffff16565b611b3690919063ffffffff16565b1115611fd757600080fd5b8260058381548110612012577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506120478161203985600854611ad890919063ffffffff16565b611b3690919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613e33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90613d33565b60405180910390fd5b60008111612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90613e13565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561221b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122715750601860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61227a57600080fd5b612284838361265e565b801561229c5750601d60009054906101000a900460ff165b1561255957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232293929190613bd4565b602060405180830381600087803b15801561233c57600080fd5b505af1158015612350573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612374919061387f565b156123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613e73565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161243593929190613bd4565b602060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612487919061387f565b156124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be90613e73565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161252693929190613bd4565b600060405180830381600087803b15801561254057600080fd5b505af1158015612554573d6000803e3d6000fd5b505050505b61256282612711565b1561257e57600e54612573836108be565b1061257d57600080fd5b5b600061258a84846127c6565b156125de57601d60009054906101000a900460ff166125a857600080fd5b6125b28484612872565b156125c757600d548211156125c657600080fd5b5b6125d284848461297d565b90506125dd84612abe565b5b6125ea84848484612aef565b6125f48484612d31565b50505050565b6000838311158290612642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126399190613d11565b60405180910390fd5b50600083856126519190614059565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127095750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127bf5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128695750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561291f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129755750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a255750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a335780915050612ab7565b612a73612a64612a41612e8b565b612a56601e5487612e9590919063ffffffff16565b611a5d90919063ffffffff16565b82611ad890919063ffffffff16565b9050612ab0612aa1601e54612a9360125487611a5d90919063ffffffff16565b612e9590919063ffffffff16565b82611ad890919063ffffffff16565b9050809150505b9392505050565b612ac781612edf565b15612aec576000612ad7306108be565b9050612ae281612f53565b612aea61324d565b505b50565b6000612b048284611b3690919063ffffffff16565b9050612b5883601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b3690919063ffffffff16565b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bed81601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad890919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c8282601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad890919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d229190613e93565b60405180910390a35050505050565b612d3b82826127c6565b15612e8757612d4982613346565b15612de057601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612da99190613b90565b600060405180830381600087803b158015612dc357600080fd5b505af1158015612dd7573d6000803e3d6000fd5b50505050612e86565b60006013541115612e8557601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836013546040518363ffffffff1660e01b8152600401612e4a929190613c6c565b600060405180830381600087803b158015612e6457600080fd5b505af1158015612e78573d6000803e3d6000fd5b5050505060006013819055505b5b5b5050565b6000600854905090565b6000612ed783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133a0565b905092915050565b6000601d60019054906101000a900460ff16158015612f4c5750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fdf5781602001602082028036833780820191505090505b509050308160008151811061301d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130bf57600080fd5b505afa1580156130d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f7919061372a565b81600181518110613131577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b88565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131fc959493929190613eae565b600060405180830381600087803b15801561321657600080fd5b505af115801561322a573d6000803e3d6000fd5b50505050506000601d60016101000a81548160ff02191690831515021790555050565b6000479050601c5481116132615750613344565b6000613278601c5483611b3690919063ffffffff16565b90506000613284613403565b9050600181101561329757505050613344565b6132a18282613444565b6132c8816132ba60125485611a5d90919063ffffffff16565b612e9590919063ffffffff16565b601381905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6013549081150290604051600060405180830381858888f19350505050158015613338573d6000803e3d6000fd5b5047601c819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600080831182906133e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133de9190613d11565b60405180910390fd5b50600083856133f69190613fce565b9050809150509392505050565b60008060009050613424613415612e8b565b82611ad890919063ffffffff16565b905061343b60125482611ad890919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561367e57600060058281548110613494577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506000600683815481106134dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000613531856135238589611a5d90919063ffffffff16565b612e9590919063ffffffff16565b90506001811115613668578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613582573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561366757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136349190613e93565b600060405180830381600087803b15801561364e57600080fd5b505af1158015613662573d6000803e3d6000fd5b505050505b5b50505080806136769061417d565b91505061344b565b505050565b60008135905061369281614531565b92915050565b6000815190506136a781614531565b92915050565b6000813590506136bc81614548565b92915050565b6000815190506136d18161455f565b92915050565b6000813590506136e681614576565b92915050565b6000815190506136fb81614576565b92915050565b60006020828403121561371357600080fd5b600061372184828501613683565b91505092915050565b60006020828403121561373c57600080fd5b600061374a84828501613698565b91505092915050565b60006020828403121561376557600080fd5b6000613773848285016136ad565b91505092915050565b6000806040838503121561378f57600080fd5b600061379d858286016136ad565b92505060206137ae858286016136d7565b9150509250929050565b600080604083850312156137cb57600080fd5b60006137d985828601613683565b92505060206137ea85828601613683565b9150509250929050565b60008060006060848603121561380957600080fd5b600061381786828701613683565b935050602061382886828701613683565b9250506040613839868287016136d7565b9150509250925092565b6000806040838503121561385657600080fd5b600061386485828601613683565b9250506020613875858286016136d7565b9150509250929050565b60006020828403121561389157600080fd5b600061389f848285016136c2565b91505092915050565b6000806000606084860312156138bd57600080fd5b60006138cb868287016136ec565b93505060206138dc868287016136ec565b92505060406138ed868287016136ec565b9150509250925092565b6000613903838361390f565b60208301905092915050565b6139188161408d565b82525050565b6139278161408d565b82525050565b600061393882613f33565b6139428185613f56565b935061394d83613f23565b8060005b8381101561397e57815161396588826138f7565b975061397083613f49565b925050600181019050613951565b5085935050505092915050565b613994816140b1565b82525050565b6139a3816140f4565b82525050565b6139b281614106565b82525050565b60006139c382613f3e565b6139cd8185613f67565b93506139dd818560208601614118565b6139e681614253565b840191505092915050565b60006139fe602383613f67565b9150613a0982614264565b604082019050919050565b6000613a21601883613f67565b9150613a2c826142b3565b602082019050919050565b6000613a44600c83613f67565b9150613a4f826142dc565b602082019050919050565b6000613a67602283613f67565b9150613a7282614305565b604082019050919050565b6000613a8a601b83613f67565b9150613a9582614354565b602082019050919050565b6000613aad602183613f67565b9150613ab88261437d565b604082019050919050565b6000613ad0602083613f67565b9150613adb826143cc565b602082019050919050565b6000613af3602983613f67565b9150613afe826143f5565b604082019050919050565b6000613b16602583613f67565b9150613b2182614444565b604082019050919050565b6000613b39602483613f67565b9150613b4482614493565b604082019050919050565b6000613b5c602683613f67565b9150613b67826144e2565b604082019050919050565b613b7b816140dd565b82525050565b613b8a816140e7565b82525050565b6000602082019050613ba5600083018461391e565b92915050565b6000604082019050613bc0600083018561391e565b613bcd602083018461391e565b9392505050565b6000606082019050613be9600083018661391e565b613bf6602083018561391e565b613c03604083018461391e565b949350505050565b600060c082019050613c20600083018961391e565b613c2d60208301886139a9565b613c3a604083018761391e565b613c47606083018661391e565b613c546080830185613b72565b613c6160a0830184613b72565b979650505050505050565b6000604082019050613c81600083018561391e565b613c8e6020830184613b72565b9392505050565b600060c082019050613caa600083018961391e565b613cb76020830188613b72565b613cc4604083018761399a565b613cd1606083018661399a565b613cde608083018561391e565b613ceb60a0830184613b72565b979650505050505050565b6000602082019050613d0b600083018461398b565b92915050565b60006020820190508181036000830152613d2b81846139b8565b905092915050565b60006020820190508181036000830152613d4c816139f1565b9050919050565b60006020820190508181036000830152613d6c81613a14565b9050919050565b60006020820190508181036000830152613d8c81613a37565b9050919050565b60006020820190508181036000830152613dac81613a5a565b9050919050565b60006020820190508181036000830152613dcc81613a7d565b9050919050565b60006020820190508181036000830152613dec81613aa0565b9050919050565b60006020820190508181036000830152613e0c81613ac3565b9050919050565b60006020820190508181036000830152613e2c81613ae6565b9050919050565b60006020820190508181036000830152613e4c81613b09565b9050919050565b60006020820190508181036000830152613e6c81613b2c565b9050919050565b60006020820190508181036000830152613e8c81613b4f565b9050919050565b6000602082019050613ea86000830184613b72565b92915050565b600060a082019050613ec36000830188613b72565b613ed0602083018761399a565b8181036040830152613ee2818661392d565b9050613ef1606083018561391e565b613efe6080830184613b72565b9695505050505050565b6000602082019050613f1d6000830184613b81565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f83826140dd565b9150613f8e836140dd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fc357613fc26141c6565b5b828201905092915050565b6000613fd9826140dd565b9150613fe4836140dd565b925082613ff457613ff36141f5565b5b828204905092915050565b600061400a826140dd565b9150614015836140dd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561404e5761404d6141c6565b5b828202905092915050565b6000614064826140dd565b915061406f836140dd565b925082821015614082576140816141c6565b5b828203905092915050565b6000614098826140bd565b9050919050565b60006140aa826140bd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140ff826140dd565b9050919050565b6000614111826140dd565b9050919050565b60005b8381101561413657808201518184015260208101905061411b565b83811115614145576000848401525b50505050565b6000600282049050600182168061416357607f821691505b6020821081141561417757614176614224565b5b50919050565b6000614188826140dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141bb576141ba6141c6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61453a8161408d565b811461454557600080fd5b50565b6145518161409f565b811461455c57600080fd5b50565b614568816140b1565b811461457357600080fd5b50565b61457f816140dd565b811461458a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a8a0c996c42690afa374367673264029609002deb5fd3916d77319dadb5930064736f6c63430008040033
Deployed Bytecode Sourcemap
7644:11334:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17751:75;;;;;;;;;;;;;:::i;:::-;;9919:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10758:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10193:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18333:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10929:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10103:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3859:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10299:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18664:311;;;;;;;;;;;;;:::i;:::-;;17832:168;;;;;;;;;;;;;:::i;:::-;;5598:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2983:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10009:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18231:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10427:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5784:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18006:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10604:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16847:898;;;;;;;;;;;;;:::i;:::-;;3069:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18560:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18132:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17751:75;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17814:4:::1;17801:10;;:17;;;;;;;;;;;;;;;;;;17751:75::o:0;9919:84::-;9956:13;9989:6;9982:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9919:84;:::o;10758:165::-;10835:4;10852:41;10861:12;:10;:12::i;:::-;10875:8;10885:7;10852:8;:41::i;:::-;10911:4;10904:11;;10758:165;;;;:::o;10193:100::-;10246:7;7786:23;10266:19;;10193:100;:::o;18333:221::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18428:29:::1;18440:8;18450:6;18428:11;:29::i;:::-;18481:1;18472:6;:10;18468:79;;;18531:4;18499:19;:29;18519:8;18499:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18468:79;18333:221:::0;;:::o;10929:323::-;11030:4;11047:39;11057:7;11066:10;11078:7;11047:9;:39::i;:::-;11097:125;11106:7;11115:12;:10;:12::i;:::-;11129:92;11169:7;11129:92;;;;;;;;;;;;;;;;;:12;:21;11142:7;11129:21;;;;;;;;;;;;;;;:35;11151:12;:10;:12::i;:::-;11129:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;11097:8;:125::i;:::-;11240:4;11233:11;;10929:323;;;;;:::o;10103:84::-;10144:5;10169:10;;;;;;;;;;;10162:17;;10103:84;:::o;3859:27::-;;;;:::o;10299:122::-;10366:7;10393:10;:20;10404:8;10393:20;;;;;;;;;;;;;;;;10386:27;;10299:122;;;:::o;18664:311::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18745:4:::1;18724:17;;:25;18721:247;;;18765:35;18777:16;;;;;;;;;;;18795:4;18765:11;:35::i;:::-;18835:5;18815:17;:25;;;;18721:247;;;18882:35;18894:16;;;;;;;;;;;18912:4;18882:11;:35::i;:::-;18952:4;18932:17;:24;;;;18721:247;18664:311::o:0;17832:168::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17942:13:::1;;17930:9;:25;;;;17971:21;17982:9;;17971:21;;;;;;:::i;:::-;;;;;;;;17832:168::o:0;5598:180::-;5686:7;3293;;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5706:9:::1;5718:8;:18;5727:8;5718:18;;;;;;;;;;;;;;;;5706:30;;5754:10;5765:4;5754:16;;;;;;;;;;;;;;;;;;;;;;;;5747:23;;;5598:180:::0;;;:::o;2983:80::-;3021:7;3048;;;;;;;;;;;3041:14;;2983:80;:::o;10009:88::-;10048:13;10081:8;10074:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10009:88;:::o;18231:96::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18314:5:::1;18296:11;:15;18308:2;18296:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18231:96:::0;:::o;10427:171::-;10507:4;10524:44;10534:12;:10;:12::i;:::-;10548:10;10560:7;10524:9;:44::i;:::-;10586:4;10579:11;;10427:171;;;;:::o;5784:253::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5889:28:::1;5901:12;;;;;;;;;;;5915:1;5889:11;:28::i;:::-;5943:8;5928:12;;:23;;;;;;;;;;;;;;;;;;5975:6;5962:10;:19;;;;5992:37;6004:12;;;;;;;;;;;6018:10;;5992:11;:37::i;:::-;5784:253:::0;;:::o;18006:120::-;18073:4;18097:11;:21;18109:8;18097:21;;;;;;;;;;;;;;;;;;;;;;;;;18090:28;;18006:120;;;:::o;10604:148::-;10687:7;10714:12;:20;10727:6;10714:20;;;;;;;;;;;;;;;:30;10735:8;10714:30;;;;;;;;;;;;;;;;10707:37;;10604:148;;;;:::o;16847:898::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16912:11:::1;;;;;;;;;;;16911:12;16903:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16962:19;16984:21;16962:43;;17016:35;17073:42;17016:100;;17147:16;17127:17;;:36;;;;;;;;;;;;;;;;;;17174:65;17191:4;17206:17;;;;;;;;;;;7786:23;17174:8;:65::i;:::-;17286:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17268:56;;;17333:4;17340:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17268:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17250:15;;:114;;;;;;;;;;;;;;;;;;17375:17;;;;;;;;;;;:33;;;17416:21;17447:4;17453:24;17471:4;17453:9;:24::i;:::-;17478:1;17480::::0;17482:7:::1;:5;:7::i;:::-;17490:15;17375:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17524:15;;;;;;;;;;;17517:31;;;17557:17;;;;;;;;;;;17577:14;17517:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17603:10;;;;;;;;;;;:15;;;17627:4;17634;17640:15;;;;;;;;;;;17657:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17682:11;7786:23;17603:105;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17733:4;17719:11;;:18;;;;;;;;;;;;;;;;;;3348:1;;16847:898::o:0;3069:162::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3185:8:::1;3155:39;;3176:7;::::0;::::1;;;;;;;;3155:39;;;;;;;;;;;;3215:8;3205:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;3069:162:::0;:::o;18560:98::-;9409:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9393:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9445:10;;;;;;;;;;;9429:26;;:12;:10;:12::i;:::-;:26;;;9393:62;9384:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18642:8:::1;18629:10;;:21;;;;;;;;;;;;;;;;;;18560:98:::0;:::o;18132:93::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18213:4:::1;18195:11;:15;18207:2;18195:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18132:93:::0;:::o;2083:246::-;2141:7;2170:1;2165;:6;2161:47;;;2195:1;2188:8;;;;2161:47;2218:9;2234:1;2230;:5;;;;:::i;:::-;2218:17;;2263:1;2258;2254;:5;;;;:::i;:::-;:10;2246:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2320:1;2313:8;;;2083:246;;;;;:::o;1560:179::-;1618:7;1638:9;1654:1;1650;:5;;;;:::i;:::-;1638:17;;1679:1;1674;:6;;1666:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1730:1;1723:8;;;1560:179;;;;:::o;1745:136::-;1803:7;1830:43;1834:1;1837;1830:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1823:50;;1745:136;;;;:::o;758:98::-;811:7;838:10;831:17;;758:98;:::o;12281:347::-;12395:1;12377:20;;:6;:20;;;;12369:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12477:1;12457:22;;:8;:22;;;;12449:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12562:7;12529:12;:20;12542:6;12529:20;;;;;;;;;;;;;;;:30;12550:8;12529:30;;;;;;;;;;;;;;;:40;;;;12602:8;12585:35;;12594:6;12585:35;;;12612:7;12585:35;;;;;;:::i;:::-;;;;;;;;12281:347;;;:::o;4763:720::-;3293:7;;;;;;;;;;3277:23;;:12;:10;:12::i;:::-;:23;;;3269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4866:9:::1;4878:8;:18;4887:8;4878:18;;;;;;;;;;;;;;;;4866:30;;4919:1;4911:4;:9;4907:569;;;4973:5;4945:24;4962:6;4945:12;;:16;;:24;;;;:::i;:::-;:33;;4937:42;;;::::0;::::1;;4994:10;5010:6;4994:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5032:14;5052:8;5032:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5117:1;5097:10;:17;;;;:21;;;;:::i;:::-;5076:8;:18;5085:8;5076:18;;;;;;;;;;;;;;;:42;;;;5148:24;5165:6;5148:12;;:16;;:24;;;;:::i;:::-;5133:12;:39;;;;4907:569;;;5238:19;5261:10;5272:4;5261:16;;;;;;;;;;;;;;;;;;;;;;;;5238:39;;5345:5;5300:41;5329:11;5300:24;5317:6;5300:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5292:59;;;::::0;::::1;;5387:6;5368:10;5379:4;5368:16;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5423:41;5452:11;5423:24;5440:6;5423:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5408:12;:56;;;;4907:569;;3348:1;4763:720:::0;;:::o;12634:1450::-;12753:1;12734:21;;:7;:21;;;;12726:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12838:1;12816:24;;:10;:24;;;;12808:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12909:1;12899:7;:11;12891:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12976:11;:20;12988:7;12976:20;;;;;;;;;;;;;;;;;;;;;;;;;12975:21;:49;;;;;13001:11;:23;13013:10;13001:23;;;;;;;;;;;;;;;;;;;;;;;;;13000:24;12975:49;:76;;;;;13029:11;:22;13041:9;13029:22;;;;;;;;;;;;;;;;;;;;;;;;;13028:23;12975:76;12967:85;;;;;;13076:40;13096:7;13105:10;13076:19;:40::i;:::-;:54;;;;;13120:10;;;;;;;;;;;13076:54;13073:431;;;13156:7;;;;;;;;;;;:19;;;13176:10;13188:15;;;;;;;;;;;13205:9;13156:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13155:60;13147:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13324:7;;;;;;;;;;;:19;;;13344:7;13353:15;;;;;;;;;;;13370:9;13324:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13323:57;13315:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13439:7;;;;;;;;;;;:21;;;13461:7;13470:10;13482:9;13439:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:431;13528:25;13542:10;13528:13;:25::i;:::-;13525:89;;;13600:13;;13576:21;13586:10;13576:9;:21::i;:::-;:37;13568:46;;;;;;13525:89;13639:14;13672:28;13680:7;13689:10;13672:7;:28::i;:::-;13668:287;;;13725:10;;;;;;;;;;;13717:19;;;;;;13755:34;13769:7;13778:10;13755:13;:34::i;:::-;13751:87;;;13828:9;;13817:7;:20;;13809:29;;;;;;13751:87;13876:39;13886:7;13895:10;13907:7;13876:9;:39::i;:::-;13867:48;;13930:13;13935:7;13930:4;:13::i;:::-;13668:287;13975:53;13991:7;14000:10;14012:7;14021:6;13975:15;:53::i;:::-;14039:40;14059:7;14068:10;14039:19;:40::i;:::-;12634:1450;;;;:::o;1887:190::-;1973:7;2006:1;2001;:6;;2009:12;1993:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2033:9;2049:1;2045;:5;;;;:::i;:::-;2033:17;;2068:1;2061:8;;;1887:190;;;;;:::o;11694:179::-;11782:4;11817:15;;;;;;;;;;;11806:26;;:7;:26;;;:59;;;;11850:15;;;;;;;;;;;11836:29;;:10;:29;;;11806:59;11799:66;;11694:179;;;;:::o;12105:170::-;12170:4;12208:15;;;;;;;;;;;12194:29;;:10;:29;;;;:73;;;;;12249:17;;;;;;;;;;;12227:40;;:10;:40;;;;12194:73;12187:80;;12105:170;;;:::o;11514:174::-;11590:4;11616:19;:28;11636:7;11616:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11648:19;:31;11668:10;11648:31;;;;;;;;;;;;;;;;;;;;;;;;;11616:63;11614:66;11607:73;;11514:174;;;;:::o;11879:220::-;11961:4;11996:15;;;;;;;;;;;11985:26;;:7;:26;;;:70;;;;;12037:17;;;;;;;;;;;12015:40;;:10;:40;;;;11985:70;:106;;;;;12060:19;:31;12080:10;12060:31;;;;;;;;;;;;;;;;;;;;;;;;;12059:32;11985:106;11978:113;;11879:220;;;;:::o;14932:461::-;15022:7;15042:12;15057:1;15042:16;;15073:19;:28;15093:7;15073:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15105:19;:31;15125:10;15105:31;;;;;;;;;;;;;;;;;;;;;;;;;15073:63;15069:107;;;15160:4;15153:11;;;;;15069:107;15193:48;15202:38;15224:15;:13;:15::i;:::-;15202:17;15214:4;;15202:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15193:4;:8;;:48;;;;:::i;:::-;15186:55;;15313:50;15322:40;15357:4;;15322:30;15334:17;;15322:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15313:4;:8;;:50;;;;:::i;:::-;15306:57;;15381:4;15374:11;;;14932:461;;;;;;:::o;15399:234::-;15453:20;15465:7;15453:11;:20::i;:::-;15449:177;;;15490:21;15514:24;15532:4;15514:9;:24::i;:::-;15490:48;;15553:32;15571:13;15553:17;:32::i;:::-;15600:14;:12;:14::i;:::-;15449:177;;15399:234;:::o;14090:434::-;14204:18;14225:19;14237:6;14225:7;:11;;:19;;;;:::i;:::-;14204:40;;14277:32;14301:7;14277:10;:19;14288:7;14277:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14255:10;:19;14266:7;14255:19;;;;;;;;;;;;;;;:54;;;;14345:38;14372:10;14345;:22;14356:10;14345:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14320:10;:22;14331:10;14320:22;;;;;;;;;;;;;;;:63;;;;14422:37;14452:6;14422:10;:25;14441:4;14422:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14394:10;:25;14413:4;14394:25;;;;;;;;;;;;;;;:65;;;;14493:10;14475:41;;14484:7;14475:41;;;14505:10;14475:41;;;;;;:::i;:::-;;;;;;;;14090:434;;;;;:::o;14530:399::-;14619:28;14627:7;14636:10;14619:7;:28::i;:::-;14615:307;;;14668:15;14675:7;14668:6;:15::i;:::-;14664:247;;;14702:10;;;;;;;;;;;:24;;;14727:10;14702:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14664:247;;;14783:1;14762:18;;:22;14758:153;;;14805:10;;;;;;;;;;;:20;;;14826:7;14835:18;;14805:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14894:1;14873:18;:22;;;;14758:153;14664:247;14615:307;14530:399;;:::o;5489:103::-;5545:7;5572:12;;5565:19;;5489:103;:::o;2335:132::-;2393:7;2420:39;2424:1;2427;2420:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2413:46;;2335:132;;;;:::o;11258:131::-;11318:4;11343:8;;;;;;;;;;;11342:9;:39;;;;;11366:15;;;;;;;;;;;11355:26;;:7;:26;;;;11342:39;11335:46;;11258:131;;;:::o;15639:482::-;9295:4;9284:8;;:15;;;;;;;;;;;;;;;;;;15714:22:::1;15753:1;15739:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15714:41;;15785:4;15766:5;15772:1;15766:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15812:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15801:5;15807:1;15801:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15847:60;15864:4;15879:17;;;;;;;;;;;15899:7;15847:8;:60::i;:::-;15918:17;;;;;;;;;;;:68;;;16001:7;16023:1;16039:5;16067:4;16087:15;15918:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9310:1;9333:5:::0;9322:8;;:16;;;;;;;;;;;;;;;;;;15639:482;:::o;16333:508::-;16376:12;16391:21;16376:36;;16435:12;;16427:4;:20;16423:46;;16462:7;;;16423:46;16493:15;16511:22;16520:12;;16511:4;:8;;:22;;;;:::i;:::-;16493:40;;16544:7;16554:20;:18;:20::i;:::-;16544:30;;16594:1;16589:2;:6;16585:32;;;16610:7;;;;;16585:32;16629:21;16638:7;16647:2;16629:8;:21::i;:::-;16684:38;16719:2;16684:30;16696:17;;16684:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16663:18;:59;;;;16733:22;;;;;;;;;;;:31;;:51;16765:18;;16733:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16812:21;16797:12;:36;;;;16333:508;;;;:::o;11395:113::-;11450:4;11485:15;;;;;;;;;;;11474:26;;:7;:26;;;11467:33;;11395:113;;;:::o;2473:189::-;2559:7;2591:1;2587;:5;2594:12;2579:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2618:9;2634:1;2630;:5;;;;:::i;:::-;2618:17;;2653:1;2646:8;;;2473:189;;;;;:::o;16127:200::-;16179:4;16196:9;16208:1;16196:13;;16227:25;16236:15;:13;:15::i;:::-;16227:4;:8;;:25;;;;:::i;:::-;16220:32;;16270:27;16279:17;;16270:4;:8;;:27;;;;:::i;:::-;16263:34;;16315:4;16308:11;;;16127:200;:::o;4275:482::-;4352:6;4361:1;4352:10;;4347:403;4368:10;:17;;;;4364:1;:21;4347:403;;;4407:14;4424:10;4435:1;4424:13;;;;;;;;;;;;;;;;;;;;;;;;4407:30;;4452:24;4479:14;4494:1;4479:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:44;;4511:15;4529:24;4550:2;4529:16;4538:6;4529:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4511:42;;4582:1;4572:7;:11;4568:171;;;4603:8;:17;;:26;4621:7;4603:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:12;;;;;;;;;;;4651:24;;:8;:24;;;4648:75;;;4698:8;;;;;;;;;;;:16;;;4715:7;4698:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4648:75;4568:171;4347:403;;;4387:3;;;;;:::i;:::-;;;;4347:403;;;;4275:482;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:423::-;1817:6;1825;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1890:1;1887;1880:12;1842:2;1933:1;1958:61;2011:7;2002:6;1991:9;1987:22;1958:61;:::i;:::-;1948:71;;1904:125;2068:2;2094:53;2139:7;2130:6;2119:9;2115:22;2094:53;:::i;:::-;2084:63;;2039:118;1832:332;;;;;:::o;2170:407::-;2238:6;2246;2295:2;2283:9;2274:7;2270:23;2266:32;2263:2;;;2311:1;2308;2301:12;2263:2;2354:1;2379:53;2424:7;2415:6;2404:9;2400:22;2379:53;:::i;:::-;2369:63;;2325:117;2481:2;2507:53;2552:7;2543:6;2532:9;2528:22;2507:53;:::i;:::-;2497:63;;2452:118;2253:324;;;;;:::o;2583:552::-;2660:6;2668;2676;2725:2;2713:9;2704:7;2700:23;2696:32;2693:2;;;2741:1;2738;2731:12;2693:2;2784:1;2809:53;2854:7;2845:6;2834:9;2830:22;2809:53;:::i;:::-;2799:63;;2755:117;2911:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2882:118;3039:2;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3010:118;2683:452;;;;;:::o;3141:407::-;3209:6;3217;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3452:2;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3423:118;3224:324;;;;;:::o;3554:278::-;3621:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:2;;;3686:1;3683;3676:12;3638:2;3729:1;3754:61;3807:7;3798:6;3787:9;3783:22;3754:61;:::i;:::-;3744:71;;3700:125;3628:204;;;;:::o;3838:596::-;3926:6;3934;3942;3991:2;3979:9;3970:7;3966:23;3962:32;3959:2;;;4007:1;4004;3997:12;3959:2;4050:1;4075:64;4131:7;4122:6;4111:9;4107:22;4075:64;:::i;:::-;4065:74;;4021:128;4188:2;4214:64;4270:7;4261:6;4250:9;4246:22;4214:64;:::i;:::-;4204:74;;4159:129;4327:2;4353:64;4409:7;4400:6;4389:9;4385:22;4353:64;:::i;:::-;4343:74;;4298:129;3949:485;;;;;:::o;4440:179::-;4509:10;4530:46;4572:3;4564:6;4530:46;:::i;:::-;4608:4;4603:3;4599:14;4585:28;;4520:99;;;;:::o;4625:108::-;4702:24;4720:5;4702:24;:::i;:::-;4697:3;4690:37;4680:53;;:::o;4739:118::-;4826:24;4844:5;4826:24;:::i;:::-;4821:3;4814:37;4804:53;;:::o;4893:732::-;5012:3;5041:54;5089:5;5041:54;:::i;:::-;5111:86;5190:6;5185:3;5111:86;:::i;:::-;5104:93;;5221:56;5271:5;5221:56;:::i;:::-;5300:7;5331:1;5316:284;5341:6;5338:1;5335:13;5316:284;;;5417:6;5411:13;5444:63;5503:3;5488:13;5444:63;:::i;:::-;5437:70;;5530:60;5583:6;5530:60;:::i;:::-;5520:70;;5376:224;5363:1;5360;5356:9;5351:14;;5316:284;;;5320:14;5616:3;5609:10;;5017:608;;;;;;;:::o;5631:109::-;5712:21;5727:5;5712:21;:::i;:::-;5707:3;5700:34;5690:50;;:::o;5746:147::-;5841:45;5880:5;5841:45;:::i;:::-;5836:3;5829:58;5819:74;;:::o;5899:153::-;5997:48;6039:5;5997:48;:::i;:::-;5992:3;5985:61;5975:77;;:::o;6058:364::-;6146:3;6174:39;6207:5;6174:39;:::i;:::-;6229:71;6293:6;6288:3;6229:71;:::i;:::-;6222:78;;6309:52;6354:6;6349:3;6342:4;6335:5;6331:16;6309:52;:::i;:::-;6386:29;6408:6;6386:29;:::i;:::-;6381:3;6377:39;6370:46;;6150:272;;;;;:::o;6428:366::-;6570:3;6591:67;6655:2;6650:3;6591:67;:::i;:::-;6584:74;;6667:93;6756:3;6667:93;:::i;:::-;6785:2;6780:3;6776:12;6769:19;;6574:220;;;:::o;6800:366::-;6942:3;6963:67;7027:2;7022:3;6963:67;:::i;:::-;6956:74;;7039:93;7128:3;7039:93;:::i;:::-;7157:2;7152:3;7148:12;7141:19;;6946:220;;;:::o;7172:366::-;7314:3;7335:67;7399:2;7394:3;7335:67;:::i;:::-;7328:74;;7411:93;7500:3;7411:93;:::i;:::-;7529:2;7524:3;7520:12;7513:19;;7318:220;;;:::o;7544:366::-;7686:3;7707:67;7771:2;7766:3;7707:67;:::i;:::-;7700:74;;7783:93;7872:3;7783:93;:::i;:::-;7901:2;7896:3;7892:12;7885:19;;7690:220;;;:::o;7916:366::-;8058:3;8079:67;8143:2;8138:3;8079:67;:::i;:::-;8072:74;;8155:93;8244:3;8155:93;:::i;:::-;8273:2;8268:3;8264:12;8257:19;;8062:220;;;:::o;8288:366::-;8430:3;8451:67;8515:2;8510:3;8451:67;:::i;:::-;8444:74;;8527:93;8616:3;8527:93;:::i;:::-;8645:2;8640:3;8636:12;8629:19;;8434:220;;;:::o;8660:366::-;8802:3;8823:67;8887:2;8882:3;8823:67;:::i;:::-;8816:74;;8899:93;8988:3;8899:93;:::i;:::-;9017:2;9012:3;9008:12;9001:19;;8806:220;;;:::o;9032:366::-;9174:3;9195:67;9259:2;9254:3;9195:67;:::i;:::-;9188:74;;9271:93;9360:3;9271:93;:::i;:::-;9389:2;9384:3;9380:12;9373:19;;9178:220;;;:::o;9404:366::-;9546:3;9567:67;9631:2;9626:3;9567:67;:::i;:::-;9560:74;;9643:93;9732:3;9643:93;:::i;:::-;9761:2;9756:3;9752:12;9745:19;;9550:220;;;:::o;9776:366::-;9918:3;9939:67;10003:2;9998:3;9939:67;:::i;:::-;9932:74;;10015:93;10104:3;10015:93;:::i;:::-;10133:2;10128:3;10124:12;10117:19;;9922:220;;;:::o;10148:366::-;10290:3;10311:67;10375:2;10370:3;10311:67;:::i;:::-;10304:74;;10387:93;10476:3;10387:93;:::i;:::-;10505:2;10500:3;10496:12;10489:19;;10294:220;;;:::o;10520:118::-;10607:24;10625:5;10607:24;:::i;:::-;10602:3;10595:37;10585:53;;:::o;10644:112::-;10727:22;10743:5;10727:22;:::i;:::-;10722:3;10715:35;10705:51;;:::o;10762:222::-;10855:4;10893:2;10882:9;10878:18;10870:26;;10906:71;10974:1;10963:9;10959:17;10950:6;10906:71;:::i;:::-;10860:124;;;;:::o;10990:332::-;11111:4;11149:2;11138:9;11134:18;11126:26;;11162:71;11230:1;11219:9;11215:17;11206:6;11162:71;:::i;:::-;11243:72;11311:2;11300:9;11296:18;11287:6;11243:72;:::i;:::-;11116:206;;;;;:::o;11328:442::-;11477:4;11515:2;11504:9;11500:18;11492:26;;11528:71;11596:1;11585:9;11581:17;11572:6;11528:71;:::i;:::-;11609:72;11677:2;11666:9;11662:18;11653:6;11609:72;:::i;:::-;11691;11759:2;11748:9;11744:18;11735:6;11691:72;:::i;:::-;11482:288;;;;;;:::o;11776:797::-;12020:4;12058:3;12047:9;12043:19;12035:27;;12072:71;12140:1;12129:9;12125:17;12116:6;12072:71;:::i;:::-;12153:83;12232:2;12221:9;12217:18;12208:6;12153:83;:::i;:::-;12246:72;12314:2;12303:9;12299:18;12290:6;12246:72;:::i;:::-;12328;12396:2;12385:9;12381:18;12372:6;12328:72;:::i;:::-;12410:73;12478:3;12467:9;12463:19;12454:6;12410:73;:::i;:::-;12493;12561:3;12550:9;12546:19;12537:6;12493:73;:::i;:::-;12025:548;;;;;;;;;:::o;12579:332::-;12700:4;12738:2;12727:9;12723:18;12715:26;;12751:71;12819:1;12808:9;12804:17;12795:6;12751:71;:::i;:::-;12832:72;12900:2;12889:9;12885:18;12876:6;12832:72;:::i;:::-;12705:206;;;;;:::o;12917:807::-;13166:4;13204:3;13193:9;13189:19;13181:27;;13218:71;13286:1;13275:9;13271:17;13262:6;13218:71;:::i;:::-;13299:72;13367:2;13356:9;13352:18;13343:6;13299:72;:::i;:::-;13381:80;13457:2;13446:9;13442:18;13433:6;13381:80;:::i;:::-;13471;13547:2;13536:9;13532:18;13523:6;13471:80;:::i;:::-;13561:73;13629:3;13618:9;13614:19;13605:6;13561:73;:::i;:::-;13644;13712:3;13701:9;13697:19;13688:6;13644:73;:::i;:::-;13171:553;;;;;;;;;:::o;13730:210::-;13817:4;13855:2;13844:9;13840:18;13832:26;;13868:65;13930:1;13919:9;13915:17;13906:6;13868:65;:::i;:::-;13822:118;;;;:::o;13946:313::-;14059:4;14097:2;14086:9;14082:18;14074:26;;14146:9;14140:4;14136:20;14132:1;14121:9;14117:17;14110:47;14174:78;14247:4;14238:6;14174:78;:::i;:::-;14166:86;;14064:195;;;;:::o;14265:419::-;14431:4;14469:2;14458:9;14454:18;14446:26;;14518:9;14512:4;14508:20;14504:1;14493:9;14489:17;14482:47;14546:131;14672:4;14546:131;:::i;:::-;14538:139;;14436:248;;;:::o;14690:419::-;14856:4;14894:2;14883:9;14879:18;14871:26;;14943:9;14937:4;14933:20;14929:1;14918:9;14914:17;14907:47;14971:131;15097:4;14971:131;:::i;:::-;14963:139;;14861:248;;;:::o;15115:419::-;15281:4;15319:2;15308:9;15304:18;15296:26;;15368:9;15362:4;15358:20;15354:1;15343:9;15339:17;15332:47;15396:131;15522:4;15396:131;:::i;:::-;15388:139;;15286:248;;;:::o;15540:419::-;15706:4;15744:2;15733:9;15729:18;15721:26;;15793:9;15787:4;15783:20;15779:1;15768:9;15764:17;15757:47;15821:131;15947:4;15821:131;:::i;:::-;15813:139;;15711:248;;;:::o;15965:419::-;16131:4;16169:2;16158:9;16154:18;16146:26;;16218:9;16212:4;16208:20;16204:1;16193:9;16189:17;16182:47;16246:131;16372:4;16246:131;:::i;:::-;16238:139;;16136:248;;;:::o;16390:419::-;16556:4;16594:2;16583:9;16579:18;16571:26;;16643:9;16637:4;16633:20;16629:1;16618:9;16614:17;16607:47;16671:131;16797:4;16671:131;:::i;:::-;16663:139;;16561:248;;;:::o;16815:419::-;16981:4;17019:2;17008:9;17004:18;16996:26;;17068:9;17062:4;17058:20;17054:1;17043:9;17039:17;17032:47;17096:131;17222:4;17096:131;:::i;:::-;17088:139;;16986:248;;;:::o;17240:419::-;17406:4;17444:2;17433:9;17429:18;17421:26;;17493:9;17487:4;17483:20;17479:1;17468:9;17464:17;17457:47;17521:131;17647:4;17521:131;:::i;:::-;17513:139;;17411:248;;;:::o;17665:419::-;17831:4;17869:2;17858:9;17854:18;17846:26;;17918:9;17912:4;17908:20;17904:1;17893:9;17889:17;17882:47;17946:131;18072:4;17946:131;:::i;:::-;17938:139;;17836:248;;;:::o;18090:419::-;18256:4;18294:2;18283:9;18279:18;18271:26;;18343:9;18337:4;18333:20;18329:1;18318:9;18314:17;18307:47;18371:131;18497:4;18371:131;:::i;:::-;18363:139;;18261:248;;;:::o;18515:419::-;18681:4;18719:2;18708:9;18704:18;18696:26;;18768:9;18762:4;18758:20;18754:1;18743:9;18739:17;18732:47;18796:131;18922:4;18796:131;:::i;:::-;18788:139;;18686:248;;;:::o;18940:222::-;19033:4;19071:2;19060:9;19056:18;19048:26;;19084:71;19152:1;19141:9;19137:17;19128:6;19084:71;:::i;:::-;19038:124;;;;:::o;19168:831::-;19431:4;19469:3;19458:9;19454:19;19446:27;;19483:71;19551:1;19540:9;19536:17;19527:6;19483:71;:::i;:::-;19564:80;19640:2;19629:9;19625:18;19616:6;19564:80;:::i;:::-;19691:9;19685:4;19681:20;19676:2;19665:9;19661:18;19654:48;19719:108;19822:4;19813:6;19719:108;:::i;:::-;19711:116;;19837:72;19905:2;19894:9;19890:18;19881:6;19837:72;:::i;:::-;19919:73;19987:3;19976:9;19972:19;19963:6;19919:73;:::i;:::-;19436:563;;;;;;;;:::o;20005:214::-;20094:4;20132:2;20121:9;20117:18;20109:26;;20145:67;20209:1;20198:9;20194:17;20185:6;20145:67;:::i;:::-;20099:120;;;;:::o;20225:132::-;20292:4;20315:3;20307:11;;20345:4;20340:3;20336:14;20328:22;;20297:60;;;:::o;20363:114::-;20430:6;20464:5;20458:12;20448:22;;20437:40;;;:::o;20483:99::-;20535:6;20569:5;20563:12;20553:22;;20542:40;;;:::o;20588:113::-;20658:4;20690;20685:3;20681:14;20673:22;;20663:38;;;:::o;20707:184::-;20806:11;20840:6;20835:3;20828:19;20880:4;20875:3;20871:14;20856:29;;20818:73;;;;:::o;20897:169::-;20981:11;21015:6;21010:3;21003:19;21055:4;21050:3;21046:14;21031:29;;20993:73;;;;:::o;21072:305::-;21112:3;21131:20;21149:1;21131:20;:::i;:::-;21126:25;;21165:20;21183:1;21165:20;:::i;:::-;21160:25;;21319:1;21251:66;21247:74;21244:1;21241:81;21238:2;;;21325:18;;:::i;:::-;21238:2;21369:1;21366;21362:9;21355:16;;21116:261;;;;:::o;21383:185::-;21423:1;21440:20;21458:1;21440:20;:::i;:::-;21435:25;;21474:20;21492:1;21474:20;:::i;:::-;21469:25;;21513:1;21503:2;;21518:18;;:::i;:::-;21503:2;21560:1;21557;21553:9;21548:14;;21425:143;;;;:::o;21574:348::-;21614:7;21637:20;21655:1;21637:20;:::i;:::-;21632:25;;21671:20;21689:1;21671:20;:::i;:::-;21666:25;;21859:1;21791:66;21787:74;21784:1;21781:81;21776:1;21769:9;21762:17;21758:105;21755:2;;;21866:18;;:::i;:::-;21755:2;21914:1;21911;21907:9;21896:20;;21622:300;;;;:::o;21928:191::-;21968:4;21988:20;22006:1;21988:20;:::i;:::-;21983:25;;22022:20;22040:1;22022:20;:::i;:::-;22017:25;;22061:1;22058;22055:8;22052:2;;;22066:18;;:::i;:::-;22052:2;22111:1;22108;22104:9;22096:17;;21973:146;;;;:::o;22125:96::-;22162:7;22191:24;22209:5;22191:24;:::i;:::-;22180:35;;22170:51;;;:::o;22227:104::-;22272:7;22301:24;22319:5;22301:24;:::i;:::-;22290:35;;22280:51;;;:::o;22337:90::-;22371:7;22414:5;22407:13;22400:21;22389:32;;22379:48;;;:::o;22433:126::-;22470:7;22510:42;22503:5;22499:54;22488:65;;22478:81;;;:::o;22565:77::-;22602:7;22631:5;22620:16;;22610:32;;;:::o;22648:86::-;22683:7;22723:4;22716:5;22712:16;22701:27;;22691:43;;;:::o;22740:121::-;22798:9;22831:24;22849:5;22831:24;:::i;:::-;22818:37;;22808:53;;;:::o;22867:124::-;22928:9;22961:24;22979:5;22961:24;:::i;:::-;22948:37;;22938:53;;;:::o;22997:307::-;23065:1;23075:113;23089:6;23086:1;23083:13;23075:113;;;23174:1;23169:3;23165:11;23159:18;23155:1;23150:3;23146:11;23139:39;23111:2;23108:1;23104:10;23099:15;;23075:113;;;23206:6;23203:1;23200:13;23197:2;;;23286:1;23277:6;23272:3;23268:16;23261:27;23197:2;23046:258;;;;:::o;23310:320::-;23354:6;23391:1;23385:4;23381:12;23371:22;;23438:1;23432:4;23428:12;23459:18;23449:2;;23515:4;23507:6;23503:17;23493:27;;23449:2;23577;23569:6;23566:14;23546:18;23543:38;23540:2;;;23596:18;;:::i;:::-;23540:2;23361:269;;;;:::o;23636:233::-;23675:3;23698:24;23716:5;23698:24;:::i;:::-;23689:33;;23744:66;23737:5;23734:77;23731:2;;;23814:18;;:::i;:::-;23731:2;23861:1;23854:5;23850:13;23843:20;;23679:190;;;:::o;23875:180::-;23923:77;23920:1;23913:88;24020:4;24017:1;24010:15;24044:4;24041:1;24034:15;24061:180;24109:77;24106:1;24099:88;24206:4;24203:1;24196:15;24230:4;24227:1;24220:15;24247:180;24295:77;24292:1;24285:88;24392:4;24389:1;24382:15;24416:4;24413:1;24406:15;24433:102;24474:6;24525:2;24521:7;24516:2;24509:5;24505:14;24501:28;24491:38;;24481:54;;;:::o;24541:222::-;24681:34;24677:1;24669:6;24665:14;24658:58;24750:5;24745:2;24737:6;24733:15;24726:30;24647:116;:::o;24769:174::-;24909:26;24905:1;24897:6;24893:14;24886:50;24875:68;:::o;24949:162::-;25089:14;25085:1;25077:6;25073:14;25066:38;25055:56;:::o;25117:221::-;25257:34;25253:1;25245:6;25241:14;25234:58;25326:4;25321:2;25313:6;25309:15;25302:29;25223:115;:::o;25344:177::-;25484:29;25480:1;25472:6;25468:14;25461:53;25450:71;:::o;25527:220::-;25667:34;25663:1;25655:6;25651:14;25644:58;25736:3;25731:2;25723:6;25719:15;25712:28;25633:114;:::o;25753:182::-;25893:34;25889:1;25881:6;25877:14;25870:58;25859:76;:::o;25941:228::-;26081:34;26077:1;26069:6;26065:14;26058:58;26150:11;26145:2;26137:6;26133:15;26126:36;26047:122;:::o;26175:224::-;26315:34;26311:1;26303:6;26299:14;26292:58;26384:7;26379:2;26371:6;26367:15;26360:32;26281:118;:::o;26405:223::-;26545:34;26541:1;26533:6;26529:14;26522:58;26614:6;26609:2;26601:6;26597:15;26590:31;26511:117;:::o;26634:225::-;26774:34;26770:1;26762:6;26758:14;26751:58;26843:8;26838:2;26830:6;26826:15;26819:33;26740:119;:::o;26865:122::-;26938:24;26956:5;26938:24;:::i;:::-;26931:5;26928:35;26918:2;;26977:1;26974;26967:12;26918:2;26908:79;:::o;26993:138::-;27074:32;27100:5;27074:32;:::i;:::-;27067:5;27064:43;27054:2;;27121:1;27118;27111:12;27054:2;27044:87;:::o;27137:116::-;27207:21;27222:5;27207:21;:::i;:::-;27200:5;27197:32;27187:2;;27243:1;27240;27233:12;27187:2;27177:76;:::o;27259:122::-;27332:24;27350:5;27332:24;:::i;:::-;27325:5;27322:35;27312:2;;27371:1;27368;27361:12;27312:2;27302:79;:::o
Swarm Source
ipfs://9a8a0c996c42690afa374367673264029609002deb5fd3916d77319dadb59300
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.