ERC-20
MEME
Overview
Max Total Supply
8,888,888,888 FUFU
Holders
1,764 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-14.30%)
Onchain Market Cap
$295,288.89
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 2 Decimals)
Balance
226,932.76 FUFUValue
$7.54 ( ~0.00279381824598566 Eth) [0.0026%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FUFU
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-07 */ // SPDX-License-Identifier: MIT /** AI-powered Dog Meme Token $FUFU FUFU is an Ethereum-based ERC token with the ticker symbol FUFU, presenting a culturally inspired and playful Chinese dog meme coin backed by AI and value appreciation tokenomics. Drawing from the traditional guardian Fu Dog of ancient Chinese history, FUFU boasts a total supply of 8,888,888,888.00 tokens. It leverages a unique approach by integrating an AI-powered trading bot into its ecosystem. Integral to the project's functioning is the FuFu AI bot, which relies on proprietary algorithms to execute daily trades. This trading activity aims to uphold the underlying utility and value of the FUFU token. With its fusion of cultural symbolism, dynamic tax system, token buybacks, and AI-powered trading, FUFU seeks to create a unique and engaging environment for AI-powered dog meme tokens. Website: FuFuToken.io Twitter: @FuFuToken Telegram: https://t.me/+_YfAw8qnjBk2MzQx :*#= .+#+. %@@@@@@@: =@@@@@@@* %@@ =@@ -@@: =@@+ @@* - :@@ =@@ + @@* #@@ -#%+.%@@@@@@%#*+==+**- . =**+==+##%@@@@@@*.*%*.-@@= %@@+ :-*###+-:::-#@@@%..*@@@@@@@@@@@* :@@@@*-::-=*###+-. *@@* -@@=%@#+ :+#%%+ -@@@*-: :=%@@@.:*%%*=: .+%@#-@@ =@@. +# : :@@@@@+ .#@@%@# . %- -@@ *@@- .--@- =#@%*:= .- #@ .#%@@@%* :@+ .- .:=#@@*- =@:% +@@= .+@* +@@#@# . -@::# -@==#@@@@@*-+@: % =#: . :@#@@@ #@= #@% #@ -@- . #= # %@#%@%+: -*@@%#@+.# %: + @@.=@- @@= =@@= %@: +@* ** +.::-+ #:::- @: .#@. =@= #@@: @@# +@ +###.@@#*+*%@@*. =+@@#*+*%@+ ###- .@- @@* %@* +@. @% .*%*. :@@ .@% .##+ @# :@: %@= :@@@%%@@%+.. @= . :% .@% .@% .% : *% : :*@@@%%@@@. =@@-.%# @% + +@- -+ *@@+.%@@: %: #@. = @* #% =@@ @@.-# - @@+@. ++ =@@@@@# *@ -+.-@: @@@@@@. % -@=@+ @ +@% @% =% %@@* .@@@@@@#=. .*@@. :@@= :+%@@@@@# @@@* @: @% +@. :%#:+@. @@@@@@@= -=... .% * ...+. @@@@@@@@ :@=-%#. *@: =@@%**+ +@..@@@@@@@@ :# -*@%#*#@@+: @ :@@@@@@@@.:@=.+#*@@%. -@# :@@+ *@@@@@@= *# +@@@*=-=#@@@- @. @@@@@@@- %@# :@@. =@% -@# .::. *@: +-. =%@@@@@#. .=+ =@- ::: %@. @@ %@= :#%* @@#+==+#*: -=. =%- .+%. . =#*+==+%@+ .*%#. #@+ %@+ -@@@@# =@: .%@+.:- .- =@* +@. -%@@@@: #@# %@@ -@@@: =# #+ %+ @@ #= :%. +@@@. @@= +@@: :@@- #* * ** . .=%@*: -#@#-:. :@# := .%= *@@ +@@ @@% .@: .@* ==- :*#%#+. -*#*: .@# +% :@@# -@@*#% #@@@@: .::---:. =@@@@= :@=#@@. +@@@: .#@@@@@ +@@%*#%@@@@@*+*@++*@@@@@%*#@@%-=@@@@@* +@@@- -@@@%: :#@@@@@@@@= -@. :@ *@+ #@- %@= -@. +@ #@@@@@@@@+. =@@@%. @@@* .-*@@%#@@@@@@@@@@ *@@=@@@@@@@@@@@@@@@@@@*+@@. :@@@@@@@@@@#%@@+:. .%@@= #@@@@@@@@@: *@@@@@@@@@@ *@@@@@@@@@@@@@@@@@@@@@@@@@:-@@@@@@@@@@: #@@@@@@@@@- @@ -@@@@ %@@@@@@@@@@@@@% %@#.@@@%@@@@@@@@@@* =@@@@: .@* -@@@@# @@@# @@@@@+@@# .@@@@@@@@* %@@=@@@@# %@@# @@@@@. -@@- @% @@: #@@ :@@@+. :#@@@.:@@+ %@% @+ +@@ :@@ #%@. -%: .@@: #@@@@@@@@%+ +@# *%. =@%- @@ =@+*%%#: +@- . . . +%- -#%#-#@: +@@%...:@@ +@%=-+%@: . .@%:..-@@@ @@ %: -@- :+*+=#. : : :*=**=. %@ .:+ =@@ %@ #@@@@- =%@%: =@@.-@#=. :+%%.*@%: -@@#: *@@%@= :@# @@: :+@@+.% #@@% . :=#@@@@%*=. . .@#@+ .+.@@@+. =@# .+%@@@%%@@.=: .@.@* # = : . .% @#:@. #--@@%@@@@#= =@@.+= @#%+ = %- *+ + @+@# #=+@@: %@@@@.=@ ++@+ #: %@# =: @**. @-=@@@@* -@@- % +@ :@@.#= *@. #:-@# @= * *@@ %@# + @% #%@@@@%.@- : *#-@@@@%@+ %* - @@# %@# *@-%@@@@* %@@=@% -@*+@@*.#@@@@##@: @@% +@@%#@@@@@@# -@@@@@+ @@@@@%. .#@@@@@%#@@@ %@@@#. .#*@@@@@** -%@@@* +@@@- -@@@. .+: -* =@* .%@= :@@@+ .:-=+*##%%%%%#**+-:. =@@#:..:-=+*##%%%%%#*+=-:. .-*@@@@@@@@@@@@%#*=-. .=@@@@@@@@@@@@%#*+=:. .#@@@@@@@@@@@*- -@@@@@@@@@@@%+. :%@@@@@@@@@@@@= . +@@@@@@@@@@@@* +@@@@@@@#-=@@@@@*+#%%@%=. :#@= .%@@@@@@%+-@@@@@#=#%%@@*: +%@. =@@%*-.. +@@@@@@@%=. .. +@@@+ #@@%+:. :@@@@@@@@#- -. :%@@@. : -*@@@@@@@#-. -#@#. =@@@@: .. .+#@@@@@@@*: .+%@+ *@@@# +@@@@@@@@@%- =%@@%: *@@@: :#@@@@@@@@@* .*@@@+ :%@@#. :@@@@@%#@@@@+ .*@@@#: .%@@: *@@@@@##@@@%- -@@@@+ +@@* +=-. -@@@#: =@@@%: -%@- .. :+=: #@@@+ :%@@@+ +@#. .. .#@@@= =@@@%+---=#@@@%#*- :@@@* .*@@@#=---=%@@%%#+. +@@@= .*%@@@@%%##: .@@@# -%%@@@%%#%= #@@%: ...... :@@@* ...... :@@@= =%@@@@@@@@@@@%=: *@@# .*@@@@@@@@@@@@*-. #@%- -#@@@@@%*-: -@@#. .+%@@@@@#+:. *@*: :%@= :**- =*+. :. .: **/ pragma solidity 0.8.20; 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 _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } 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); } contract FUFU is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _buyerMap; mapping (address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; bool private transferDelayEnabled = false; uint256 private _buyCount=0; address payable private _tradingAIWallet; address payable private _teamMultisig; address payable private _operationsandMarketing; address payable private _mainForListingsAndCex; uint256 private _initialBuyTax=2; uint256 private _initialSellTax=30; uint256 private _finalBuyTax=2; uint256 private _finalSellTax=2; uint256 private _reduceBuyTaxAt=5; uint256 private _reduceSellTaxAt=15; uint256 private _preventSwapBefore=10; uint8 private constant _decimals = 2; string private constant _name = unicode"FuFu"; string private constant _symbol = unicode"FUFU"; uint256 private constant _tTotal = 888888888800; uint256 private _maxTxAmount = 26666666664; uint256 private _maxWalletSize = 26666666664; uint256 private _taxSwapThreshold= 4888888888; uint256 private _maxTaxSwap= 88888888888; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _tradingAIWallet=payable(0x59b2994fb6c81F2C45F6734C49a7C7F444C93439); _teamMultisig=payable(0x56F6F92E4551194Fa70786baEa3e91e3DA73824a); _operationsandMarketing=payable(0xc78eaC31678BAc7546BF988235E04D11121e7fCb); _mainForListingsAndCex = payable(_msgSender()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_tradingAIWallet] = true; _isExcludedFromFee[_teamMultisig] = true; _isExcludedFromFee[_operationsandMarketing] = true; _isExcludedFromFee[_mainForListingsAndCex] = true; _balances[_msgSender()] = _tTotal; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _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 _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount=0; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); if (transferDelayEnabled) { if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); if(_buyCount<_preventSwapBefore){ require(!isContract(to)); } _buyCount++; _buyerMap[to]=true; } taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100); if(to == uniswapV2Pair && from!= address(this) ){ require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100); require(_buyCount>_preventSwapBefore || _buyerMap[from],"Seller is not buyer"); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) { swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if(taxAmount>0){ _balances[address(this)]=_balances[address(this)].add(taxAmount); emit Transfer(from, address(this),taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { if(tokenAmount==0){return;} if(!tradingOpen){return;} address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize=_tTotal; transferDelayEnabled=false; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { uint256 Qamount = amount.div(4); (bool sent, bytes memory data) = _tradingAIWallet.call{value: Qamount}(""); require(sent, "Failed to send Ether _tradingAIWallet"); (sent, data) = _teamMultisig.call{value: Qamount}(""); require(sent, "Failed to send Ether _teamMultisig"); (sent, data) = _operationsandMarketing.call{value: Qamount}(""); require(sent, "Failed to send Ether _operationsandMarketing"); (sent, data) = _mainForListingsAndCex.call{value: amount.sub(Qamount.mul(3))}(""); require(sent, "Failed to send Ether _mainForListingsAndCex"); } function isBot(address a) public view returns (bool){ return bots[a]; } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } receive() external payable {} function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function manualSwap() external { require(_msgSender()==_mainForListingsAndCex); uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForEth(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendETHToFee(ethBalance); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f60075f6101000a81548160ff0219169083151502179055505f6008556002600d55601e600e556002600f5560026010556005601155600f601255600a601355640635750aa8601455640635750aa86015556401236686386016556414b230ce386017555f601960156101000a81548160ff0219169083151502179055505f601960166101000a81548160ff021916908315150217905550348015620000a8575f80fd5b505f620000ba6200060960201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507359b2994fb6c81f2c45f6734c49a7c7f444c9343960095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507356f6f92e4551194fa70786baea3e91e3da73824a600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c78eac31678bac7546bf988235e04d11121e7fcb600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002626200060960201b60201c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f620002b66200061060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555064cef5e80de060015f6200054b6200060960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620005986200060960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef64cef5e80de0604051620005fb919062000651565b60405180910390a36200066c565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b6200064b8162000637565b82525050565b5f602082019050620006665f83018462000640565b92915050565b6134b6806200067a5f395ff3fe6080604052600436106100eb575f3560e01c806370a082311161008957806395d89b411161005857806395d89b41146102d0578063a9059cbb146102fa578063c9567bf914610336578063dd62ed3e1461034c576100f2565b806370a082311461023e578063715018a61461027a578063751039fc146102905780638da5cb5b146102a6576100f2565b806323b872dd116100c557806323b872dd14610186578063313ce567146101c25780633bbac579146101ec57806351bc3c8514610228576100f2565b806306fdde03146100f6578063095ea7b31461012057806318160ddd1461015c576100f2565b366100f257005b5f80fd5b348015610101575f80fd5b5061010a610388565b6040516101179190612466565b60405180910390f35b34801561012b575f80fd5b5061014660048036038101906101419190612517565b6103c5565b604051610153919061256f565b60405180910390f35b348015610167575f80fd5b506101706103e2565b60405161017d9190612597565b60405180910390f35b348015610191575f80fd5b506101ac60048036038101906101a791906125b0565b6103ee565b6040516101b9919061256f565b60405180910390f35b3480156101cd575f80fd5b506101d66104c2565b6040516101e3919061261b565b60405180910390f35b3480156101f7575f80fd5b50610212600480360381019061020d9190612634565b6104ca565b60405161021f919061256f565b60405180910390f35b348015610233575f80fd5b5061023c61051c565b005b348015610249575f80fd5b50610264600480360381019061025f9190612634565b6105b3565b6040516102719190612597565b60405180910390f35b348015610285575f80fd5b5061028e6105f9565b005b34801561029b575f80fd5b506102a4610747565b005b3480156102b1575f80fd5b506102ba61084a565b6040516102c7919061266e565b60405180910390f35b3480156102db575f80fd5b506102e4610871565b6040516102f19190612466565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b9190612517565b6108ae565b60405161032d919061256f565b60405180910390f35b348015610341575f80fd5b5061034a6108cb565b005b348015610357575f80fd5b50610372600480360381019061036d9190612687565b610dd6565b60405161037f9190612597565b60405180910390f35b60606040518060400160405280600481526020017f4675467500000000000000000000000000000000000000000000000000000000815250905090565b5f6103d86103d1610e58565b8484610e5f565b6001905092915050565b5f64cef5e80de0905090565b5f6103fa848484611022565b6104b784610406610e58565b6104b2856040518060600160405280602881526020016134596028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610469610e58565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b8d9092919063ffffffff16565b610e5f565b600190509392505050565b5f6002905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661055c610e58565b73ffffffffffffffffffffffffffffffffffffffff161461057b575f80fd5b5f610585306105b3565b90505f8111156105995761059881611bef565b5b5f4790505f8111156105af576105ae81611e78565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610601610e58565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106849061270f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61074f610e58565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d29061270f565b60405180910390fd5b64cef5e80de060148190555064cef5e80de06015819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf64cef5e80de06040516108409190612597565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4655465500000000000000000000000000000000000000000000000000000000815250905090565b5f6108c16108ba610e58565b8484611022565b6001905092915050565b6108d3610e58565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109569061270f565b60405180910390fd5b601960149054906101000a900460ff16156109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a690612777565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a343060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1664cef5e80de0610e5f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac291906127a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6c91906127a9565b6040518363ffffffff1660e01b8152600401610b899291906127d4565b6020604051808303815f875af1158015610ba5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc991906127a9565b60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c50306105b3565b5f80610c5a61084a565b426040518863ffffffff1660e01b8152600401610c7c9695949392919061283d565b60606040518083038185885af1158015610c98573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cbd91906128b0565b50505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610d5d929190612900565b6020604051808303815f875af1158015610d79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9d9190612951565b506001601960166101000a81548160ff0219169083151502179055506001601960146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec4906129ec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290612a7a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110159190612597565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790612b08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612b96565b60405180910390fd5b5f8111611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113790612c24565b60405180910390fd5b5f61114961084a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156111b7575061118761084a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118dd5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561125a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611262575f80fd5b60075f9054906101000a900460ff16156113e85760185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611320575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156113e7574360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b90612cb2565b60405180910390fd5b4360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611491575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114e4575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156116125760145482111561152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590612d1a565b60405180910390fd5b6015548261153b856105b3565b6115459190612d65565b1115611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90612de2565b60405180910390fd5b60135460085410156115a55761159b836121ec565b156115a4575f80fd5b5b60085f8154809291906115b790612e00565b9190505550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b61164e60646116406011546008541161162d57600d54611631565b600f545b856121fd90919063ffffffff16565b61227490919063ffffffff16565b905060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116d857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117f857601454821115611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990612d1a565b60405180910390fd5b61175e60646117506012546008541161173d57600e54611741565b6010545b856121fd90919063ffffffff16565b61227490919063ffffffff16565b905060135460085411806117b8575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90612e91565b60405180910390fd5b5b5f611802306105b3565b9050601960159054906101000a900460ff1615801561186d575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118855750601960169054906101000a900460ff165b8015611892575060165481115b80156118a15750601354600854115b156118db576118c36118be846118b9846017546122bd565b6122bd565b611bef565b5f4790505f8111156118d9576118d847611e78565b5b505b505b5f8111156119dc576119358160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119d39190612597565b60405180910390a35b611a2c8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611acf611a83828461233290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b72848661233290919063ffffffff16565b604051611b7f9190612597565b60405180910390a350505050565b5f838311158290611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb9190612466565b60405180910390fd5b505f8385611be29190612eaf565b9050809150509392505050565b6001601960156101000a81548160ff0219169083151502179055505f810315611e5b57601960149054906101000a900460ff1615611e5b575f600267ffffffffffffffff811115611c4357611c42612ee2565b5b604051908082528060200260200182016040528015611c715781602001602082028036833780820191505090505b50905030815f81518110611c8857611c87612f0f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5091906127a9565b81600181518110611d6457611d63612f0f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611dca3060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e5f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e2c959493929190612ff3565b5f604051808303815f87803b158015611e43575f80fd5b505af1158015611e55573d5f803e3d5ffd5b50505050505b5f601960156101000a81548160ff02191690831515021790555050565b5f611e8d60048361227490919063ffffffff16565b90505f8060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611ed690613078565b5f6040518083038185875af1925050503d805f8114611f10576040519150601f19603f3d011682016040523d82523d5f602084013e611f15565b606091505b509150915081611f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f51906130fc565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611f9f90613078565b5f6040518083038185875af1925050503d805f8114611fd9576040519150601f19603f3d011682016040523d82523d5f602084013e611fde565b606091505b50809250819350505081612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e9061318a565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161206c90613078565b5f6040518083038185875af1925050503d805f81146120a6576040519150601f19603f3d011682016040523d82523d5f602084013e6120ab565b606091505b508092508193505050816120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb90613218565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121526121436003866121fd90919063ffffffff16565b8661233290919063ffffffff16565b60405161215e90613078565b5f6040518083038185875af1925050503d805f8114612198576040519150601f19603f3d011682016040523d82523d5f602084013e61219d565b606091505b508092508193505050816121e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dd906132a6565b60405180910390fd5b50505050565b5f80823b90505f8111915050919050565b5f80830361220d575f905061226e565b5f828461221a91906132c4565b90508284826122299190613332565b14612269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612260906133d2565b60405180910390fd5b809150505b92915050565b5f6122b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061237b565b905092915050565b5f8183116122cb57826122cd565b815b905092915050565b5f8082846122e39190612d65565b905083811015612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f9061343a565b60405180910390fd5b8091505092915050565b5f61237383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b8d565b905092915050565b5f80831182906123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b89190612466565b60405180910390fd5b505f83856123cf9190613332565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124135780820151818401526020810190506123f8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612438826123dc565b61244281856123e6565b93506124528185602086016123f6565b61245b8161241e565b840191505092915050565b5f6020820190508181035f83015261247e818461242e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124b38261248a565b9050919050565b6124c3816124a9565b81146124cd575f80fd5b50565b5f813590506124de816124ba565b92915050565b5f819050919050565b6124f6816124e4565b8114612500575f80fd5b50565b5f81359050612511816124ed565b92915050565b5f806040838503121561252d5761252c612486565b5b5f61253a858286016124d0565b925050602061254b85828601612503565b9150509250929050565b5f8115159050919050565b61256981612555565b82525050565b5f6020820190506125825f830184612560565b92915050565b612591816124e4565b82525050565b5f6020820190506125aa5f830184612588565b92915050565b5f805f606084860312156125c7576125c6612486565b5b5f6125d4868287016124d0565b93505060206125e5868287016124d0565b92505060406125f686828701612503565b9150509250925092565b5f60ff82169050919050565b61261581612600565b82525050565b5f60208201905061262e5f83018461260c565b92915050565b5f6020828403121561264957612648612486565b5b5f612656848285016124d0565b91505092915050565b612668816124a9565b82525050565b5f6020820190506126815f83018461265f565b92915050565b5f806040838503121561269d5761269c612486565b5b5f6126aa858286016124d0565b92505060206126bb858286016124d0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126f96020836123e6565b9150612704826126c5565b602082019050919050565b5f6020820190508181035f830152612726816126ed565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6127616017836123e6565b915061276c8261272d565b602082019050919050565b5f6020820190508181035f83015261278e81612755565b9050919050565b5f815190506127a3816124ba565b92915050565b5f602082840312156127be576127bd612486565b5b5f6127cb84828501612795565b91505092915050565b5f6040820190506127e75f83018561265f565b6127f4602083018461265f565b9392505050565b5f819050919050565b5f819050919050565b5f61282761282261281d846127fb565b612804565b6124e4565b9050919050565b6128378161280d565b82525050565b5f60c0820190506128505f83018961265f565b61285d6020830188612588565b61286a604083018761282e565b612877606083018661282e565b612884608083018561265f565b61289160a0830184612588565b979650505050505050565b5f815190506128aa816124ed565b92915050565b5f805f606084860312156128c7576128c6612486565b5b5f6128d48682870161289c565b93505060206128e58682870161289c565b92505060406128f68682870161289c565b9150509250925092565b5f6040820190506129135f83018561265f565b6129206020830184612588565b9392505050565b61293081612555565b811461293a575f80fd5b50565b5f8151905061294b81612927565b92915050565b5f6020828403121561296657612965612486565b5b5f6129738482850161293d565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129d66024836123e6565b91506129e18261297c565b604082019050919050565b5f6020820190508181035f830152612a03816129ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a646022836123e6565b9150612a6f82612a0a565b604082019050919050565b5f6020820190508181035f830152612a9181612a58565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612af26025836123e6565b9150612afd82612a98565b604082019050919050565b5f6020820190508181035f830152612b1f81612ae6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b806023836123e6565b9150612b8b82612b26565b604082019050919050565b5f6020820190508181035f830152612bad81612b74565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c0e6029836123e6565b9150612c1982612bb4565b604082019050919050565b5f6020820190508181035f830152612c3b81612c02565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612c9c6024836123e6565b9150612ca782612c42565b604082019050919050565b5f6020820190508181035f830152612cc981612c90565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612d046019836123e6565b9150612d0f82612cd0565b602082019050919050565b5f6020820190508181035f830152612d3181612cf8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d6f826124e4565b9150612d7a836124e4565b9250828201905080821115612d9257612d91612d38565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612dcc601a836123e6565b9150612dd782612d98565b602082019050919050565b5f6020820190508181035f830152612df981612dc0565b9050919050565b5f612e0a826124e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e3c57612e3b612d38565b5b600182019050919050565b7f53656c6c6572206973206e6f74206275796572000000000000000000000000005f82015250565b5f612e7b6013836123e6565b9150612e8682612e47565b602082019050919050565b5f6020820190508181035f830152612ea881612e6f565b9050919050565b5f612eb9826124e4565b9150612ec4836124e4565b9250828203905081811115612edc57612edb612d38565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f6e816124a9565b82525050565b5f612f7f8383612f65565b60208301905092915050565b5f602082019050919050565b5f612fa182612f3c565b612fab8185612f46565b9350612fb683612f56565b805f5b83811015612fe6578151612fcd8882612f74565b9750612fd883612f8b565b925050600181019050612fb9565b5085935050505092915050565b5f60a0820190506130065f830188612588565b613013602083018761282e565b81810360408301526130258186612f97565b9050613034606083018561265f565b6130416080830184612588565b9695505050505050565b5f81905092915050565b50565b5f6130635f8361304b565b915061306e82613055565b5f82019050919050565b5f61308282613058565b9150819050919050565b7f4661696c656420746f2073656e64204574686572205f74726164696e674149575f8201527f616c6c6574000000000000000000000000000000000000000000000000000000602082015250565b5f6130e66025836123e6565b91506130f18261308c565b604082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f4661696c656420746f2073656e64204574686572205f7465616d4d756c7469735f8201527f6967000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131746022836123e6565b915061317f8261311a565b604082019050919050565b5f6020820190508181035f8301526131a181613168565b9050919050565b7f4661696c656420746f2073656e64204574686572205f6f7065726174696f6e735f8201527f616e644d61726b6574696e670000000000000000000000000000000000000000602082015250565b5f613202602c836123e6565b915061320d826131a8565b604082019050919050565b5f6020820190508181035f83015261322f816131f6565b9050919050565b7f4661696c656420746f2073656e64204574686572205f6d61696e466f724c69735f8201527f74696e6773416e64436578000000000000000000000000000000000000000000602082015250565b5f613290602b836123e6565b915061329b82613236565b604082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b5f6132ce826124e4565b91506132d9836124e4565b92508282026132e7816124e4565b915082820484148315176132fe576132fd612d38565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61333c826124e4565b9150613347836124e4565b92508261335757613356613305565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133bc6021836123e6565b91506133c782613362565b604082019050919050565b5f6020820190508181035f8301526133e9816133b0565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613424601b836123e6565b915061342f826133f0565b602082019050919050565b5f6020820190508181035f83015261345181613418565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122057c99a9f61f005a811adf7905ffafc1e224dc500367413163f7bc74bd506da8064736f6c63430008140033
Deployed Bytecode
0x6080604052600436106100eb575f3560e01c806370a082311161008957806395d89b411161005857806395d89b41146102d0578063a9059cbb146102fa578063c9567bf914610336578063dd62ed3e1461034c576100f2565b806370a082311461023e578063715018a61461027a578063751039fc146102905780638da5cb5b146102a6576100f2565b806323b872dd116100c557806323b872dd14610186578063313ce567146101c25780633bbac579146101ec57806351bc3c8514610228576100f2565b806306fdde03146100f6578063095ea7b31461012057806318160ddd1461015c576100f2565b366100f257005b5f80fd5b348015610101575f80fd5b5061010a610388565b6040516101179190612466565b60405180910390f35b34801561012b575f80fd5b5061014660048036038101906101419190612517565b6103c5565b604051610153919061256f565b60405180910390f35b348015610167575f80fd5b506101706103e2565b60405161017d9190612597565b60405180910390f35b348015610191575f80fd5b506101ac60048036038101906101a791906125b0565b6103ee565b6040516101b9919061256f565b60405180910390f35b3480156101cd575f80fd5b506101d66104c2565b6040516101e3919061261b565b60405180910390f35b3480156101f7575f80fd5b50610212600480360381019061020d9190612634565b6104ca565b60405161021f919061256f565b60405180910390f35b348015610233575f80fd5b5061023c61051c565b005b348015610249575f80fd5b50610264600480360381019061025f9190612634565b6105b3565b6040516102719190612597565b60405180910390f35b348015610285575f80fd5b5061028e6105f9565b005b34801561029b575f80fd5b506102a4610747565b005b3480156102b1575f80fd5b506102ba61084a565b6040516102c7919061266e565b60405180910390f35b3480156102db575f80fd5b506102e4610871565b6040516102f19190612466565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b9190612517565b6108ae565b60405161032d919061256f565b60405180910390f35b348015610341575f80fd5b5061034a6108cb565b005b348015610357575f80fd5b50610372600480360381019061036d9190612687565b610dd6565b60405161037f9190612597565b60405180910390f35b60606040518060400160405280600481526020017f4675467500000000000000000000000000000000000000000000000000000000815250905090565b5f6103d86103d1610e58565b8484610e5f565b6001905092915050565b5f64cef5e80de0905090565b5f6103fa848484611022565b6104b784610406610e58565b6104b2856040518060600160405280602881526020016134596028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610469610e58565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b8d9092919063ffffffff16565b610e5f565b600190509392505050565b5f6002905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661055c610e58565b73ffffffffffffffffffffffffffffffffffffffff161461057b575f80fd5b5f610585306105b3565b90505f8111156105995761059881611bef565b5b5f4790505f8111156105af576105ae81611e78565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610601610e58565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106849061270f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61074f610e58565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d29061270f565b60405180910390fd5b64cef5e80de060148190555064cef5e80de06015819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf64cef5e80de06040516108409190612597565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4655465500000000000000000000000000000000000000000000000000000000815250905090565b5f6108c16108ba610e58565b8484611022565b6001905092915050565b6108d3610e58565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109569061270f565b60405180910390fd5b601960149054906101000a900460ff16156109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a690612777565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a343060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1664cef5e80de0610e5f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac291906127a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6c91906127a9565b6040518363ffffffff1660e01b8152600401610b899291906127d4565b6020604051808303815f875af1158015610ba5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc991906127a9565b60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c50306105b3565b5f80610c5a61084a565b426040518863ffffffff1660e01b8152600401610c7c9695949392919061283d565b60606040518083038185885af1158015610c98573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cbd91906128b0565b50505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610d5d929190612900565b6020604051808303815f875af1158015610d79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9d9190612951565b506001601960166101000a81548160ff0219169083151502179055506001601960146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec4906129ec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290612a7a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110159190612597565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790612b08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612b96565b60405180910390fd5b5f8111611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113790612c24565b60405180910390fd5b5f61114961084a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156111b7575061118761084a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118dd5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561125a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611262575f80fd5b60075f9054906101000a900460ff16156113e85760185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611320575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156113e7574360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b90612cb2565b60405180910390fd5b4360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611491575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114e4575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156116125760145482111561152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590612d1a565b60405180910390fd5b6015548261153b856105b3565b6115459190612d65565b1115611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90612de2565b60405180910390fd5b60135460085410156115a55761159b836121ec565b156115a4575f80fd5b5b60085f8154809291906115b790612e00565b9190505550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b61164e60646116406011546008541161162d57600d54611631565b600f545b856121fd90919063ffffffff16565b61227490919063ffffffff16565b905060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116d857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117f857601454821115611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990612d1a565b60405180910390fd5b61175e60646117506012546008541161173d57600e54611741565b6010545b856121fd90919063ffffffff16565b61227490919063ffffffff16565b905060135460085411806117b8575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90612e91565b60405180910390fd5b5b5f611802306105b3565b9050601960159054906101000a900460ff1615801561186d575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118855750601960169054906101000a900460ff165b8015611892575060165481115b80156118a15750601354600854115b156118db576118c36118be846118b9846017546122bd565b6122bd565b611bef565b5f4790505f8111156118d9576118d847611e78565b5b505b505b5f8111156119dc576119358160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119d39190612597565b60405180910390a35b611a2c8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611acf611a83828461233290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b72848661233290919063ffffffff16565b604051611b7f9190612597565b60405180910390a350505050565b5f838311158290611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb9190612466565b60405180910390fd5b505f8385611be29190612eaf565b9050809150509392505050565b6001601960156101000a81548160ff0219169083151502179055505f810315611e5b57601960149054906101000a900460ff1615611e5b575f600267ffffffffffffffff811115611c4357611c42612ee2565b5b604051908082528060200260200182016040528015611c715781602001602082028036833780820191505090505b50905030815f81518110611c8857611c87612f0f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5091906127a9565b81600181518110611d6457611d63612f0f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611dca3060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e5f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e2c959493929190612ff3565b5f604051808303815f87803b158015611e43575f80fd5b505af1158015611e55573d5f803e3d5ffd5b50505050505b5f601960156101000a81548160ff02191690831515021790555050565b5f611e8d60048361227490919063ffffffff16565b90505f8060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611ed690613078565b5f6040518083038185875af1925050503d805f8114611f10576040519150601f19603f3d011682016040523d82523d5f602084013e611f15565b606091505b509150915081611f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f51906130fc565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611f9f90613078565b5f6040518083038185875af1925050503d805f8114611fd9576040519150601f19603f3d011682016040523d82523d5f602084013e611fde565b606091505b50809250819350505081612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e9061318a565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161206c90613078565b5f6040518083038185875af1925050503d805f81146120a6576040519150601f19603f3d011682016040523d82523d5f602084013e6120ab565b606091505b508092508193505050816120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb90613218565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121526121436003866121fd90919063ffffffff16565b8661233290919063ffffffff16565b60405161215e90613078565b5f6040518083038185875af1925050503d805f8114612198576040519150601f19603f3d011682016040523d82523d5f602084013e61219d565b606091505b508092508193505050816121e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dd906132a6565b60405180910390fd5b50505050565b5f80823b90505f8111915050919050565b5f80830361220d575f905061226e565b5f828461221a91906132c4565b90508284826122299190613332565b14612269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612260906133d2565b60405180910390fd5b809150505b92915050565b5f6122b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061237b565b905092915050565b5f8183116122cb57826122cd565b815b905092915050565b5f8082846122e39190612d65565b905083811015612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f9061343a565b60405180910390fd5b8091505092915050565b5f61237383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b8d565b905092915050565b5f80831182906123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b89190612466565b60405180910390fd5b505f83856123cf9190613332565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124135780820151818401526020810190506123f8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612438826123dc565b61244281856123e6565b93506124528185602086016123f6565b61245b8161241e565b840191505092915050565b5f6020820190508181035f83015261247e818461242e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124b38261248a565b9050919050565b6124c3816124a9565b81146124cd575f80fd5b50565b5f813590506124de816124ba565b92915050565b5f819050919050565b6124f6816124e4565b8114612500575f80fd5b50565b5f81359050612511816124ed565b92915050565b5f806040838503121561252d5761252c612486565b5b5f61253a858286016124d0565b925050602061254b85828601612503565b9150509250929050565b5f8115159050919050565b61256981612555565b82525050565b5f6020820190506125825f830184612560565b92915050565b612591816124e4565b82525050565b5f6020820190506125aa5f830184612588565b92915050565b5f805f606084860312156125c7576125c6612486565b5b5f6125d4868287016124d0565b93505060206125e5868287016124d0565b92505060406125f686828701612503565b9150509250925092565b5f60ff82169050919050565b61261581612600565b82525050565b5f60208201905061262e5f83018461260c565b92915050565b5f6020828403121561264957612648612486565b5b5f612656848285016124d0565b91505092915050565b612668816124a9565b82525050565b5f6020820190506126815f83018461265f565b92915050565b5f806040838503121561269d5761269c612486565b5b5f6126aa858286016124d0565b92505060206126bb858286016124d0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126f96020836123e6565b9150612704826126c5565b602082019050919050565b5f6020820190508181035f830152612726816126ed565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6127616017836123e6565b915061276c8261272d565b602082019050919050565b5f6020820190508181035f83015261278e81612755565b9050919050565b5f815190506127a3816124ba565b92915050565b5f602082840312156127be576127bd612486565b5b5f6127cb84828501612795565b91505092915050565b5f6040820190506127e75f83018561265f565b6127f4602083018461265f565b9392505050565b5f819050919050565b5f819050919050565b5f61282761282261281d846127fb565b612804565b6124e4565b9050919050565b6128378161280d565b82525050565b5f60c0820190506128505f83018961265f565b61285d6020830188612588565b61286a604083018761282e565b612877606083018661282e565b612884608083018561265f565b61289160a0830184612588565b979650505050505050565b5f815190506128aa816124ed565b92915050565b5f805f606084860312156128c7576128c6612486565b5b5f6128d48682870161289c565b93505060206128e58682870161289c565b92505060406128f68682870161289c565b9150509250925092565b5f6040820190506129135f83018561265f565b6129206020830184612588565b9392505050565b61293081612555565b811461293a575f80fd5b50565b5f8151905061294b81612927565b92915050565b5f6020828403121561296657612965612486565b5b5f6129738482850161293d565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129d66024836123e6565b91506129e18261297c565b604082019050919050565b5f6020820190508181035f830152612a03816129ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a646022836123e6565b9150612a6f82612a0a565b604082019050919050565b5f6020820190508181035f830152612a9181612a58565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612af26025836123e6565b9150612afd82612a98565b604082019050919050565b5f6020820190508181035f830152612b1f81612ae6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b806023836123e6565b9150612b8b82612b26565b604082019050919050565b5f6020820190508181035f830152612bad81612b74565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c0e6029836123e6565b9150612c1982612bb4565b604082019050919050565b5f6020820190508181035f830152612c3b81612c02565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612c9c6024836123e6565b9150612ca782612c42565b604082019050919050565b5f6020820190508181035f830152612cc981612c90565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612d046019836123e6565b9150612d0f82612cd0565b602082019050919050565b5f6020820190508181035f830152612d3181612cf8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d6f826124e4565b9150612d7a836124e4565b9250828201905080821115612d9257612d91612d38565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612dcc601a836123e6565b9150612dd782612d98565b602082019050919050565b5f6020820190508181035f830152612df981612dc0565b9050919050565b5f612e0a826124e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e3c57612e3b612d38565b5b600182019050919050565b7f53656c6c6572206973206e6f74206275796572000000000000000000000000005f82015250565b5f612e7b6013836123e6565b9150612e8682612e47565b602082019050919050565b5f6020820190508181035f830152612ea881612e6f565b9050919050565b5f612eb9826124e4565b9150612ec4836124e4565b9250828203905081811115612edc57612edb612d38565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f6e816124a9565b82525050565b5f612f7f8383612f65565b60208301905092915050565b5f602082019050919050565b5f612fa182612f3c565b612fab8185612f46565b9350612fb683612f56565b805f5b83811015612fe6578151612fcd8882612f74565b9750612fd883612f8b565b925050600181019050612fb9565b5085935050505092915050565b5f60a0820190506130065f830188612588565b613013602083018761282e565b81810360408301526130258186612f97565b9050613034606083018561265f565b6130416080830184612588565b9695505050505050565b5f81905092915050565b50565b5f6130635f8361304b565b915061306e82613055565b5f82019050919050565b5f61308282613058565b9150819050919050565b7f4661696c656420746f2073656e64204574686572205f74726164696e674149575f8201527f616c6c6574000000000000000000000000000000000000000000000000000000602082015250565b5f6130e66025836123e6565b91506130f18261308c565b604082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f4661696c656420746f2073656e64204574686572205f7465616d4d756c7469735f8201527f6967000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131746022836123e6565b915061317f8261311a565b604082019050919050565b5f6020820190508181035f8301526131a181613168565b9050919050565b7f4661696c656420746f2073656e64204574686572205f6f7065726174696f6e735f8201527f616e644d61726b6574696e670000000000000000000000000000000000000000602082015250565b5f613202602c836123e6565b915061320d826131a8565b604082019050919050565b5f6020820190508181035f83015261322f816131f6565b9050919050565b7f4661696c656420746f2073656e64204574686572205f6d61696e466f724c69735f8201527f74696e6773416e64436578000000000000000000000000000000000000000000602082015250565b5f613290602b836123e6565b915061329b82613236565b604082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b5f6132ce826124e4565b91506132d9836124e4565b92508282026132e7816124e4565b915082820484148315176132fe576132fd612d38565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61333c826124e4565b9150613347836124e4565b92508261335757613356613305565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133bc6021836123e6565b91506133c782613362565b604082019050919050565b5f6020820190508181035f8301526133e9816133b0565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613424601b836123e6565b915061342f826133f0565b602082019050919050565b5f6020820190508181035f83015261345181613418565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122057c99a9f61f005a811adf7905ffafc1e224dc500367413163f7bc74bd506da8064736f6c63430008140033
Deployed Bytecode Sourcemap
10436:9744:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12961:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13794:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13238:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13963:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13147:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19817:360;;;;;;;;;;;;;:::i;:::-;;13341:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9517:148;;;;;;;;;;;;;:::i;:::-;;17914:196;;;;;;;;;;;;;:::i;:::-;;9303:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13052:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13468:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18898:671;;;;;;;;;;;;;:::i;:::-;;13643:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12961:83;12998:13;13031:5;;;;;;;;;;;;;;;;;13024:12;;12961:83;:::o;13794:161::-;13869:4;13886:39;13895:12;:10;:12::i;:::-;13909:7;13918:6;13886:8;:39::i;:::-;13943:4;13936:11;;13794:161;;;;:::o;13238:95::-;13291:7;11623:12;13311:14;;13238:95;:::o;13963:313::-;14061:4;14078:36;14088:6;14096:9;14107:6;14078:9;:36::i;:::-;14125:121;14134:6;14142:12;:10;:12::i;:::-;14156:89;14194:6;14156:89;;;;;;;;;;;;;;;;;:11;:19;14168:6;14156:19;;;;;;;;;;;;;;;:33;14176:12;:10;:12::i;:::-;14156:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14125:8;:121::i;:::-;14264:4;14257:11;;13963:313;;;;;:::o;13147:83::-;13188:5;11472:1;13206:16;;13147:83;:::o;18807:::-;18854:4;18875;:7;18880:1;18875:7;;;;;;;;;;;;;;;;;;;;;;;;;18868:14;;18807:83;;;:::o;19817:360::-;19881:22;;;;;;;;;;;19867:36;;:12;:10;:12::i;:::-;:36;;;19859:45;;;;;;19915:20;19936:24;19954:4;19936:9;:24::i;:::-;19915:45;;19987:1;19974:12;:14;19971:73;;;20002:30;20019:12;20002:16;:30::i;:::-;19971:73;20054:18;20073:21;20054:40;;20119:1;20108:10;:12;20105:65;;;20134:24;20147:10;20134:12;:24::i;:::-;20105:65;19848:329;;19817:360::o;13341:119::-;13407:7;13434:9;:18;13444:7;13434:18;;;;;;;;;;;;;;;;13427:25;;13341:119;;;:::o;9517:148::-;9440:12;:10;:12::i;:::-;9430:22;;:6;;;;;;;;;;:22;;;9422:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9624:1:::1;9587:40;;9608:6;::::0;::::1;;;;;;;;9587:40;;;;;;;;;;;;9655:1;9638:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9517:148::o:0;17914:196::-;9440:12;:10;:12::i;:::-;9430:22;;:6;;;;;;;;;;:22;;;9422:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11623:12:::1;17967;:22;;;;11623:12;18000:14;:22;;;;18054:5;18033:20;;:26;;;;;;;;;;;;;;;;;;18075:27;11623:12;18075:27;;;;;;:::i;:::-;;;;;;;;17914:196::o:0;9303:79::-;9341:7;9368:6;;;;;;;;;;;9361:13;;9303:79;:::o;13052:87::-;13091:13;13124:7;;;;;;;;;;;;;;;;;13117:14;;13052:87;:::o;13468:167::-;13546:4;13563:42;13573:12;:10;:12::i;:::-;13587:9;13598:6;13563:9;:42::i;:::-;13623:4;13616:11;;13468:167;;;;:::o;18898:671::-;9440:12;:10;:12::i;:::-;9430:22;;:6;;;;;;;;;;:22;;;9422:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18962:11:::1;;;;;;;;;;;18961:12;18953:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19048:42;19011:15;;:80;;;;;;;;;;;;;;;;;;19102:58;19119:4;19134:15;;;;;;;;;;;11623:12;19102:8;:58::i;:::-;19205:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19187:55;;;19251:4;19258:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19187:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19171:13;;:110;;;;;;;;;;;;;;;;;;19292:15;;;;;;;;;;;:31;;;19331:21;19362:4;19368:24;19386:4;19368:9;:24::i;:::-;19393:1;19395::::0;19397:7:::1;:5;:7::i;:::-;19405:15;19292:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19439:13;;;;;;;;;;;19432:29;;;19470:15;;;;;;;;;;;19488:14;19432:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19528:4;19514:11;;:18;;;;;;;;;;;;;;;;;;19557:4;19543:11;;:18;;;;;;;;;;;;;;;;;;18898:671::o:0;13643:143::-;13724:7;13751:11;:18;13763:5;13751:18;;;;;;;;;;;;;;;:27;13770:7;13751:27;;;;;;;;;;;;;;;;13744:34;;13643:143;;;;:::o;7058:98::-;7111:7;7138:10;7131:17;;7058:98;:::o;14284:335::-;14394:1;14377:19;;:5;:19;;;14369:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14475:1;14456:21;;:7;:21;;;14448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14557:6;14527:11;:18;14539:5;14527:18;;;;;;;;;;;;;;;:27;14546:7;14527:27;;;;;;;;;;;;;;;:36;;;;14595:7;14579:32;;14588:5;14579:32;;;14604:6;14579:32;;;;;;:::i;:::-;;;;;;;;14284:335;;;:::o;14627:2610::-;14731:1;14715:18;;:4;:18;;;14707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14808:1;14794:16;;:2;:16;;;14786:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14878:1;14869:6;:10;14861:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14936:17;14978:7;:5;:7::i;:::-;14970:15;;:4;:15;;;;:32;;;;;14995:7;:5;:7::i;:::-;14989:13;;:2;:13;;;;14970:32;14966:1915;;;15028:4;:10;15033:4;15028:10;;;;;;;;;;;;;;;;;;;;;;;;;15027:11;:24;;;;;15043:4;:8;15048:2;15043:8;;;;;;;;;;;;;;;;;;;;;;;;;15042:9;15027:24;15019:33;;;;;;15073:20;;;;;;;;;;;15069:346;;;15132:15;;;;;;;;;;;15118:30;;:2;:30;;;;:62;;;;;15166:13;;;;;;;;;;;15152:28;;:2;:28;;;;15118:62;15114:286;;;15253:12;15211:28;:39;15240:9;15211:39;;;;;;;;;;;;;;;;:54;15203:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15368:12;15326:28;:39;15355:9;15326:39;;;;;;;;;;;;;;;:54;;;;15114:286;15069:346;15443:13;;;;;;;;;;;15435:21;;:4;:21;;;:55;;;;;15474:15;;;;;;;;;;;15460:30;;:2;:30;;;;15435:55;:83;;;;;15496:18;:22;15515:2;15496:22;;;;;;;;;;;;;;;;;;;;;;;;;15494:24;15435:83;15431:465;;;15558:12;;15548:6;:22;;15540:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15653:14;;15643:6;15627:13;15637:2;15627:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;15619:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15730:18;;15720:9;;:28;15717:97;;;15779:14;15790:2;15779:10;:14::i;:::-;15778:15;15770:24;;;;;;15717:97;15832:9;;:11;;;;;;;;;:::i;:::-;;;;;;15876:4;15862:9;:13;15872:2;15862:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;15431:465;15924:76;15996:3;15924:67;15946:15;;15936:9;;:25;15935:55;;15976:14;;15935:55;;;15963:12;;15935:55;15924:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;15912:88;;16024:13;;;;;;;;;;;16018:19;;:2;:19;;;:43;;;;;16056:4;16041:20;;:4;:20;;;;16018:43;16015:350;;;16100:12;;16090:6;:22;;16082:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16173:79;16248:3;16173:70;16195:16;;16185:9;;:26;16184:58;;16227:15;;16184:58;;;16213:13;;16184:58;16173:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;16161:91;;16289:18;;16279:9;;:28;:47;;;;16311:9;:15;16321:4;16311:15;;;;;;;;;;;;;;;;;;;;;;;;;16279:47;16271:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16015:350;16381:28;16412:24;16430:4;16412:9;:24::i;:::-;16381:55;;16456:6;;;;;;;;;;;16455:7;:30;;;;;16472:13;;;;;;;;;;;16466:19;;:2;:19;;;16455:30;:45;;;;;16489:11;;;;;;;;;;;16455:45;:87;;;;;16525:17;;16504:20;:38;16455:87;:119;;;;;16556:18;;16546:9;;:28;16455:119;16451:419;;;16595:67;16612:49;16616:6;16623:37;16627:20;16648:11;;16623:3;:37::i;:::-;16612:3;:49::i;:::-;16595:16;:67::i;:::-;16681:26;16710:21;16681:50;;16774:1;16753:18;:22;16750:105;;;16800:35;16813:21;16800:12;:35::i;:::-;16750:105;16576:294;16451:419;15004:1877;14966:1915;16906:1;16896:9;:11;16893:161;;;16946:39;16975:9;16946;:24;16964:4;16946:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16921:9;:24;16939:4;16921:24;;;;;;;;;;;;;;;:64;;;;17026:4;17003:39;;17012:4;17003:39;;;17032:9;17003:39;;;;;;:::i;:::-;;;;;;;;16893:161;17080:27;17100:6;17080:9;:15;17090:4;17080:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;17064:9;:15;17074:4;17064:15;;;;;;;;;;;;;;;:43;;;;17132:40;17150:21;17161:9;17150:6;:10;;:21;;;;:::i;:::-;17132:9;:13;17142:2;17132:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;17118:9;:13;17128:2;17118:13;;;;;;;;;;;;;;;:54;;;;17203:2;17188:41;;17197:4;17188:41;;;17207:21;17218:9;17207:6;:10;;:21;;;;:::i;:::-;17188:41;;;;;;:::i;:::-;;;;;;;;14696:2541;14627:2610;;;:::o;8195:190::-;8281:7;8314:1;8309;:6;;8317:12;8301:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8341:9;8357:1;8353;:5;;;;:::i;:::-;8341:17;;8376:1;8369:8;;;8195:190;;;;;:::o;17351:555::-;12150:4;12141:6;;:13;;;;;;;;;;;;;;;;;;17445:1:::1;17432:11;:14:::0;17429:27;17448:7:::1;17429:27;17470:11;;;;;;;;;;;17466:25:::0;17483:7:::1;17466:25;17501:21;17539:1;17525:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17501:40;;17570:4;17552;17557:1;17552:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17596:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17586:4;17591:1;17586:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;17629:62;17646:4;17661:15;;;;;;;;;;;17679:11;17629:8;:62::i;:::-;17702:15;;;;;;;;;;;:66;;;17783:11;17809:1;17825:4;17852;17872:15;17702:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17418:488;12165:1;12186:5:::0;12177:6;;:14;;;;;;;;;;;;;;;;;;17351:555;:::o;18118:681::-;18175:15;18193:13;18204:1;18193:6;:10;;:13;;;;:::i;:::-;18175:31;;18218:9;18229:17;18250:16;;;;;;;;;;;:21;;18279:7;18250:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18217:74;;;;18310:4;18302:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;18382:13;;;;;;;;;;;:18;;18408:7;18382:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18367:53;;;;;;;;18439:4;18431:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;18508:23;;;;;;;;;;;:28;;18544:7;18508:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18493:63;;;;;;;;18575:4;18567:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18654:22;;;;;;;;;;;:27;;18689:26;18700:14;18712:1;18700:7;:11;;:14;;;;:::i;:::-;18689:6;:10;;:26;;;;:::i;:::-;18654:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18639:81;;;;;;;;18739:4;18731:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18164:635;;;18118:681;:::o;19614:195::-;19673:4;19690:12;19757:7;19745:20;19737:28;;19800:1;19793:4;:8;19786:15;;;19614:195;;;:::o;8393:246::-;8451:7;8480:1;8475;:6;8471:47;;8505:1;8498:8;;;;8471:47;8528:9;8544:1;8540;:5;;;;:::i;:::-;8528:17;;8573:1;8568;8564;:5;;;;:::i;:::-;:10;8556:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8630:1;8623:8;;;8393:246;;;;;:::o;8647:132::-;8705:7;8732:39;8736:1;8739;8732:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8725:46;;8647:132;;;;:::o;17245:98::-;17302:7;17329:1;17327;:3;17326:9;;17334:1;17326:9;;;17332:1;17326:9;17319:16;;17245:98;;;;:::o;7864:179::-;7922:7;7942:9;7958:1;7954;:5;;;;:::i;:::-;7942:17;;7983:1;7978;:6;;7970:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8034:1;8027:8;;;7864:179;;;;:::o;8051:136::-;8109:7;8136:43;8140:1;8143;8136:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8129:50;;8051:136;;;;:::o;8787:189::-;8873:7;8905:1;8901;:5;8908:12;8893:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8932:9;8948:1;8944;:5;;;;:::i;:::-;8932:17;;8967:1;8960:8;;;8787:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:182::-;6160:34;6156:1;6148:6;6144:14;6137:58;6020:182;:::o;6208:366::-;6350:3;6371:67;6435:2;6430:3;6371:67;:::i;:::-;6364:74;;6447:93;6536:3;6447:93;:::i;:::-;6565:2;6560:3;6556:12;6549:19;;6208:366;;;:::o;6580:419::-;6746:4;6784:2;6773:9;6769:18;6761:26;;6833:9;6827:4;6823:20;6819:1;6808:9;6804:17;6797:47;6861:131;6987:4;6861:131;:::i;:::-;6853:139;;6580:419;;;:::o;7005:173::-;7145:25;7141:1;7133:6;7129:14;7122:49;7005:173;:::o;7184:366::-;7326:3;7347:67;7411:2;7406:3;7347:67;:::i;:::-;7340:74;;7423:93;7512:3;7423:93;:::i;:::-;7541:2;7536:3;7532:12;7525:19;;7184:366;;;:::o;7556:419::-;7722:4;7760:2;7749:9;7745:18;7737:26;;7809:9;7803:4;7799:20;7795:1;7784:9;7780:17;7773:47;7837:131;7963:4;7837:131;:::i;:::-;7829:139;;7556:419;;;:::o;7981:143::-;8038:5;8069:6;8063:13;8054:22;;8085:33;8112:5;8085:33;:::i;:::-;7981:143;;;;:::o;8130:351::-;8200:6;8249:2;8237:9;8228:7;8224:23;8220:32;8217:119;;;8255:79;;:::i;:::-;8217:119;8375:1;8400:64;8456:7;8447:6;8436:9;8432:22;8400:64;:::i;:::-;8390:74;;8346:128;8130:351;;;;:::o;8487:332::-;8608:4;8646:2;8635:9;8631:18;8623:26;;8659:71;8727:1;8716:9;8712:17;8703:6;8659:71;:::i;:::-;8740:72;8808:2;8797:9;8793:18;8784:6;8740:72;:::i;:::-;8487:332;;;;;:::o;8825:85::-;8870:7;8899:5;8888:16;;8825:85;;;:::o;8916:60::-;8944:3;8965:5;8958:12;;8916:60;;;:::o;8982:158::-;9040:9;9073:61;9091:42;9100:32;9126:5;9100:32;:::i;:::-;9091:42;:::i;:::-;9073:61;:::i;:::-;9060:74;;8982:158;;;:::o;9146:147::-;9241:45;9280:5;9241:45;:::i;:::-;9236:3;9229:58;9146:147;;:::o;9299:807::-;9548:4;9586:3;9575:9;9571:19;9563:27;;9600:71;9668:1;9657:9;9653:17;9644:6;9600:71;:::i;:::-;9681:72;9749:2;9738:9;9734:18;9725:6;9681:72;:::i;:::-;9763:80;9839:2;9828:9;9824:18;9815:6;9763:80;:::i;:::-;9853;9929:2;9918:9;9914:18;9905:6;9853:80;:::i;:::-;9943:73;10011:3;10000:9;9996:19;9987:6;9943:73;:::i;:::-;10026;10094:3;10083:9;10079:19;10070:6;10026:73;:::i;:::-;9299:807;;;;;;;;;:::o;10112:143::-;10169:5;10200:6;10194:13;10185:22;;10216:33;10243:5;10216:33;:::i;:::-;10112:143;;;;:::o;10261:663::-;10349:6;10357;10365;10414:2;10402:9;10393:7;10389:23;10385:32;10382:119;;;10420:79;;:::i;:::-;10382:119;10540:1;10565:64;10621:7;10612:6;10601:9;10597:22;10565:64;:::i;:::-;10555:74;;10511:128;10678:2;10704:64;10760:7;10751:6;10740:9;10736:22;10704:64;:::i;:::-;10694:74;;10649:129;10817:2;10843:64;10899:7;10890:6;10879:9;10875:22;10843:64;:::i;:::-;10833:74;;10788:129;10261:663;;;;;:::o;10930:332::-;11051:4;11089:2;11078:9;11074:18;11066:26;;11102:71;11170:1;11159:9;11155:17;11146:6;11102:71;:::i;:::-;11183:72;11251:2;11240:9;11236:18;11227:6;11183:72;:::i;:::-;10930:332;;;;;:::o;11268:116::-;11338:21;11353:5;11338:21;:::i;:::-;11331:5;11328:32;11318:60;;11374:1;11371;11364:12;11318:60;11268:116;:::o;11390:137::-;11444:5;11475:6;11469:13;11460:22;;11491:30;11515:5;11491:30;:::i;:::-;11390:137;;;;:::o;11533:345::-;11600:6;11649:2;11637:9;11628:7;11624:23;11620:32;11617:119;;;11655:79;;:::i;:::-;11617:119;11775:1;11800:61;11853:7;11844:6;11833:9;11829:22;11800:61;:::i;:::-;11790:71;;11746:125;11533:345;;;;:::o;11884:223::-;12024:34;12020:1;12012:6;12008:14;12001:58;12093:6;12088:2;12080:6;12076:15;12069:31;11884:223;:::o;12113:366::-;12255:3;12276:67;12340:2;12335:3;12276:67;:::i;:::-;12269:74;;12352:93;12441:3;12352:93;:::i;:::-;12470:2;12465:3;12461:12;12454:19;;12113:366;;;:::o;12485:419::-;12651:4;12689:2;12678:9;12674:18;12666:26;;12738:9;12732:4;12728:20;12724:1;12713:9;12709:17;12702:47;12766:131;12892:4;12766:131;:::i;:::-;12758:139;;12485:419;;;:::o;12910:221::-;13050:34;13046:1;13038:6;13034:14;13027:58;13119:4;13114:2;13106:6;13102:15;13095:29;12910:221;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:224::-;14074:34;14070:1;14062:6;14058:14;14051:58;14143:7;14138:2;14130:6;14126:15;14119:32;13934:224;:::o;14164:366::-;14306:3;14327:67;14391:2;14386:3;14327:67;:::i;:::-;14320:74;;14403:93;14492:3;14403:93;:::i;:::-;14521:2;14516:3;14512:12;14505:19;;14164:366;;;:::o;14536:419::-;14702:4;14740:2;14729:9;14725:18;14717:26;;14789:9;14783:4;14779:20;14775:1;14764:9;14760:17;14753:47;14817:131;14943:4;14817:131;:::i;:::-;14809:139;;14536:419;;;:::o;14961:222::-;15101:34;15097:1;15089:6;15085:14;15078:58;15170:5;15165:2;15157:6;15153:15;15146:30;14961:222;:::o;15189:366::-;15331:3;15352:67;15416:2;15411:3;15352:67;:::i;:::-;15345:74;;15428:93;15517:3;15428:93;:::i;:::-;15546:2;15541:3;15537:12;15530:19;;15189:366;;;:::o;15561:419::-;15727:4;15765:2;15754:9;15750:18;15742:26;;15814:9;15808:4;15804:20;15800:1;15789:9;15785:17;15778:47;15842:131;15968:4;15842:131;:::i;:::-;15834:139;;15561:419;;;:::o;15986:228::-;16126:34;16122:1;16114:6;16110:14;16103:58;16195:11;16190:2;16182:6;16178:15;16171:36;15986:228;:::o;16220:366::-;16362:3;16383:67;16447:2;16442:3;16383:67;:::i;:::-;16376:74;;16459:93;16548:3;16459:93;:::i;:::-;16577:2;16572:3;16568:12;16561:19;;16220:366;;;:::o;16592:419::-;16758:4;16796:2;16785:9;16781:18;16773:26;;16845:9;16839:4;16835:20;16831:1;16820:9;16816:17;16809:47;16873:131;16999:4;16873:131;:::i;:::-;16865:139;;16592:419;;;:::o;17017:223::-;17157:34;17153:1;17145:6;17141:14;17134:58;17226:6;17221:2;17213:6;17209:15;17202:31;17017:223;:::o;17246:366::-;17388:3;17409:67;17473:2;17468:3;17409:67;:::i;:::-;17402:74;;17485:93;17574:3;17485:93;:::i;:::-;17603:2;17598:3;17594:12;17587:19;;17246:366;;;:::o;17618:419::-;17784:4;17822:2;17811:9;17807:18;17799:26;;17871:9;17865:4;17861:20;17857:1;17846:9;17842:17;17835:47;17899:131;18025:4;17899:131;:::i;:::-;17891:139;;17618:419;;;:::o;18043:175::-;18183:27;18179:1;18171:6;18167:14;18160:51;18043:175;:::o;18224:366::-;18366:3;18387:67;18451:2;18446:3;18387:67;:::i;:::-;18380:74;;18463:93;18552:3;18463:93;:::i;:::-;18581:2;18576:3;18572:12;18565:19;;18224:366;;;:::o;18596:419::-;18762:4;18800:2;18789:9;18785:18;18777:26;;18849:9;18843:4;18839:20;18835:1;18824:9;18820:17;18813:47;18877:131;19003:4;18877:131;:::i;:::-;18869:139;;18596:419;;;:::o;19021:180::-;19069:77;19066:1;19059:88;19166:4;19163:1;19156:15;19190:4;19187:1;19180:15;19207:191;19247:3;19266:20;19284:1;19266:20;:::i;:::-;19261:25;;19300:20;19318:1;19300:20;:::i;:::-;19295:25;;19343:1;19340;19336:9;19329:16;;19364:3;19361:1;19358:10;19355:36;;;19371:18;;:::i;:::-;19355:36;19207:191;;;;:::o;19404:176::-;19544:28;19540:1;19532:6;19528:14;19521:52;19404:176;:::o;19586:366::-;19728:3;19749:67;19813:2;19808:3;19749:67;:::i;:::-;19742:74;;19825:93;19914:3;19825:93;:::i;:::-;19943:2;19938:3;19934:12;19927:19;;19586:366;;;:::o;19958:419::-;20124:4;20162:2;20151:9;20147:18;20139:26;;20211:9;20205:4;20201:20;20197:1;20186:9;20182:17;20175:47;20239:131;20365:4;20239:131;:::i;:::-;20231:139;;19958:419;;;:::o;20383:233::-;20422:3;20445:24;20463:5;20445:24;:::i;:::-;20436:33;;20491:66;20484:5;20481:77;20478:103;;20561:18;;:::i;:::-;20478:103;20608:1;20601:5;20597:13;20590:20;;20383:233;;;:::o;20622:169::-;20762:21;20758:1;20750:6;20746:14;20739:45;20622:169;:::o;20797:366::-;20939:3;20960:67;21024:2;21019:3;20960:67;:::i;:::-;20953:74;;21036:93;21125:3;21036:93;:::i;:::-;21154:2;21149:3;21145:12;21138:19;;20797:366;;;:::o;21169:419::-;21335:4;21373:2;21362:9;21358:18;21350:26;;21422:9;21416:4;21412:20;21408:1;21397:9;21393:17;21386:47;21450:131;21576:4;21450:131;:::i;:::-;21442:139;;21169:419;;;:::o;21594:194::-;21634:4;21654:20;21672:1;21654:20;:::i;:::-;21649:25;;21688:20;21706:1;21688:20;:::i;:::-;21683:25;;21732:1;21729;21725:9;21717:17;;21756:1;21750:4;21747:11;21744:37;;;21761:18;;:::i;:::-;21744:37;21594:194;;;;:::o;21794:180::-;21842:77;21839:1;21832:88;21939:4;21936:1;21929:15;21963:4;21960:1;21953:15;21980:180;22028:77;22025:1;22018:88;22125:4;22122:1;22115:15;22149:4;22146:1;22139:15;22166:114;22233:6;22267:5;22261:12;22251:22;;22166:114;;;:::o;22286:184::-;22385:11;22419:6;22414:3;22407:19;22459:4;22454:3;22450:14;22435:29;;22286:184;;;;:::o;22476:132::-;22543:4;22566:3;22558:11;;22596:4;22591:3;22587:14;22579:22;;22476:132;;;:::o;22614:108::-;22691:24;22709:5;22691:24;:::i;:::-;22686:3;22679:37;22614:108;;:::o;22728:179::-;22797:10;22818:46;22860:3;22852:6;22818:46;:::i;:::-;22896:4;22891:3;22887:14;22873:28;;22728:179;;;;:::o;22913:113::-;22983:4;23015;23010:3;23006:14;22998:22;;22913:113;;;:::o;23062:732::-;23181:3;23210:54;23258:5;23210:54;:::i;:::-;23280:86;23359:6;23354:3;23280:86;:::i;:::-;23273:93;;23390:56;23440:5;23390:56;:::i;:::-;23469:7;23500:1;23485:284;23510:6;23507:1;23504:13;23485:284;;;23586:6;23580:13;23613:63;23672:3;23657:13;23613:63;:::i;:::-;23606:70;;23699:60;23752:6;23699:60;:::i;:::-;23689:70;;23545:224;23532:1;23529;23525:9;23520:14;;23485:284;;;23489:14;23785:3;23778:10;;23186:608;;;23062:732;;;;:::o;23800:831::-;24063:4;24101:3;24090:9;24086:19;24078:27;;24115:71;24183:1;24172:9;24168:17;24159:6;24115:71;:::i;:::-;24196:80;24272:2;24261:9;24257:18;24248:6;24196:80;:::i;:::-;24323:9;24317:4;24313:20;24308:2;24297:9;24293:18;24286:48;24351:108;24454:4;24445:6;24351:108;:::i;:::-;24343:116;;24469:72;24537:2;24526:9;24522:18;24513:6;24469:72;:::i;:::-;24551:73;24619:3;24608:9;24604:19;24595:6;24551:73;:::i;:::-;23800:831;;;;;;;;:::o;24637:147::-;24738:11;24775:3;24760:18;;24637:147;;;;:::o;24790:114::-;;:::o;24910:398::-;25069:3;25090:83;25171:1;25166:3;25090:83;:::i;:::-;25083:90;;25182:93;25271:3;25182:93;:::i;:::-;25300:1;25295:3;25291:11;25284:18;;24910:398;;;:::o;25314:379::-;25498:3;25520:147;25663:3;25520:147;:::i;:::-;25513:154;;25684:3;25677:10;;25314:379;;;:::o;25699:224::-;25839:34;25835:1;25827:6;25823:14;25816:58;25908:7;25903:2;25895:6;25891:15;25884:32;25699:224;:::o;25929:366::-;26071:3;26092:67;26156:2;26151:3;26092:67;:::i;:::-;26085:74;;26168:93;26257:3;26168:93;:::i;:::-;26286:2;26281:3;26277:12;26270:19;;25929:366;;;:::o;26301:419::-;26467:4;26505:2;26494:9;26490:18;26482:26;;26554:9;26548:4;26544:20;26540:1;26529:9;26525:17;26518:47;26582:131;26708:4;26582:131;:::i;:::-;26574:139;;26301:419;;;:::o;26726:221::-;26866:34;26862:1;26854:6;26850:14;26843:58;26935:4;26930:2;26922:6;26918:15;26911:29;26726:221;:::o;26953:366::-;27095:3;27116:67;27180:2;27175:3;27116:67;:::i;:::-;27109:74;;27192:93;27281:3;27192:93;:::i;:::-;27310:2;27305:3;27301:12;27294:19;;26953:366;;;:::o;27325:419::-;27491:4;27529:2;27518:9;27514:18;27506:26;;27578:9;27572:4;27568:20;27564:1;27553:9;27549:17;27542:47;27606:131;27732:4;27606:131;:::i;:::-;27598:139;;27325:419;;;:::o;27750:231::-;27890:34;27886:1;27878:6;27874:14;27867:58;27959:14;27954:2;27946:6;27942:15;27935:39;27750:231;:::o;27987:366::-;28129:3;28150:67;28214:2;28209:3;28150:67;:::i;:::-;28143:74;;28226:93;28315:3;28226:93;:::i;:::-;28344:2;28339:3;28335:12;28328:19;;27987:366;;;:::o;28359:419::-;28525:4;28563:2;28552:9;28548:18;28540:26;;28612:9;28606:4;28602:20;28598:1;28587:9;28583:17;28576:47;28640:131;28766:4;28640:131;:::i;:::-;28632:139;;28359:419;;;:::o;28784:230::-;28924:34;28920:1;28912:6;28908:14;28901:58;28993:13;28988:2;28980:6;28976:15;28969:38;28784:230;:::o;29020:366::-;29162:3;29183:67;29247:2;29242:3;29183:67;:::i;:::-;29176:74;;29259:93;29348:3;29259:93;:::i;:::-;29377:2;29372:3;29368:12;29361:19;;29020:366;;;:::o;29392:419::-;29558:4;29596:2;29585:9;29581:18;29573:26;;29645:9;29639:4;29635:20;29631:1;29620:9;29616:17;29609:47;29673:131;29799:4;29673:131;:::i;:::-;29665:139;;29392:419;;;:::o;29817:410::-;29857:7;29880:20;29898:1;29880:20;:::i;:::-;29875:25;;29914:20;29932:1;29914:20;:::i;:::-;29909:25;;29969:1;29966;29962:9;29991:30;30009:11;29991:30;:::i;:::-;29980:41;;30170:1;30161:7;30157:15;30154:1;30151:22;30131:1;30124:9;30104:83;30081:139;;30200:18;;:::i;:::-;30081:139;29865:362;29817:410;;;;:::o;30233:180::-;30281:77;30278:1;30271:88;30378:4;30375:1;30368:15;30402:4;30399:1;30392:15;30419:185;30459:1;30476:20;30494:1;30476:20;:::i;:::-;30471:25;;30510:20;30528:1;30510:20;:::i;:::-;30505:25;;30549:1;30539:35;;30554:18;;:::i;:::-;30539:35;30596:1;30593;30589:9;30584:14;;30419:185;;;;:::o;30610:220::-;30750:34;30746:1;30738:6;30734:14;30727:58;30819:3;30814:2;30806:6;30802:15;30795:28;30610:220;:::o;30836:366::-;30978:3;30999:67;31063:2;31058:3;30999:67;:::i;:::-;30992:74;;31075:93;31164:3;31075:93;:::i;:::-;31193:2;31188:3;31184:12;31177:19;;30836:366;;;:::o;31208:419::-;31374:4;31412:2;31401:9;31397:18;31389:26;;31461:9;31455:4;31451:20;31447:1;31436:9;31432:17;31425:47;31489:131;31615:4;31489:131;:::i;:::-;31481:139;;31208:419;;;:::o;31633:177::-;31773:29;31769:1;31761:6;31757:14;31750:53;31633:177;:::o;31816:366::-;31958:3;31979:67;32043:2;32038:3;31979:67;:::i;:::-;31972:74;;32055:93;32144:3;32055:93;:::i;:::-;32173:2;32168:3;32164:12;32157:19;;31816:366;;;:::o;32188:419::-;32354:4;32392:2;32381:9;32377:18;32369:26;;32441:9;32435:4;32431:20;32427:1;32416:9;32412:17;32405:47;32469:131;32595:4;32469:131;:::i;:::-;32461:139;;32188:419;;;:::o
Swarm Source
ipfs://57c99a9f61f005a811adf7905ffafc1e224dc500367413163f7bc74bd506da80
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.