Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CristaRonaldoInu
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-11-24
*/
// SPDX-License-Identifier: Unlicensed
// Telegram: https://t.me/CristaRonaldoInu
pragma solidity ^0.8.9;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
}
contract CristaRonaldoInu is Context, IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = "Crista Ronaldo Inu";
string private constant _symbol = "$SEWEY";
uint8 private constant _decimals = 9;
mapping(address => uint256) private _rOwned;
mapping(address => uint256) private _tOwned;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
uint256 private constant MAX = ~uint256(0);
uint256 private constant _tTotal = 1000000000 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
uint256 private _redisFeeOnBuy = 0;
uint256 private _taxFeeOnBuy = 2;
uint256 private _redisFeeOnSell = 0;
uint256 private _taxFeeOnSell = 2;
//Original Fee
uint256 private _redisFee = _redisFeeOnSell;
uint256 private _taxFee = _taxFeeOnSell;
uint256 private _previousredisFee = _redisFee;
uint256 private _previoustaxFee = _taxFee;
mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
address payable private _developmentAddress = payable(0xA7f89F4b0cD15f4B39738033D821bF8e4c8fd276);
address payable private _marketingAddress = payable(0xA7f89F4b0cD15f4B39738033D821bF8e4c8fd276);
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
bool private tradingOpen;
bool private inSwap = false;
bool private swapEnabled = true;
uint256 public _maxTxAmount = 15000000 * 10**9;
uint256 public _maxWalletSize = 30000000 * 10**9;
uint256 public _swapTokensAtAmount = 10000 * 10**9;
event MaxTxAmountUpdated(uint256 _maxTxAmount);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor() {
_rOwned[_msgSender()] = _rTotal;
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_developmentAddress] = true;
_isExcludedFromFee[_marketingAddress] = true;
emit Transfer(address(0), _msgSender(), _tTotal);
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount)
public
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender)
public
view
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(
amount,
"ERC20: transfer amount exceeds allowance"
)
);
return true;
}
function tokenFromReflection(uint256 rAmount)
private
view
returns (uint256)
{
require(
rAmount <= _rTotal,
"Amount must be less than total reflections"
);
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function removeAllFee() private {
if (_redisFee == 0 && _taxFee == 0) return;
_previousredisFee = _redisFee;
_previoustaxFee = _taxFee;
_redisFee = 0;
_taxFee = 0;
}
function restoreAllFee() private {
_redisFee = _previousredisFee;
_taxFee = _previoustaxFee;
}
function _approve(
address owner,
address spender,
uint256 amount
) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(
address from,
address to,
uint256 amount
) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if (from != owner() && to != owner()) {
//Trade start check
if (!tradingOpen) {
require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
}
require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
if(to != uniswapV2Pair) {
require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
if(contractTokenBalance >= _maxTxAmount)
{
contractTokenBalance = _maxTxAmount;
}
if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
swapTokensForEth(contractTokenBalance);
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
sendETHToFee(address(this).balance);
}
}
}
bool takeFee = true;
//Transfer Tokens
if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
takeFee = false;
} else {
//Set Fee for Buys
if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
_redisFee = _redisFeeOnBuy;
_taxFee = _taxFeeOnBuy;
}
//Set Fee for Sells
if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
_redisFee = _redisFeeOnSell;
_taxFee = _taxFeeOnSell;
}
}
_tokenTransfer(from, to, amount, takeFee);
}
function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function sendETHToFee(uint256 amount) private {
_marketingAddress.transfer(amount);
}
function setTrading(bool _tradingOpen) public onlyOwner {
tradingOpen = _tradingOpen;
}
function manualswap() external {
require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
uint256 contractBalance = balanceOf(address(this));
swapTokensForEth(contractBalance);
}
function manualsend() external {
require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
uint256 contractETHBalance = address(this).balance;
sendETHToFee(contractETHBalance);
}
function blockBots(address[] memory bots_) public onlyOwner {
for (uint256 i = 0; i < bots_.length; i++) {
bots[bots_[i]] = true;
}
}
function unblockBot(address notbot) public onlyOwner {
bots[notbot] = false;
}
function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
_maxTxAmount = newNum * (10**9);
}
function _tokenTransfer(
address sender,
address recipient,
uint256 amount,
bool takeFee
) private {
if (!takeFee) removeAllFee();
_transferStandard(sender, recipient, amount);
if (!takeFee) restoreAllFee();
}
function _transferStandard(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tTeam
) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeTeam(tTeam);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _takeTeam(uint256 tTeam) private {
uint256 currentRate = _getRate();
uint256 rTeam = tTeam.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
receive() external payable {}
function _getValues(uint256 tAmount)
private
view
returns (
uint256,
uint256,
uint256,
uint256,
uint256,
uint256
)
{
(uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
_getTValues(tAmount, _redisFee, _taxFee);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
_getRValues(tAmount, tFee, tTeam, currentRate);
return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
}
function _getTValues(
uint256 tAmount,
uint256 redisFee,
uint256 taxFee
)
private
pure
returns (
uint256,
uint256,
uint256
)
{
uint256 tFee = tAmount.mul(redisFee).div(100);
uint256 tTeam = tAmount.mul(taxFee).div(100);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
return (tTransferAmount, tFee, tTeam);
}
function _getRValues(
uint256 tAmount,
uint256 tFee,
uint256 tTeam,
uint256 currentRate
)
private
pure
returns (
uint256,
uint256,
uint256
)
{
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rTeam = tTeam.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns (uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns (uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
_redisFeeOnBuy = redisFeeOnBuy;
_redisFeeOnSell = redisFeeOnSell;
_taxFeeOnBuy = taxFeeOnBuy;
_taxFeeOnSell = taxFeeOnSell;
require(taxFeeOnBuy <= 10, "Must keep fees at 10% or less");
require(taxFeeOnBuy <= 10, "Must keep fees at 10% or less");
}
//Set minimum tokens required to swap.
function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
_swapTokensAtAmount = swapTokensAtAmount;
}
//Set minimum tokens required to swap.
function toggleSwap(bool _swapEnabled) public onlyOwner {
swapEnabled = _swapEnabled;
}
function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
for(uint256 i = 0; i < accounts.length; i++) {
_isExcludedFromFee[accounts[i]] = excluded;
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052670de0b6b3a76400006000196200001c91906200073e565b6000196200002b9190620007a5565b600655600060085560026009556000600a556002600b55600a54600c55600b54600d55600c54600e55600d54600f5573a7f89f4b0cd15f4b39738033d821bf8e4c8fd276601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a7f89f4b0cd15f4b39738033d821bf8e4c8fd276601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066354a6ba7a18000601655666a94d74f4300006017556509184e72a0006018553480156200016657600080fd5b50600062000179620006d460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030d57600080fd5b505afa15801562000322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034891906200084a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e691906200084a565b6040518363ffffffff1660e01b8152600401620004059291906200088d565b602060405180830381600087803b1580156200042057600080fd5b505af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b91906200084a565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b1620006dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006c59190620008cb565b60405180910390a350620008e8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200074b8262000705565b9150620007588362000705565b9250826200076b576200076a6200070f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b28262000705565b9150620007bf8362000705565b925082821015620007d557620007d462000776565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081282620007e5565b9050919050565b620008248162000805565b81146200083057600080fd5b50565b600081519050620008448162000819565b92915050565b600060208284031215620008635762000862620007e0565b5b6000620008738482850162000833565b91505092915050565b620008878162000805565b82525050565b6000604082019050620008a460008301856200087c565b620008b360208301846200087c565b9392505050565b620008c58162000705565b82525050565b6000602082019050620008e26000830184620008ba565b92915050565b613e1080620008f86000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd801461063a578063c492f04614610651578063dd62ed3e1461067a578063f2fde38b146106b7576101cc565b806398a5c3151461056e578063a2a957bb14610597578063a9059cbb146105c0578063bfd79284146105fd576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f70ccf7146104ef5780638f9a55c01461051857806395d89b4114610543576101cc565b8063715018a6146104455780637d1db4a51461045c5780637f2feddc14610487576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d578063203e727e146102b857806323b872dd146102e1576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612d30565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612e01565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612e59565b610847565b6040516102599190612eb4565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612f2e565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612f58565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612f73565b61089b565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612fa0565b610949565b6040516103159190612eb4565b60405180910390f35b34801561032a57600080fd5b50610333610a22565b6040516103409190612f58565b60405180910390f35b34801561035557600080fd5b5061035e610a28565b60405161036b919061300f565b60405180910390f35b34801561038057600080fd5b50610389610a31565b6040516103969190613039565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613054565b610a57565b005b3480156103d457600080fd5b506103ef60048036038101906103ea91906130ad565b610b47565b005b3480156103fd57600080fd5b50610406610bf9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190613054565b610cca565b60405161043c9190612f58565b60405180910390f35b34801561045157600080fd5b5061045a610d1b565b005b34801561046857600080fd5b50610471610e6e565b60405161047e9190612f58565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190613054565b610e74565b6040516104bb9190612f58565b60405180910390f35b3480156104d057600080fd5b506104d9610e8c565b6040516104e69190613039565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906130ad565b610eb5565b005b34801561052457600080fd5b5061052d610f67565b60405161053a9190612f58565b60405180910390f35b34801561054f57600080fd5b50610558610f6d565b6040516105659190612e01565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612f73565b610faa565b005b3480156105a357600080fd5b506105be60048036038101906105b991906130da565b611049565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190612e59565b611188565b6040516105f49190612eb4565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613054565b6111a6565b6040516106319190612eb4565b60405180910390f35b34801561064657600080fd5b5061064f6111c6565b005b34801561065d57600080fd5b506106786004803603810190610673919061319c565b61129f565b005b34801561068657600080fd5b506106a1600480360381019061069c91906131fc565b6113d9565b6040516106ae9190612f58565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613054565b611460565b005b6106e8611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613288565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a576107996132a8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe90613306565b915050610778565b5050565b60606040518060400160405280601281526020017f43726973746120526f6e616c646f20496e750000000000000000000000000000815250905090565b600061085b610854611622565b848461162a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6108a3611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790613288565b60405180910390fd5b633b9aca0081610940919061334f565b60168190555050565b60006109568484846117f5565b610a1784610962611622565b610a1285604051806060016040528060288152602001613db360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c8611622565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207a9092919063ffffffff16565b61162a565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390613288565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613288565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3a611622565b73ffffffffffffffffffffffffffffffffffffffff161480610cb05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c98611622565b73ffffffffffffffffffffffffffffffffffffffff16145b610cb957600080fd5b6000479050610cc7816120de565b50565b6000610d14600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214a565b9050919050565b610d23611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613288565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f2453455745590000000000000000000000000000000000000000000000000000815250905090565b610fb2611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690613288565b60405180910390fd5b8060188190555050565b611051611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613288565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600a82111561113e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611135906133f5565b60405180910390fd5b600a821115611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906133f5565b60405180910390fd5b50505050565b600061119c611195611622565b84846117f5565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611207611622565b73ffffffffffffffffffffffffffffffffffffffff16148061127d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611265611622565b73ffffffffffffffffffffffffffffffffffffffff16145b61128657600080fd5b600061129130610cca565b905061129c816121b8565b50565b6112a7611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90613288565b60405180910390fd5b60005b838390508110156113d357816005600086868581811061135a576113596132a8565b5b905060200201602081019061136f9190613054565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113cb90613306565b915050611337565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611468611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90613487565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190613519565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561170a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611701906135ab565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e89190612f58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061363d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906136cf565b60405180910390fd5b60008111611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90613761565b60405180910390fd5b611920610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561198e575061195e610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7957601560149054906101000a900460ff16611a1d576119af610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906137f3565b60405180910390fd5b5b601654811115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599061385f565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b065750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c906138f1565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bf25760175481611ba784610cca565b611bb19190613911565b10611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be8906139d9565b60405180910390fd5b5b6000611bfd30610cca565b9050600060185482101590506016548210611c185760165491505b808015611c30575060158054906101000a900460ff16155b8015611c8a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca25750601560169054906101000a900460ff165b8015611cf85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d7657611d5c826121b8565b60004790506000811115611d7457611d73476120de565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ed35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ed25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ee15760009050612068565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f8c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fa457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561204f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561206757600a54600c81905550600b54600d819055505b5b6120748484848461243e565b50505050565b60008383111582906120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99190612e01565b60405180910390fd5b50600083856120d191906139f9565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612146573d6000803e3d6000fd5b5050565b6000600654821115612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890613a9f565b60405180910390fd5b600061219b61246b565b90506121b0818461249690919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ef576121ee612b8f565b5b60405190808252806020026020018201604052801561221d5781602001602082028036833780820191505090505b5090503081600081518110612235576122346132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d757600080fd5b505afa1580156122eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230f9190613ad4565b81600181518110612323576123226132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238a30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461162a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123ee959493929190613bfa565b600060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061244c5761244b6124e0565b5b612457848484612523565b80612465576124646126ee565b5b50505050565b6000806000612478612702565b9150915061248f818361249690919063ffffffff16565b9250505090565b60006124d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612761565b905092915050565b6000600c541480156124f457506000600d54145b156124fe57612521565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612535876127c4565b95509550955095509550955061259386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612674816128d4565b61267e8483612991565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126db9190612f58565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612736670de0b6b3a764000060065461249690919063ffffffff16565b82101561275457600654670de0b6b3a764000093509350505061275d565b81819350935050505b9091565b600080831182906127a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279f9190612e01565b60405180910390fd5b50600083856127b79190613c83565b9050809150509392505050565b60008060008060008060008060006127e18a600c54600d546129cb565b92509250925060006127f161246b565b905060008060006128048e878787612a61565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061286e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061207a565b905092915050565b60008082846128859190613911565b9050838110156128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190613d00565b60405180910390fd5b8091505092915050565b60006128de61246b565b905060006128f58284612aea90919063ffffffff16565b905061294981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129a68260065461282c90919063ffffffff16565b6006819055506129c18160075461287690919063ffffffff16565b6007819055505050565b6000806000806129f760646129e9888a612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a216064612a13888b612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a4a82612a3c858c61282c90919063ffffffff16565b61282c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a7a8589612aea90919063ffffffff16565b90506000612a918689612aea90919063ffffffff16565b90506000612aa88789612aea90919063ffffffff16565b90506000612ad182612ac3858761282c90919063ffffffff16565b61282c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612afd5760009050612b5f565b60008284612b0b919061334f565b9050828482612b1a9190613c83565b14612b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5190613d92565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc782612b7e565b810181811067ffffffffffffffff82111715612be657612be5612b8f565b5b80604052505050565b6000612bf9612b65565b9050612c058282612bbe565b919050565b600067ffffffffffffffff821115612c2557612c24612b8f565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6682612c3b565b9050919050565b612c7681612c5b565b8114612c8157600080fd5b50565b600081359050612c9381612c6d565b92915050565b6000612cac612ca784612c0a565b612bef565b90508083825260208201905060208402830185811115612ccf57612cce612c36565b5b835b81811015612cf85780612ce48882612c84565b845260208401935050602081019050612cd1565b5050509392505050565b600082601f830112612d1757612d16612b79565b5b8135612d27848260208601612c99565b91505092915050565b600060208284031215612d4657612d45612b6f565b5b600082013567ffffffffffffffff811115612d6457612d63612b74565b5b612d7084828501612d02565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db3578082015181840152602081019050612d98565b83811115612dc2576000848401525b50505050565b6000612dd382612d79565b612ddd8185612d84565b9350612ded818560208601612d95565b612df681612b7e565b840191505092915050565b60006020820190508181036000830152612e1b8184612dc8565b905092915050565b6000819050919050565b612e3681612e23565b8114612e4157600080fd5b50565b600081359050612e5381612e2d565b92915050565b60008060408385031215612e7057612e6f612b6f565b5b6000612e7e85828601612c84565b9250506020612e8f85828601612e44565b9150509250929050565b60008115159050919050565b612eae81612e99565b82525050565b6000602082019050612ec96000830184612ea5565b92915050565b6000819050919050565b6000612ef4612eef612eea84612c3b565b612ecf565b612c3b565b9050919050565b6000612f0682612ed9565b9050919050565b6000612f1882612efb565b9050919050565b612f2881612f0d565b82525050565b6000602082019050612f436000830184612f1f565b92915050565b612f5281612e23565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b600060208284031215612f8957612f88612b6f565b5b6000612f9784828501612e44565b91505092915050565b600080600060608486031215612fb957612fb8612b6f565b5b6000612fc786828701612c84565b9350506020612fd886828701612c84565b9250506040612fe986828701612e44565b9150509250925092565b600060ff82169050919050565b61300981612ff3565b82525050565b60006020820190506130246000830184613000565b92915050565b61303381612c5b565b82525050565b600060208201905061304e600083018461302a565b92915050565b60006020828403121561306a57613069612b6f565b5b600061307884828501612c84565b91505092915050565b61308a81612e99565b811461309557600080fd5b50565b6000813590506130a781613081565b92915050565b6000602082840312156130c3576130c2612b6f565b5b60006130d184828501613098565b91505092915050565b600080600080608085870312156130f4576130f3612b6f565b5b600061310287828801612e44565b945050602061311387828801612e44565b935050604061312487828801612e44565b925050606061313587828801612e44565b91505092959194509250565b600080fd5b60008083601f84011261315c5761315b612b79565b5b8235905067ffffffffffffffff81111561317957613178613141565b5b60208301915083602082028301111561319557613194612c36565b5b9250929050565b6000806000604084860312156131b5576131b4612b6f565b5b600084013567ffffffffffffffff8111156131d3576131d2612b74565b5b6131df86828701613146565b935093505060206131f286828701613098565b9150509250925092565b6000806040838503121561321357613212612b6f565b5b600061322185828601612c84565b925050602061323285828601612c84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613272602083612d84565b915061327d8261323c565b602082019050919050565b600060208201905081810360008301526132a181613265565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331182612e23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613344576133436132d7565b5b600182019050919050565b600061335a82612e23565b915061336583612e23565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339e5761339d6132d7565b5b828202905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006133df601d83612d84565b91506133ea826133a9565b602082019050919050565b6000602082019050818103600083015261340e816133d2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613471602683612d84565b915061347c82613415565b604082019050919050565b600060208201905081810360008301526134a081613464565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613503602483612d84565b915061350e826134a7565b604082019050919050565b60006020820190508181036000830152613532816134f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613595602283612d84565b91506135a082613539565b604082019050919050565b600060208201905081810360008301526135c481613588565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613627602583612d84565b9150613632826135cb565b604082019050919050565b600060208201905081810360008301526136568161361a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136b9602383612d84565b91506136c48261365d565b604082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061374b602983612d84565b9150613756826136ef565b604082019050919050565b6000602082019050818103600083015261377a8161373e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137dd603f83612d84565b91506137e882613781565b604082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613849601c83612d84565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138db602383612d84565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b600061391c82612e23565b915061392783612e23565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561395c5761395b6132d7565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139c3602383612d84565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b6000613a0482612e23565b9150613a0f83612e23565b925082821015613a2257613a216132d7565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a89602a83612d84565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b600081519050613ace81612c6d565b92915050565b600060208284031215613aea57613ae9612b6f565b5b6000613af884828501613abf565b91505092915050565b6000819050919050565b6000613b26613b21613b1c84613b01565b612ecf565b612e23565b9050919050565b613b3681613b0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7181612c5b565b82525050565b6000613b838383613b68565b60208301905092915050565b6000602082019050919050565b6000613ba782613b3c565b613bb18185613b47565b9350613bbc83613b58565b8060005b83811015613bed578151613bd48882613b77565b9750613bdf83613b8f565b925050600181019050613bc0565b5085935050505092915050565b600060a082019050613c0f6000830188612f49565b613c1c6020830187613b2d565b8181036040830152613c2e8186613b9c565b9050613c3d606083018561302a565b613c4a6080830184612f49565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8e82612e23565b9150613c9983612e23565b925082613ca957613ca8613c54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cea601b83612d84565b9150613cf582613cb4565b602082019050919050565b60006020820190508181036000830152613d1981613cdd565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d7c602183612d84565b9150613d8782613d20565b604082019050919050565b60006020820190508181036000830152613dab81613d6f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f0882061c345777a39b58ea708a4616bf497f057e3c8ea4f5cf31ab3e90eb9164736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd801461063a578063c492f04614610651578063dd62ed3e1461067a578063f2fde38b146106b7576101cc565b806398a5c3151461056e578063a2a957bb14610597578063a9059cbb146105c0578063bfd79284146105fd576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f70ccf7146104ef5780638f9a55c01461051857806395d89b4114610543576101cc565b8063715018a6146104455780637d1db4a51461045c5780637f2feddc14610487576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d578063203e727e146102b857806323b872dd146102e1576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612d30565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612e01565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612e59565b610847565b6040516102599190612eb4565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612f2e565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612f58565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612f73565b61089b565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612fa0565b610949565b6040516103159190612eb4565b60405180910390f35b34801561032a57600080fd5b50610333610a22565b6040516103409190612f58565b60405180910390f35b34801561035557600080fd5b5061035e610a28565b60405161036b919061300f565b60405180910390f35b34801561038057600080fd5b50610389610a31565b6040516103969190613039565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613054565b610a57565b005b3480156103d457600080fd5b506103ef60048036038101906103ea91906130ad565b610b47565b005b3480156103fd57600080fd5b50610406610bf9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190613054565b610cca565b60405161043c9190612f58565b60405180910390f35b34801561045157600080fd5b5061045a610d1b565b005b34801561046857600080fd5b50610471610e6e565b60405161047e9190612f58565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190613054565b610e74565b6040516104bb9190612f58565b60405180910390f35b3480156104d057600080fd5b506104d9610e8c565b6040516104e69190613039565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906130ad565b610eb5565b005b34801561052457600080fd5b5061052d610f67565b60405161053a9190612f58565b60405180910390f35b34801561054f57600080fd5b50610558610f6d565b6040516105659190612e01565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612f73565b610faa565b005b3480156105a357600080fd5b506105be60048036038101906105b991906130da565b611049565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190612e59565b611188565b6040516105f49190612eb4565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613054565b6111a6565b6040516106319190612eb4565b60405180910390f35b34801561064657600080fd5b5061064f6111c6565b005b34801561065d57600080fd5b506106786004803603810190610673919061319c565b61129f565b005b34801561068657600080fd5b506106a1600480360381019061069c91906131fc565b6113d9565b6040516106ae9190612f58565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613054565b611460565b005b6106e8611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613288565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a576107996132a8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe90613306565b915050610778565b5050565b60606040518060400160405280601281526020017f43726973746120526f6e616c646f20496e750000000000000000000000000000815250905090565b600061085b610854611622565b848461162a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6108a3611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790613288565b60405180910390fd5b633b9aca0081610940919061334f565b60168190555050565b60006109568484846117f5565b610a1784610962611622565b610a1285604051806060016040528060288152602001613db360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c8611622565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207a9092919063ffffffff16565b61162a565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390613288565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613288565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3a611622565b73ffffffffffffffffffffffffffffffffffffffff161480610cb05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c98611622565b73ffffffffffffffffffffffffffffffffffffffff16145b610cb957600080fd5b6000479050610cc7816120de565b50565b6000610d14600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214a565b9050919050565b610d23611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613288565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f2453455745590000000000000000000000000000000000000000000000000000815250905090565b610fb2611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690613288565b60405180910390fd5b8060188190555050565b611051611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613288565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600a82111561113e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611135906133f5565b60405180910390fd5b600a821115611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906133f5565b60405180910390fd5b50505050565b600061119c611195611622565b84846117f5565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611207611622565b73ffffffffffffffffffffffffffffffffffffffff16148061127d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611265611622565b73ffffffffffffffffffffffffffffffffffffffff16145b61128657600080fd5b600061129130610cca565b905061129c816121b8565b50565b6112a7611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90613288565b60405180910390fd5b60005b838390508110156113d357816005600086868581811061135a576113596132a8565b5b905060200201602081019061136f9190613054565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113cb90613306565b915050611337565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611468611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90613487565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190613519565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561170a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611701906135ab565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e89190612f58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061363d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906136cf565b60405180910390fd5b60008111611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90613761565b60405180910390fd5b611920610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561198e575061195e610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7957601560149054906101000a900460ff16611a1d576119af610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906137f3565b60405180910390fd5b5b601654811115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599061385f565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b065750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c906138f1565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bf25760175481611ba784610cca565b611bb19190613911565b10611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be8906139d9565b60405180910390fd5b5b6000611bfd30610cca565b9050600060185482101590506016548210611c185760165491505b808015611c30575060158054906101000a900460ff16155b8015611c8a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca25750601560169054906101000a900460ff165b8015611cf85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d7657611d5c826121b8565b60004790506000811115611d7457611d73476120de565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ed35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ed25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ee15760009050612068565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f8c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fa457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561204f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561206757600a54600c81905550600b54600d819055505b5b6120748484848461243e565b50505050565b60008383111582906120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99190612e01565b60405180910390fd5b50600083856120d191906139f9565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612146573d6000803e3d6000fd5b5050565b6000600654821115612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890613a9f565b60405180910390fd5b600061219b61246b565b90506121b0818461249690919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ef576121ee612b8f565b5b60405190808252806020026020018201604052801561221d5781602001602082028036833780820191505090505b5090503081600081518110612235576122346132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d757600080fd5b505afa1580156122eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230f9190613ad4565b81600181518110612323576123226132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238a30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461162a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123ee959493929190613bfa565b600060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061244c5761244b6124e0565b5b612457848484612523565b80612465576124646126ee565b5b50505050565b6000806000612478612702565b9150915061248f818361249690919063ffffffff16565b9250505090565b60006124d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612761565b905092915050565b6000600c541480156124f457506000600d54145b156124fe57612521565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612535876127c4565b95509550955095509550955061259386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612674816128d4565b61267e8483612991565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126db9190612f58565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612736670de0b6b3a764000060065461249690919063ffffffff16565b82101561275457600654670de0b6b3a764000093509350505061275d565b81819350935050505b9091565b600080831182906127a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279f9190612e01565b60405180910390fd5b50600083856127b79190613c83565b9050809150509392505050565b60008060008060008060008060006127e18a600c54600d546129cb565b92509250925060006127f161246b565b905060008060006128048e878787612a61565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061286e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061207a565b905092915050565b60008082846128859190613911565b9050838110156128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190613d00565b60405180910390fd5b8091505092915050565b60006128de61246b565b905060006128f58284612aea90919063ffffffff16565b905061294981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129a68260065461282c90919063ffffffff16565b6006819055506129c18160075461287690919063ffffffff16565b6007819055505050565b6000806000806129f760646129e9888a612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a216064612a13888b612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a4a82612a3c858c61282c90919063ffffffff16565b61282c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a7a8589612aea90919063ffffffff16565b90506000612a918689612aea90919063ffffffff16565b90506000612aa88789612aea90919063ffffffff16565b90506000612ad182612ac3858761282c90919063ffffffff16565b61282c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612afd5760009050612b5f565b60008284612b0b919061334f565b9050828482612b1a9190613c83565b14612b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5190613d92565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc782612b7e565b810181811067ffffffffffffffff82111715612be657612be5612b8f565b5b80604052505050565b6000612bf9612b65565b9050612c058282612bbe565b919050565b600067ffffffffffffffff821115612c2557612c24612b8f565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6682612c3b565b9050919050565b612c7681612c5b565b8114612c8157600080fd5b50565b600081359050612c9381612c6d565b92915050565b6000612cac612ca784612c0a565b612bef565b90508083825260208201905060208402830185811115612ccf57612cce612c36565b5b835b81811015612cf85780612ce48882612c84565b845260208401935050602081019050612cd1565b5050509392505050565b600082601f830112612d1757612d16612b79565b5b8135612d27848260208601612c99565b91505092915050565b600060208284031215612d4657612d45612b6f565b5b600082013567ffffffffffffffff811115612d6457612d63612b74565b5b612d7084828501612d02565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db3578082015181840152602081019050612d98565b83811115612dc2576000848401525b50505050565b6000612dd382612d79565b612ddd8185612d84565b9350612ded818560208601612d95565b612df681612b7e565b840191505092915050565b60006020820190508181036000830152612e1b8184612dc8565b905092915050565b6000819050919050565b612e3681612e23565b8114612e4157600080fd5b50565b600081359050612e5381612e2d565b92915050565b60008060408385031215612e7057612e6f612b6f565b5b6000612e7e85828601612c84565b9250506020612e8f85828601612e44565b9150509250929050565b60008115159050919050565b612eae81612e99565b82525050565b6000602082019050612ec96000830184612ea5565b92915050565b6000819050919050565b6000612ef4612eef612eea84612c3b565b612ecf565b612c3b565b9050919050565b6000612f0682612ed9565b9050919050565b6000612f1882612efb565b9050919050565b612f2881612f0d565b82525050565b6000602082019050612f436000830184612f1f565b92915050565b612f5281612e23565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b600060208284031215612f8957612f88612b6f565b5b6000612f9784828501612e44565b91505092915050565b600080600060608486031215612fb957612fb8612b6f565b5b6000612fc786828701612c84565b9350506020612fd886828701612c84565b9250506040612fe986828701612e44565b9150509250925092565b600060ff82169050919050565b61300981612ff3565b82525050565b60006020820190506130246000830184613000565b92915050565b61303381612c5b565b82525050565b600060208201905061304e600083018461302a565b92915050565b60006020828403121561306a57613069612b6f565b5b600061307884828501612c84565b91505092915050565b61308a81612e99565b811461309557600080fd5b50565b6000813590506130a781613081565b92915050565b6000602082840312156130c3576130c2612b6f565b5b60006130d184828501613098565b91505092915050565b600080600080608085870312156130f4576130f3612b6f565b5b600061310287828801612e44565b945050602061311387828801612e44565b935050604061312487828801612e44565b925050606061313587828801612e44565b91505092959194509250565b600080fd5b60008083601f84011261315c5761315b612b79565b5b8235905067ffffffffffffffff81111561317957613178613141565b5b60208301915083602082028301111561319557613194612c36565b5b9250929050565b6000806000604084860312156131b5576131b4612b6f565b5b600084013567ffffffffffffffff8111156131d3576131d2612b74565b5b6131df86828701613146565b935093505060206131f286828701613098565b9150509250925092565b6000806040838503121561321357613212612b6f565b5b600061322185828601612c84565b925050602061323285828601612c84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613272602083612d84565b915061327d8261323c565b602082019050919050565b600060208201905081810360008301526132a181613265565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331182612e23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613344576133436132d7565b5b600182019050919050565b600061335a82612e23565b915061336583612e23565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339e5761339d6132d7565b5b828202905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006133df601d83612d84565b91506133ea826133a9565b602082019050919050565b6000602082019050818103600083015261340e816133d2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613471602683612d84565b915061347c82613415565b604082019050919050565b600060208201905081810360008301526134a081613464565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613503602483612d84565b915061350e826134a7565b604082019050919050565b60006020820190508181036000830152613532816134f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613595602283612d84565b91506135a082613539565b604082019050919050565b600060208201905081810360008301526135c481613588565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613627602583612d84565b9150613632826135cb565b604082019050919050565b600060208201905081810360008301526136568161361a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136b9602383612d84565b91506136c48261365d565b604082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061374b602983612d84565b9150613756826136ef565b604082019050919050565b6000602082019050818103600083015261377a8161373e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137dd603f83612d84565b91506137e882613781565b604082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613849601c83612d84565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138db602383612d84565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b600061391c82612e23565b915061392783612e23565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561395c5761395b6132d7565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139c3602383612d84565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b6000613a0482612e23565b9150613a0f83612e23565b925082821015613a2257613a216132d7565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a89602a83612d84565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b600081519050613ace81612c6d565b92915050565b600060208284031215613aea57613ae9612b6f565b5b6000613af884828501613abf565b91505092915050565b6000819050919050565b6000613b26613b21613b1c84613b01565b612ecf565b612e23565b9050919050565b613b3681613b0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7181612c5b565b82525050565b6000613b838383613b68565b60208301905092915050565b6000602082019050919050565b6000613ba782613b3c565b613bb18185613b47565b9350613bbc83613b58565b8060005b83811015613bed578151613bd48882613b77565b9750613bdf83613b8f565b925050600181019050613bc0565b5085935050505092915050565b600060a082019050613c0f6000830188612f49565b613c1c6020830187613b2d565b8181036040830152613c2e8186613b9c565b9050613c3d606083018561302a565b613c4a6080830184612f49565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8e82612e23565b9150613c9983612e23565b925082613ca957613ca8613c54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cea601b83612d84565b9150613cf582613cb4565b602082019050919050565b60006020820190508181036000830152613d1981613cdd565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d7c602183612d84565b9150613d8782613d20565b604082019050919050565b60006020820190508181036000830152613dab81613d6f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f0882061c345777a39b58ea708a4616bf497f057e3c8ea4f5cf31ab3e90eb9164736f6c63430008090033
Deployed Bytecode Sourcemap
4116:13528:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12799:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6627:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7552:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5477:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6904:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13077:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7753:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5775:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6813:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5525:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12976:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17294:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12556:235;;;;;;;;;;;;;:::i;:::-;;7007:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1603:148;;;;;;;;;;;;;:::i;:::-;;5667:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5219:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1389:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12203:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5720:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6718:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17103:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16596:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7153:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5181:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12312:236;;;;;;;;;;;;;:::i;:::-;;17405:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7360:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1759:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12799:169;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12875:9:::1;12870:91;12894:5;:12;12890:1;:16;12870:91;;;12945:4;12928;:14;12933:5;12939:1;12933:8;;;;;;;;:::i;:::-;;;;;;;;12928:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12908:3;;;;;:::i;:::-;;;;12870:91;;;;12799:169:::0;:::o;6627:83::-;6664:13;6697:5;;;;;;;;;;;;;;;;;6690:12;;6627:83;:::o;7552:193::-;7654:4;7676:39;7685:12;:10;:12::i;:::-;7699:7;7708:6;7676:8;:39::i;:::-;7733:4;7726:11;;7552:193;;;;:::o;5477:41::-;;;;;;;;;;;;;:::o;6904:95::-;6957:7;4683:18;6977:14;;6904:95;:::o;13077:113::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13176:5:::1;13166:6;:16;;;;:::i;:::-;13151:12;:31;;;;13077:113:::0;:::o;7753:446::-;7885:4;7902:36;7912:6;7920:9;7931:6;7902:9;:36::i;:::-;7949:220;7972:6;7993:12;:10;:12::i;:::-;8020:138;8076:6;8020:138;;;;;;;;;;;;;;;;;:11;:19;8032:6;8020:19;;;;;;;;;;;;;;;:33;8040:12;:10;:12::i;:::-;8020:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7949:8;:220::i;:::-;8187:4;8180:11;;7753:446;;;;;:::o;5775:50::-;;;;:::o;6813:83::-;6854:5;4357:1;6872:16;;6813:83;:::o;5525:28::-;;;;;;;;;;;;;:::o;12976:92::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13055:5:::1;13040:4;:12;13045:6;13040:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12976:92:::0;:::o;17294:101::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17375:12:::1;17361:11;;:26;;;;;;;;;;;;;;;;;;17294:101:::0;:::o;12556:235::-;12622:19;;;;;;;;;;;12606:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12661:17;;;;;;;;;;;12645:33;;:12;:10;:12::i;:::-;:33;;;12606:72;12598:81;;;;;;12690:26;12719:21;12690:50;;12751:32;12764:18;12751:12;:32::i;:::-;12587:204;12556:235::o;7007:138::-;7073:7;7100:37;7120:7;:16;7128:7;7120:16;;;;;;;;;;;;;;;;7100:19;:37::i;:::-;7093:44;;7007:138;;;:::o;1603:148::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1710:1:::1;1673:40;;1694:6;::::0;::::1;;;;;;;;1673:40;;;;;;;;;;;;1741:1;1724:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1603:148::o:0;5667:46::-;;;;:::o;5219:43::-;;;;;;;;;;;;;;;;;:::o;1389:79::-;1427:7;1454:6;;;;;;;;;;;1447:13;;1389:79;:::o;12203:101::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12284:12:::1;12270:11;;:26;;;;;;;;;;;;;;;;;;12203:101:::0;:::o;5720:48::-;;;;:::o;6718:87::-;6757:13;6790:7;;;;;;;;;;;;;;;;;6783:14;;6718:87;:::o;17103:139::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17216:18:::1;17194:19;:40;;;;17103:139:::0;:::o;16596:455::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16747:13:::1;16730:14;:30;;;;16789:14;16771:15;:32;;;;16829:11;16814:12;:26;;;;16867:12;16851:13;:28;;;;16925:2;16910:11;:17;;16902:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16996:2;16981:11;:17;;16973:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16596:455:::0;;;;:::o;7153:199::-;7258:4;7280:42;7290:12;:10;:12::i;:::-;7304:9;7315:6;7280:9;:42::i;:::-;7340:4;7333:11;;7153:199;;;;:::o;5181:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12312:236::-;12378:19;;;;;;;;;;;12362:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12417:17;;;;;;;;;;;12401:33;;:12;:10;:12::i;:::-;:33;;;12362:72;12354:81;;;;;;12446:23;12472:24;12490:4;12472:9;:24::i;:::-;12446:50;;12507:33;12524:15;12507:16;:33::i;:::-;12343:205;12312:236::o;17405:234::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17522:9:::1;17518:114;17541:8;;:15;;17537:1;:19;17518:114;;;17612:8;17578:18;:31;17597:8;;17606:1;17597:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17578:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17558:3;;;;;:::i;:::-;;;;17518:114;;;;17405:234:::0;;;:::o;7360:184::-;7477:7;7509:11;:18;7521:5;7509:18;;;;;;;;;;;;;;;:27;7528:7;7509:27;;;;;;;;;;;;;;;;7502:34;;7360:184;;;;:::o;1759:244::-;1526:12;:10;:12::i;:::-;1516:22;;:6;;;;;;;;;;:22;;;1508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1868:1:::1;1848:22;;:8;:22;;;;1840:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1958:8;1929:38;;1950:6;::::0;::::1;;;;;;;;1929:38;;;;;;;;;;;;1987:8;1978:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1759:244:::0;:::o;148:98::-;201:7;228:10;221:17;;148:98;:::o;8890:369::-;9034:1;9017:19;;:5;:19;;;;9009:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9115:1;9096:21;;:7;:21;;;;9088:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9197:6;9167:11;:18;9179:5;9167:18;;;;;;;;;;;;;;;:27;9186:7;9167:27;;;;;;;;;;;;;;;:36;;;;9235:7;9219:32;;9228:5;9219:32;;;9244:6;9219:32;;;;;;:::i;:::-;;;;;;;;8890:369;;;:::o;9267:2330::-;9405:1;9389:18;;:4;:18;;;;9381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9482:1;9468:16;;:2;:16;;;;9460:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9552:1;9543:6;:10;9535:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9624:7;:5;:7::i;:::-;9616:15;;:4;:15;;;;:32;;;;;9641:7;:5;:7::i;:::-;9635:13;;:2;:13;;;;9616:32;9612:1259;;;9705:11;;;;;;;;;;;9700:144;;9753:7;:5;:7::i;:::-;9745:15;;:4;:15;;;9737:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9700:144;9878:12;;9868:6;:22;;9860:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9947:4;:10;9952:4;9947:10;;;;;;;;;;;;;;;;;;;;;;;;;9946:11;:24;;;;;9962:4;:8;9967:2;9962:8;;;;;;;;;;;;;;;;;;;;;;;;;9961:9;9946:24;9938:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10036:13;;;;;;;;;;;10030:19;;:2;:19;;;10027:146;;10103:14;;10094:6;10078:13;10088:2;10078:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10070:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10027:146;10189:28;10220:24;10238:4;10220:9;:24::i;:::-;10189:55;;10259:12;10298:19;;10274:20;:43;;10259:58;;10361:12;;10337:20;:36;10334:124;;10430:12;;10407:35;;10334:124;10478:7;:18;;;;;10490:6;;;;;;;;;;10489:7;10478:18;:43;;;;;10508:13;;;;;;;;;;;10500:21;;:4;:21;;;;10478:43;:58;;;;;10525:11;;;;;;;;;;;10478:58;:87;;;;;10541:18;:24;10560:4;10541:24;;;;;;;;;;;;;;;;;;;;;;;;;10540:25;10478:87;:114;;;;;10570:18;:22;10589:2;10570:22;;;;;;;;;;;;;;;;;;;;;;;;;10569:23;10478:114;10474:386;;;10613:38;10630:20;10613:16;:38::i;:::-;10670:26;10699:21;10670:50;;10764:1;10743:18;:22;10739:106;;;10790:35;10803:21;10790:12;:35::i;:::-;10739:106;10594:266;10474:386;9650:1221;;9612:1259;10883:12;10898:4;10883:19;;10947:18;:24;10966:4;10947:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10975:18;:22;10994:2;10975:22;;;;;;;;;;;;;;;;;;;;;;;;;10947:50;10946:102;;;;11011:13;;;;;;;;;;;11003:21;;:4;:21;;;;:44;;;;;11034:13;;;;;;;;;;;11028:19;;:2;:19;;;;11003:44;10946:102;10942:594;;;11075:5;11065:15;;10942:594;;;11158:13;;;;;;;;;;;11150:21;;:4;:21;;;:55;;;;;11189:15;;;;;;;;;;;11175:30;;:2;:30;;;;11150:55;11147:162;;;11238:14;;11226:9;:26;;;;11281:12;;11271:7;:22;;;;11147:162;11368:13;;;;;;;;;;;11362:19;;:2;:19;;;:55;;;;;11401:15;;;;;;;;;;;11385:32;;:4;:32;;;;11362:55;11358:165;;;11450:15;;11438:9;:27;;;;11494:13;;11484:7;:23;;;;11358:165;10942:594;11548:41;11563:4;11569:2;11573:6;11581:7;11548:14;:41::i;:::-;9370:2227;9267:2330;;;:::o;2367:224::-;2487:7;2520:1;2515;:6;;2523:12;2507:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2547:9;2563:1;2559;:5;;;;:::i;:::-;2547:17;;2582:1;2575:8;;;2367:224;;;;;:::o;12096:99::-;12153:17;;;;;;;;;;;:26;;:34;12180:6;12153:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12096:99;:::o;8207:323::-;8302:7;8360;;8349;:18;;8327:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8448:19;8470:10;:8;:10::i;:::-;8448:32;;8498:24;8510:11;8498:7;:11;;:24;;;;:::i;:::-;8491:31;;;8207:323;;;:::o;11605:483::-;5928:4;5919:6;;:13;;;;;;;;;;;;;;;;;;11683:21:::1;11721:1;11707:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11683:40;;11752:4;11734;11739:1;11734:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11778:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11768:4;11773:1;11768:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11811:62;11828:4;11843:15;;;;;;;;;;;11861:11;11811:8;:62::i;:::-;11884:15;;;;;;;;;;;:66;;;11965:11;11991:1;12007:4;12034;12054:15;11884:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11672:416;5964:5:::0;5955:6;;:14;;;;;;;;;;;;;;;;;;11605:483;:::o;13198:282::-;13354:7;13349:28;;13363:14;:12;:14::i;:::-;13349:28;13388:44;13406:6;13414:9;13425:6;13388:17;:44::i;:::-;13448:7;13443:29;;13457:15;:13;:15::i;:::-;13443:29;13198:282;;;;:::o;16159:164::-;16201:7;16222:15;16239;16258:19;:17;:19::i;:::-;16221:56;;;;16295:20;16307:7;16295;:11;;:20;;;;:::i;:::-;16288:27;;;;16159:164;:::o;2853:132::-;2911:7;2938:39;2942:1;2945;2938:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2931:46;;2853:132;;;;:::o;8538:219::-;8598:1;8585:9;;:14;:30;;;;;8614:1;8603:7;;:12;8585:30;8581:43;;;8617:7;;8581:43;8656:9;;8636:17;:29;;;;8694:7;;8676:15;:25;;;;8726:1;8714:9;:13;;;;8748:1;8738:7;:11;;;;8538:219;:::o;13488:610::-;13635:15;13665:23;13703:12;13730:23;13768:12;13795:13;13822:19;13833:7;13822:10;:19::i;:::-;13620:221;;;;;;;;;;;;13870:28;13890:7;13870;:15;13878:6;13870:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13852:7;:15;13860:6;13852:15;;;;;;;;;;;;;;;:46;;;;13930:39;13953:15;13930:7;:18;13938:9;13930:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13909:7;:18;13917:9;13909:18;;;;;;;;;;;;;;;:60;;;;13980:16;13990:5;13980:9;:16::i;:::-;14007:23;14019:4;14025;14007:11;:23::i;:::-;14063:9;14046:44;;14055:6;14046:44;;;14074:15;14046:44;;;;;;:::i;:::-;;;;;;;;13609:489;;;;;;13488:610;;;:::o;8765:117::-;8821:17;;8809:9;:29;;;;8859:15;;8849:7;:25;;;;8765:117::o;16331:257::-;16382:7;16391;16411:15;16429:7;;16411:25;;16447:15;4683:18;16447:25;;16497:20;4683:18;16497:7;;:11;;:20;;;;:::i;:::-;16487:7;:30;16483:61;;;16527:7;;4683:18;16519:25;;;;;;;;16483:61;16563:7;16572;16555:25;;;;;;16331:257;;;:::o;2993:223::-;3113:7;3145:1;3141;:5;3148:12;3133:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3172:9;3188:1;3184;:5;;;;:::i;:::-;3172:17;;3207:1;3200:8;;;2993:223;;;;;:::o;14517:615::-;14617:7;14639;14661;14683;14705;14727;14763:23;14788:12;14802:13;14832:40;14844:7;14853:9;;14864:7;;14832:11;:40::i;:::-;14762:110;;;;;;14883:19;14905:10;:8;:10::i;:::-;14883:32;;14927:15;14944:23;14969:12;14998:46;15010:7;15019:4;15025:5;15032:11;14998;:46::i;:::-;14926:118;;;;;;15063:7;15072:15;15089:4;15095:15;15112:4;15118:5;15055:69;;;;;;;;;;;;;;;;;;;14517:615;;;;;;;:::o;2223:136::-;2281:7;2308:43;2312:1;2315;2308:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2301:50;;2223:136;;;;:::o;2036:179::-;2094:7;2114:9;2130:1;2126;:5;;;;:::i;:::-;2114:17;;2155:1;2150;:6;;2142:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2206:1;2199:8;;;2036:179;;;;:::o;14106:211::-;14159:19;14181:10;:8;:10::i;:::-;14159:32;;14202:13;14218:22;14228:11;14218:5;:9;;:22;;;;:::i;:::-;14202:38;;14276:33;14303:5;14276:7;:22;14292:4;14276:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14251:7;:22;14267:4;14251:22;;;;;;;;;;;;;;;:58;;;;14148:169;;14106:211;:::o;14325:147::-;14403:17;14415:4;14403:7;;:11;;:17;;;;:::i;:::-;14393:7;:27;;;;14444:20;14459:4;14444:10;;:14;;:20;;;;:::i;:::-;14431:10;:33;;;;14325:147;;:::o;15140:469::-;15309:7;15331;15353;15388:12;15403:30;15429:3;15403:21;15415:8;15403:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15388:45;;15444:13;15460:28;15484:3;15460:19;15472:6;15460:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15444:44;;15499:23;15525:28;15547:5;15525:17;15537:4;15525:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15499:54;;15572:15;15589:4;15595:5;15564:37;;;;;;;;;15140:469;;;;;;;:::o;15617:534::-;15811:7;15833;15855;15890:15;15908:24;15920:11;15908:7;:11;;:24;;;;:::i;:::-;15890:42;;15943:12;15958:21;15967:11;15958:4;:8;;:21;;;;:::i;:::-;15943:36;;15990:13;16006:22;16016:11;16006:5;:9;;:22;;;;:::i;:::-;15990:38;;16039:23;16065:28;16087:5;16065:17;16077:4;16065:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16039:54;;16112:7;16121:15;16138:4;16104:39;;;;;;;;;;15617:534;;;;;;;;:::o;2599:246::-;2657:7;2686:1;2681;:6;2677:47;;;2711:1;2704:8;;;;2677:47;2734:9;2750:1;2746;:5;;;;:::i;:::-;2734:17;;2779:1;2774;2770;:5;;;;:::i;:::-;:10;2762:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2836:1;2829:8;;;2599:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:329::-;7720:6;7769:2;7757:9;7748:7;7744:23;7740:32;7737:119;;;7775:79;;:::i;:::-;7737:119;7895:1;7920:53;7965:7;7956:6;7945:9;7941:22;7920:53;:::i;:::-;7910:63;;7866:117;7661:329;;;;:::o;7996:619::-;8073:6;8081;8089;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8391:2;8417:53;8462:7;8453:6;8442:9;8438:22;8417:53;:::i;:::-;8407:63;;8362:118;8519:2;8545:53;8590:7;8581:6;8570:9;8566:22;8545:53;:::i;:::-;8535:63;;8490:118;7996:619;;;;;:::o;8621:86::-;8656:7;8696:4;8689:5;8685:16;8674:27;;8621:86;;;:::o;8713:112::-;8796:22;8812:5;8796:22;:::i;:::-;8791:3;8784:35;8713:112;;:::o;8831:214::-;8920:4;8958:2;8947:9;8943:18;8935:26;;8971:67;9035:1;9024:9;9020:17;9011:6;8971:67;:::i;:::-;8831:214;;;;:::o;9051:118::-;9138:24;9156:5;9138:24;:::i;:::-;9133:3;9126:37;9051:118;;:::o;9175:222::-;9268:4;9306:2;9295:9;9291:18;9283:26;;9319:71;9387:1;9376:9;9372:17;9363:6;9319:71;:::i;:::-;9175:222;;;;:::o;9403:329::-;9462:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:119;;;9517:79;;:::i;:::-;9479:119;9637:1;9662:53;9707:7;9698:6;9687:9;9683:22;9662:53;:::i;:::-;9652:63;;9608:117;9403:329;;;;:::o;9738:116::-;9808:21;9823:5;9808:21;:::i;:::-;9801:5;9798:32;9788:60;;9844:1;9841;9834:12;9788:60;9738:116;:::o;9860:133::-;9903:5;9941:6;9928:20;9919:29;;9957:30;9981:5;9957:30;:::i;:::-;9860:133;;;;:::o;9999:323::-;10055:6;10104:2;10092:9;10083:7;10079:23;10075:32;10072:119;;;10110:79;;:::i;:::-;10072:119;10230:1;10255:50;10297:7;10288:6;10277:9;10273:22;10255:50;:::i;:::-;10245:60;;10201:114;9999:323;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:182::-;13137:34;13133:1;13125:6;13121:14;13114:58;12997:182;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:180::-;14030:77;14027:1;14020:88;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14168:180;14216:77;14213:1;14206:88;14313:4;14310:1;14303:15;14337:4;14334:1;14327:15;14354:233;14393:3;14416:24;14434:5;14416:24;:::i;:::-;14407:33;;14462:66;14455:5;14452:77;14449:103;;;14532:18;;:::i;:::-;14449:103;14579:1;14572:5;14568:13;14561:20;;14354:233;;;:::o;14593:348::-;14633:7;14656:20;14674:1;14656:20;:::i;:::-;14651:25;;14690:20;14708:1;14690:20;:::i;:::-;14685:25;;14878:1;14810:66;14806:74;14803:1;14800:81;14795:1;14788:9;14781:17;14777:105;14774:131;;;14885:18;;:::i;:::-;14774:131;14933:1;14930;14926:9;14915:20;;14593:348;;;;:::o;14947:179::-;15087:31;15083:1;15075:6;15071:14;15064:55;14947:179;:::o;15132:366::-;15274:3;15295:67;15359:2;15354:3;15295:67;:::i;:::-;15288:74;;15371:93;15460:3;15371:93;:::i;:::-;15489:2;15484:3;15480:12;15473:19;;15132:366;;;:::o;15504:419::-;15670:4;15708:2;15697:9;15693:18;15685:26;;15757:9;15751:4;15747:20;15743:1;15732:9;15728:17;15721:47;15785:131;15911:4;15785:131;:::i;:::-;15777:139;;15504:419;;;:::o;15929:225::-;16069:34;16065:1;16057:6;16053:14;16046:58;16138:8;16133:2;16125:6;16121:15;16114:33;15929:225;:::o;16160:366::-;16302:3;16323:67;16387:2;16382:3;16323:67;:::i;:::-;16316:74;;16399:93;16488:3;16399:93;:::i;:::-;16517:2;16512:3;16508:12;16501:19;;16160:366;;;:::o;16532:419::-;16698:4;16736:2;16725:9;16721:18;16713:26;;16785:9;16779:4;16775:20;16771:1;16760:9;16756:17;16749:47;16813:131;16939:4;16813:131;:::i;:::-;16805:139;;16532:419;;;:::o;16957:223::-;17097:34;17093:1;17085:6;17081:14;17074:58;17166:6;17161:2;17153:6;17149:15;17142:31;16957:223;:::o;17186:366::-;17328:3;17349:67;17413:2;17408:3;17349:67;:::i;:::-;17342:74;;17425:93;17514:3;17425:93;:::i;:::-;17543:2;17538:3;17534:12;17527:19;;17186:366;;;:::o;17558:419::-;17724:4;17762:2;17751:9;17747:18;17739:26;;17811:9;17805:4;17801:20;17797:1;17786:9;17782:17;17775:47;17839:131;17965:4;17839:131;:::i;:::-;17831:139;;17558:419;;;:::o;17983:221::-;18123:34;18119:1;18111:6;18107:14;18100:58;18192:4;18187:2;18179:6;18175:15;18168:29;17983:221;:::o;18210:366::-;18352:3;18373:67;18437:2;18432:3;18373:67;:::i;:::-;18366:74;;18449:93;18538:3;18449:93;:::i;:::-;18567:2;18562:3;18558:12;18551:19;;18210:366;;;:::o;18582:419::-;18748:4;18786:2;18775:9;18771:18;18763:26;;18835:9;18829:4;18825:20;18821:1;18810:9;18806:17;18799:47;18863:131;18989:4;18863:131;:::i;:::-;18855:139;;18582:419;;;:::o;19007:224::-;19147:34;19143:1;19135:6;19131:14;19124:58;19216:7;19211:2;19203:6;19199:15;19192:32;19007:224;:::o;19237:366::-;19379:3;19400:67;19464:2;19459:3;19400:67;:::i;:::-;19393:74;;19476:93;19565:3;19476:93;:::i;:::-;19594:2;19589:3;19585:12;19578:19;;19237:366;;;:::o;19609:419::-;19775:4;19813:2;19802:9;19798:18;19790:26;;19862:9;19856:4;19852:20;19848:1;19837:9;19833:17;19826:47;19890:131;20016:4;19890:131;:::i;:::-;19882:139;;19609:419;;;:::o;20034:222::-;20174:34;20170:1;20162:6;20158:14;20151:58;20243:5;20238:2;20230:6;20226:15;20219:30;20034:222;:::o;20262:366::-;20404:3;20425:67;20489:2;20484:3;20425:67;:::i;:::-;20418:74;;20501:93;20590:3;20501:93;:::i;:::-;20619:2;20614:3;20610:12;20603:19;;20262:366;;;:::o;20634:419::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:131;21041:4;20915:131;:::i;:::-;20907:139;;20634:419;;;:::o;21059:228::-;21199:34;21195:1;21187:6;21183:14;21176:58;21268:11;21263:2;21255:6;21251:15;21244:36;21059:228;:::o;21293:366::-;21435:3;21456:67;21520:2;21515:3;21456:67;:::i;:::-;21449:74;;21532:93;21621:3;21532:93;:::i;:::-;21650:2;21645:3;21641:12;21634:19;;21293:366;;;:::o;21665:419::-;21831:4;21869:2;21858:9;21854:18;21846:26;;21918:9;21912:4;21908:20;21904:1;21893:9;21889:17;21882:47;21946:131;22072:4;21946:131;:::i;:::-;21938:139;;21665:419;;;:::o;22090:250::-;22230:34;22226:1;22218:6;22214:14;22207:58;22299:33;22294:2;22286:6;22282:15;22275:58;22090:250;:::o;22346:366::-;22488:3;22509:67;22573:2;22568:3;22509:67;:::i;:::-;22502:74;;22585:93;22674:3;22585:93;:::i;:::-;22703:2;22698:3;22694:12;22687:19;;22346:366;;;:::o;22718:419::-;22884:4;22922:2;22911:9;22907:18;22899:26;;22971:9;22965:4;22961:20;22957:1;22946:9;22942:17;22935:47;22999:131;23125:4;22999:131;:::i;:::-;22991:139;;22718:419;;;:::o;23143:178::-;23283:30;23279:1;23271:6;23267:14;23260:54;23143:178;:::o;23327:366::-;23469:3;23490:67;23554:2;23549:3;23490:67;:::i;:::-;23483:74;;23566:93;23655:3;23566:93;:::i;:::-;23684:2;23679:3;23675:12;23668:19;;23327:366;;;:::o;23699:419::-;23865:4;23903:2;23892:9;23888:18;23880:26;;23952:9;23946:4;23942:20;23938:1;23927:9;23923:17;23916:47;23980:131;24106:4;23980:131;:::i;:::-;23972:139;;23699:419;;;:::o;24124:222::-;24264:34;24260:1;24252:6;24248:14;24241:58;24333:5;24328:2;24320:6;24316:15;24309:30;24124:222;:::o;24352:366::-;24494:3;24515:67;24579:2;24574:3;24515:67;:::i;:::-;24508:74;;24591:93;24680:3;24591:93;:::i;:::-;24709:2;24704:3;24700:12;24693:19;;24352:366;;;:::o;24724:419::-;24890:4;24928:2;24917:9;24913:18;24905:26;;24977:9;24971:4;24967:20;24963:1;24952:9;24948:17;24941:47;25005:131;25131:4;25005:131;:::i;:::-;24997:139;;24724:419;;;:::o;25149:305::-;25189:3;25208:20;25226:1;25208:20;:::i;:::-;25203:25;;25242:20;25260:1;25242:20;:::i;:::-;25237:25;;25396:1;25328:66;25324:74;25321:1;25318:81;25315:107;;;25402:18;;:::i;:::-;25315:107;25446:1;25443;25439:9;25432:16;;25149:305;;;;:::o;25460:222::-;25600:34;25596:1;25588:6;25584:14;25577:58;25669:5;25664:2;25656:6;25652:15;25645:30;25460:222;:::o;25688:366::-;25830:3;25851:67;25915:2;25910:3;25851:67;:::i;:::-;25844:74;;25927:93;26016:3;25927:93;:::i;:::-;26045:2;26040:3;26036:12;26029:19;;25688:366;;;:::o;26060:419::-;26226:4;26264:2;26253:9;26249:18;26241:26;;26313:9;26307:4;26303:20;26299:1;26288:9;26284:17;26277:47;26341:131;26467:4;26341:131;:::i;:::-;26333:139;;26060:419;;;:::o;26485:191::-;26525:4;26545:20;26563:1;26545:20;:::i;:::-;26540:25;;26579:20;26597:1;26579:20;:::i;:::-;26574:25;;26618:1;26615;26612:8;26609:34;;;26623:18;;:::i;:::-;26609:34;26668:1;26665;26661:9;26653:17;;26485:191;;;;:::o;26682:229::-;26822:34;26818:1;26810:6;26806:14;26799:58;26891:12;26886:2;26878:6;26874:15;26867:37;26682:229;:::o;26917:366::-;27059:3;27080:67;27144:2;27139:3;27080:67;:::i;:::-;27073:74;;27156:93;27245:3;27156:93;:::i;:::-;27274:2;27269:3;27265:12;27258:19;;26917:366;;;:::o;27289:419::-;27455:4;27493:2;27482:9;27478:18;27470:26;;27542:9;27536:4;27532:20;27528:1;27517:9;27513:17;27506:47;27570:131;27696:4;27570:131;:::i;:::-;27562:139;;27289:419;;;:::o;27714:143::-;27771:5;27802:6;27796:13;27787:22;;27818:33;27845:5;27818:33;:::i;:::-;27714:143;;;;:::o;27863:351::-;27933:6;27982:2;27970:9;27961:7;27957:23;27953:32;27950:119;;;27988:79;;:::i;:::-;27950:119;28108:1;28133:64;28189:7;28180:6;28169:9;28165:22;28133:64;:::i;:::-;28123:74;;28079:128;27863:351;;;;:::o;28220:85::-;28265:7;28294:5;28283:16;;28220:85;;;:::o;28311:158::-;28369:9;28402:61;28420:42;28429:32;28455:5;28429:32;:::i;:::-;28420:42;:::i;:::-;28402:61;:::i;:::-;28389:74;;28311:158;;;:::o;28475:147::-;28570:45;28609:5;28570:45;:::i;:::-;28565:3;28558:58;28475:147;;:::o;28628:114::-;28695:6;28729:5;28723:12;28713:22;;28628:114;;;:::o;28748:184::-;28847:11;28881:6;28876:3;28869:19;28921:4;28916:3;28912:14;28897:29;;28748:184;;;;:::o;28938:132::-;29005:4;29028:3;29020:11;;29058:4;29053:3;29049:14;29041:22;;28938:132;;;:::o;29076:108::-;29153:24;29171:5;29153:24;:::i;:::-;29148:3;29141:37;29076:108;;:::o;29190:179::-;29259:10;29280:46;29322:3;29314:6;29280:46;:::i;:::-;29358:4;29353:3;29349:14;29335:28;;29190:179;;;;:::o;29375:113::-;29445:4;29477;29472:3;29468:14;29460:22;;29375:113;;;:::o;29524:732::-;29643:3;29672:54;29720:5;29672:54;:::i;:::-;29742:86;29821:6;29816:3;29742:86;:::i;:::-;29735:93;;29852:56;29902:5;29852:56;:::i;:::-;29931:7;29962:1;29947:284;29972:6;29969:1;29966:13;29947:284;;;30048:6;30042:13;30075:63;30134:3;30119:13;30075:63;:::i;:::-;30068:70;;30161:60;30214:6;30161:60;:::i;:::-;30151:70;;30007:224;29994:1;29991;29987:9;29982:14;;29947:284;;;29951:14;30247:3;30240:10;;29648:608;;;29524:732;;;;:::o;30262:831::-;30525:4;30563:3;30552:9;30548:19;30540:27;;30577:71;30645:1;30634:9;30630:17;30621:6;30577:71;:::i;:::-;30658:80;30734:2;30723:9;30719:18;30710:6;30658:80;:::i;:::-;30785:9;30779:4;30775:20;30770:2;30759:9;30755:18;30748:48;30813:108;30916:4;30907:6;30813:108;:::i;:::-;30805:116;;30931:72;30999:2;30988:9;30984:18;30975:6;30931:72;:::i;:::-;31013:73;31081:3;31070:9;31066:19;31057:6;31013:73;:::i;:::-;30262:831;;;;;;;;:::o;31099:180::-;31147:77;31144:1;31137:88;31244:4;31241:1;31234:15;31268:4;31265:1;31258:15;31285:185;31325:1;31342:20;31360:1;31342:20;:::i;:::-;31337:25;;31376:20;31394:1;31376:20;:::i;:::-;31371:25;;31415:1;31405:35;;31420:18;;:::i;:::-;31405:35;31462:1;31459;31455:9;31450:14;;31285:185;;;;:::o;31476:177::-;31616:29;31612:1;31604:6;31600:14;31593:53;31476:177;:::o;31659:366::-;31801:3;31822:67;31886:2;31881:3;31822:67;:::i;:::-;31815:74;;31898:93;31987:3;31898:93;:::i;:::-;32016:2;32011:3;32007:12;32000:19;;31659:366;;;:::o;32031:419::-;32197:4;32235:2;32224:9;32220:18;32212:26;;32284:9;32278:4;32274:20;32270:1;32259:9;32255:17;32248:47;32312:131;32438:4;32312:131;:::i;:::-;32304:139;;32031:419;;;:::o;32456:220::-;32596:34;32592:1;32584:6;32580:14;32573:58;32665:3;32660:2;32652:6;32648:15;32641:28;32456:220;:::o;32682:366::-;32824:3;32845:67;32909:2;32904:3;32845:67;:::i;:::-;32838:74;;32921:93;33010:3;32921:93;:::i;:::-;33039:2;33034:3;33030:12;33023:19;;32682:366;;;:::o;33054:419::-;33220:4;33258:2;33247:9;33243:18;33235:26;;33307:9;33301:4;33297:20;33293:1;33282:9;33278:17;33271:47;33335:131;33461:4;33335:131;:::i;:::-;33327:139;;33054:419;;;:::o
Swarm Source
ipfs://0f0882061c345777a39b58ea708a4616bf497f057e3c8ea4f5cf31ab3e90eb91
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.