Overview
Max Total Supply
420,000,000,000,000BabyGrok
Holders
59,889 ( 0.002%)
Market
Price
$0.00 @ 0.000000 BNB (+4.49%)
Onchain Market Cap
-
Circulating Supply Market Cap
$87,882.94
Other Info
Token Contract (WITH 9 Decimals)
Balance
100,000,000 BabyGrokValue
$0.04 ( ~6.22055601792297E-05 BNB) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
BabyGrok
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at BscScan.com on 2025-07-20
*/
pragma solidity 0.8.26;
// SPDX-License-Identifier: MIT
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20{
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 9;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
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);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() external 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 Address {
function isContract(address account) internal view returns (bool) {
return account.code.length > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
}
interface ILpPair {
function sync() external;
}
interface IDexRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface IDexFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
contract BabyGrok is ERC20, Ownable {
mapping (address => bool) public exemptFromFees;
bool public tradingAllowed;
mapping (address => bool) public isAMMPair;
address public marketingAddress;
address public devAddress;
Taxes public buyTax;
Taxes public sellTax;
TokensForTax public tokensForTax;
uint256 public swapTokensAtAmt;
uint256 public lastSwapBackBlock;
address public immutable lpPair;
IDexRouter public immutable dexRouter;
address public immutable WETH;
uint64 public constant FEE_DIVISOR = 10000;
address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
uint256 public launchBlock;
struct Taxes {
uint64 marketingTax;
uint64 liquidityTax;
uint64 totalTax;
}
struct TokensForTax {
uint80 tokensForMarketing;
uint80 tokensForLiquidity;
bool gasSaver;
}
// events
event UpdatedTransactionLimit(uint newMax);
event UpdatedWalletLimit(uint newMax);
event SetExemptFromFees(address _address, bool _isExempt);
event SetExemptFromLimits(address _address, bool _isExempt);
// constructor
constructor()
ERC20("Baby Grok", "BabyGrok")
{
_mint(msg.sender, 420_000_000_000_000 * (10 ** 9));
address _v2Router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
dexRouter = IDexRouter(_v2Router);
swapTokensAtAmt = totalSupply() * 25 / 100000;
marketingAddress = msg.sender;
devAddress = msg.sender;
buyTax.marketingTax = 1900; // 1% = 100
buyTax.liquidityTax = 100;
buyTax.totalTax = buyTax.marketingTax + buyTax.liquidityTax;
sellTax.marketingTax = 1900;
sellTax.liquidityTax = 100;
sellTax.totalTax = sellTax.marketingTax + sellTax.liquidityTax;
tokensForTax.gasSaver = true;
WETH = dexRouter.WETH();
lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), WETH);
isAMMPair[lpPair] = true;
exemptFromFees[msg.sender] = true;
exemptFromFees[address(this)] = true;
// exemptFromFees[address(dexRouter)] = true;
_approve(address(this), address(dexRouter), type(uint256).max);
_approve(address(msg.sender), address(dexRouter), totalSupply());
}
function _transfer(
address from,
address to,
uint256 amount
) internal virtual override {
if(!exemptFromFees[from] && !exemptFromFees[to]){
require(tradingAllowed, "Trading not active");
amount -= handleTax(from, to, amount);
}
super._transfer(from,to,amount);
}
function handleTax(address from, address to, uint256 amount) internal returns (uint256){
if(balanceOf(address(this)) >= swapTokensAtAmt && !isAMMPair[from] && lastSwapBackBlock + 1 <= block.number) {
convertTaxes();
}
uint128 tax = 0;
Taxes memory taxes;
if (isAMMPair[to]){
taxes = sellTax;
} else if(isAMMPair[from]){
taxes = buyTax;
}
if(taxes.totalTax > 0){
TokensForTax memory tokensForTaxUpdate = tokensForTax;
if(block.number <= launchBlock){
if (isAMMPair[from]){
tax = uint128(amount * 2000 / FEE_DIVISOR);
} else if (isAMMPair[to]) {
tax = uint128(amount * 2000 / FEE_DIVISOR);
}
} else {
tax = uint128(amount * taxes.totalTax / FEE_DIVISOR);
}
tokensForTaxUpdate.tokensForLiquidity += uint80(tax * taxes.liquidityTax / taxes.totalTax / 1e9);
tokensForTaxUpdate.tokensForMarketing += uint80(tax * taxes.marketingTax / taxes.totalTax / 1e9);
tokensForTax = tokensForTaxUpdate;
super._transfer(from, address(this), tax);
}
return tax;
}
function swapTokensForETH(uint256 tokenAmt) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmt,
0,
path,
address(this),
block.timestamp
);
}
function convertTaxes() private {
uint256 contractBalance = balanceOf(address(this));
TokensForTax memory tokensForTaxMem = tokensForTax;
uint256 totalTokensToSwap = tokensForTaxMem.tokensForLiquidity + tokensForTaxMem.tokensForMarketing;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance > swapTokensAtAmt * 4){
contractBalance = swapTokensAtAmt * 4;
}
if(tokensForTaxMem.tokensForLiquidity > 0){
uint256 liquidityTokens = contractBalance * tokensForTaxMem.tokensForLiquidity / totalTokensToSwap;
uint256 firstmath = liquidityTokens / 2;
uint256 secondMath = liquidityTokens - firstmath;
uint256 initialBalance = address(this).balance;
swapTokensForETH(firstmath);
uint256 newBalance = address(this).balance - initialBalance;
dexRouter.addLiquidityETH{value: newBalance}(
address(this),
secondMath,
0,
0,
DEAD,
block.timestamp
);
contractBalance -= liquidityTokens;
totalTokensToSwap -= tokensForTaxMem.tokensForLiquidity;
}
if(contractBalance > 0){
swapTokensForETH(contractBalance);
bool success;
uint256 bnbBalance = address(this).balance;
uint256 marketingShare = (bnbBalance * 60) / 100;
if (marketingShare > 0) {
(success, ) = marketingAddress.call{
value: marketingShare,
gas: 35000
}("");
}
uint256 remainingBalance = address(this).balance;
if (remainingBalance > 0) {
(success, ) = devAddress.call{
value: remainingBalance,
gas: 35000
}("");
}
}
tokensForTaxMem.tokensForLiquidity = 0;
tokensForTaxMem.tokensForMarketing = 0;
tokensForTax = tokensForTaxMem;
lastSwapBackBlock = block.number;
}
// owner functions
function setExemptFromFee(address _address, bool _isExempt) external onlyOwner {
require(_address != address(0), "Zero Address");
require(_address != address(this), "Cannot unexempt contract");
exemptFromFees[_address] = _isExempt;
emit SetExemptFromFees(_address, _isExempt);
}
function updateSwapTokensAmt(uint256 newAmount) external onlyOwner {
require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
swapTokensAtAmt = newAmount;
}
function enableTrading() external onlyOwner {
require(!tradingAllowed, "Trading already enabled");
tradingAllowed = true;
launchBlock = block.number;
lastSwapBackBlock = block.number;
}
function withdrawStuckBNB() external {
bool success;
(success,) = address(marketingAddress).call{value: address(this).balance}("");
}
function rescueTokens(address _token) external {
require(msg.sender == devAddress,"Not dev");
require(_token != address(0), "_token address cannot be 0");
uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
SafeERC20.safeTransfer(IERC20(_token),address(devAddress), _contractBalance);
}
function updateMarketingAddress(address _address) external onlyOwner {
require(_address != address(0), "zero address");
marketingAddress = _address;
}
function updateDevAddress(address _address) external onlyOwner {
require(_address != address(0), "zero address");
devAddress = _address;
}
function updateBuyTax(uint64 _marketingTax, uint64 _liquidityTax) external onlyOwner {
uint64 totalTax = _marketingTax + _liquidityTax;
require(totalTax <= 2000, "Buy tax exceeds 20%");
buyTax.marketingTax = _marketingTax;
buyTax.liquidityTax = _liquidityTax;
buyTax.totalTax = totalTax;
}
function updateSellTax(uint64 _marketingTax, uint64 _liquidityTax) external onlyOwner {
uint64 totalTax = _marketingTax + _liquidityTax;
require(totalTax <= 2000, "Sell tax exceeds 20%");
sellTax.marketingTax = _marketingTax;
sellTax.liquidityTax = _liquidityTax;
sellTax.totalTax = totalTax;
}
receive() payable external {}
}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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromLimits","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedWalletLimit","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"buyTax","outputs":[{"internalType":"uint64","name":"marketingTax","type":"uint64"},{"internalType":"uint64","name":"liquidityTax","type":"uint64"},{"internalType":"uint64","name":"totalTax","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapBackBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint64","name":"marketingTax","type":"uint64"},{"internalType":"uint64","name":"liquidityTax","type":"uint64"},{"internalType":"uint64","name":"totalTax","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTax","outputs":[{"internalType":"uint80","name":"tokensForMarketing","type":"uint80"},{"internalType":"uint80","name":"tokensForLiquidity","type":"uint80"},{"internalType":"bool","name":"gasSaver","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uint64","name":"_marketingTax","type":"uint64"},{"internalType":"uint64","name":"_liquidityTax","type":"uint64"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_marketingTax","type":"uint64"},{"internalType":"uint64","name":"_liquidityTax","type":"uint64"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e060405234801561000f575f80fd5b506040518060400160405280600981526020017f426162792047726f6b00000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f4261627947726f6b000000000000000000000000000000000000000000000000815250816003908161008b9190610c54565b50806004908161009b9190610c54565b5050505f6100ad61070f60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350610164336958f03ee118a13e80000061071660201b60201c565b5f7310ed43c718714eb63d5aa57b78b54704e256024e90508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620186a060196101c461084e60201b60201c565b6101ce9190610d50565b6101d89190610dbe565b600e819055503360095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061076c600b5f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506064600b5f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600b5f0160089054906101000a900467ffffffffffffffff16600b5f015f9054906101000a900467ffffffffffffffff166102f19190610e01565b600b5f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061076c600c5f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506064600c5f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600c5f0160089054906101000a900467ffffffffffffffff16600c5f015f9054906101000a900467ffffffffffffffff166103ae9190610e01565b600c5f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600d5f0160146101000a81548160ff02191690831515021790555060a05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610440573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104649190610e9a565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105069190610e9a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060c0516040518363ffffffff1660e01b8152600401610542929190610ed4565b6020604051808303815f875af115801561055e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190610e9a565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160085f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506106e93060a0517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61085760201b60201c565b6107093360a0516106fe61084e60201b60201c565b61085760201b60201c565b506110ea565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077b90610f55565b60405180910390fd5b8060025f8282546107959190610f73565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108429190610fb5565b60405180910390a35050565b5f600254905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bc9061103e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a906110cc565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a0d9190610fb5565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610a9557607f821691505b602082108103610aa857610aa7610a51565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b0a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610acf565b610b148683610acf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610b58610b53610b4e84610b2c565b610b35565b610b2c565b9050919050565b5f819050919050565b610b7183610b3e565b610b85610b7d82610b5f565b848454610adb565b825550505050565b5f90565b610b99610b8d565b610ba4818484610b68565b505050565b5b81811015610bc757610bbc5f82610b91565b600181019050610baa565b5050565b601f821115610c0c57610bdd81610aae565b610be684610ac0565b81016020851015610bf5578190505b610c09610c0185610ac0565b830182610ba9565b50505b505050565b5f82821c905092915050565b5f610c2c5f1984600802610c11565b1980831691505092915050565b5f610c448383610c1d565b9150826002028217905092915050565b610c5d82610a1a565b67ffffffffffffffff811115610c7657610c75610a24565b5b610c808254610a7e565b610c8b828285610bcb565b5f60209050601f831160018114610cbc575f8415610caa578287015190505b610cb48582610c39565b865550610d1b565b601f198416610cca86610aae565b5f5b82811015610cf157848901518255600182019150602085019450602081019050610ccc565b86831015610d0e5784890151610d0a601f891682610c1d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d5a82610b2c565b9150610d6583610b2c565b9250828202610d7381610b2c565b91508282048414831517610d8a57610d89610d23565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610dc882610b2c565b9150610dd383610b2c565b925082610de357610de2610d91565b5b828204905092915050565b5f67ffffffffffffffff82169050919050565b5f610e0b82610dee565b9150610e1683610dee565b9250828201905067ffffffffffffffff811115610e3657610e35610d23565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e6982610e40565b9050919050565b610e7981610e5f565b8114610e83575f80fd5b50565b5f81519050610e9481610e70565b92915050565b5f60208284031215610eaf57610eae610e3c565b5b5f610ebc84828501610e86565b91505092915050565b610ece81610e5f565b82525050565b5f604082019050610ee75f830185610ec5565b610ef46020830184610ec5565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610f3f601f83610efb565b9150610f4a82610f0b565b602082019050919050565b5f6020820190508181035f830152610f6c81610f33565b9050919050565b5f610f7d82610b2c565b9150610f8883610b2c565b9250828201905080821115610fa057610f9f610d23565b5b92915050565b610faf81610b2c565b82525050565b5f602082019050610fc85f830184610fa6565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611028602483610efb565b915061103382610fce565b604082019050919050565b5f6020820190508181035f8301526110558161101c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6110b6602283610efb565b91506110c18261105c565b604082019050919050565b5f6020820190508181035f8301526110e3816110aa565b9050919050565b60805160a05160c0516149586111295f395f818161173201526130c601525f8181610b3f01528181612c40015261313501525f610ed301526149585ff3fe608060405260043610610232575f3560e01c806370a082311161012d578063a9059cbb116100aa578063c78d0fa01161006e578063c78d0fa01461081b578063cc1776d314610845578063d00efb2f14610871578063dd62ed3e1461089b578063f2fde38b146108d757610239565b8063a9059cbb14610729578063ad5c464814610765578063b0249cc61461078f578063b150715e146107cb578063bedafd01146107f357610239565b806395d89b41116100f157806395d89b41146106475780639e93ad8e14610671578063a1e1fbbc1461069b578063a457c2d7146106c3578063a5ece941146106ff57610239565b806370a082311461058d578063715018a6146105c957806385033762146105df5780638a8c523c146106075780638da5cb5b1461061d57610239565b8063313ce567116101bb578063484ed3341161017f578063484ed334146104b95780634f7041a5146104cf57806353371be0146104fb5780635a90a49e146105255780636d7adcad1461056157610239565b8063313ce567146103d557806339509351146103ff5780633ad10ef61461043b578063432e95a514610465578063452ed4f11461048f57610239565b8063095ea7b311610202578063095ea7b3146102e357806318160ddd1461031f57806321045918146103495780632369bf831461037157806323b872dd1461039957610239565b8062ae3bf81461023d57806303fd2a451461026557806306fdde031461028f5780630758d924146102b957610239565b3661023957005b5f80fd5b348015610248575f80fd5b50610263600480360381019061025e9190613344565b6108ff565b005b348015610270575f80fd5b50610279610aa7565b604051610286919061337e565b60405180910390f35b34801561029a575f80fd5b506102a3610aad565b6040516102b09190613407565b60405180910390f35b3480156102c4575f80fd5b506102cd610b3d565b6040516102da9190613482565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906134ce565b610b61565b6040516103169190613526565b60405180910390f35b34801561032a575f80fd5b50610333610b83565b604051610340919061354e565b60405180910390f35b348015610354575f80fd5b5061036f600480360381019061036a9190613567565b610b8c565b005b34801561037c575f80fd5b5061039760048036038101906103929190613344565b610cf3565b005b3480156103a4575f80fd5b506103bf60048036038101906103ba9190613592565b610e3a565b6040516103cc9190613526565b60405180910390f35b3480156103e0575f80fd5b506103e9610e68565b6040516103f691906135fd565b60405180910390f35b34801561040a575f80fd5b50610425600480360381019061042091906134ce565b610e70565b6040516104329190613526565b60405180910390f35b348015610446575f80fd5b5061044f610ea6565b60405161045c919061337e565b60405180910390f35b348015610470575f80fd5b50610479610ecb565b604051610486919061354e565b60405180910390f35b34801561049a575f80fd5b506104a3610ed1565b6040516104b0919061337e565b60405180910390f35b3480156104c4575f80fd5b506104cd610ef5565b005b3480156104da575f80fd5b506104e3610f83565b6040516104f293929190613638565b60405180910390f35b348015610506575f80fd5b5061050f610fd3565b60405161051c9190613526565b60405180910390f35b348015610530575f80fd5b5061054b60048036038101906105469190613344565b610fe5565b6040516105589190613526565b60405180910390f35b34801561056c575f80fd5b50610575611002565b60405161058493929190613691565b60405180910390f35b348015610598575f80fd5b506105b360048036038101906105ae9190613344565b61104f565b6040516105c0919061354e565b60405180910390f35b3480156105d4575f80fd5b506105dd611094565b005b3480156105ea575f80fd5b5061060560048036038101906106009190613344565b6111e7565b005b348015610612575f80fd5b5061061b61132e565b005b348015610628575f80fd5b5061063161143d565b60405161063e919061337e565b60405180910390f35b348015610652575f80fd5b5061065b611465565b6040516106689190613407565b60405180910390f35b34801561067c575f80fd5b506106856114f5565b60405161069291906136c6565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc9190613709565b6114fb565b005b3480156106ce575f80fd5b506106e960048036038101906106e491906134ce565b611674565b6040516106f69190613526565b60405180910390f35b34801561070a575f80fd5b506107136116e9565b604051610720919061337e565b60405180910390f35b348015610734575f80fd5b5061074f600480360381019061074a91906134ce565b61170e565b60405161075c9190613526565b60405180910390f35b348015610770575f80fd5b50610779611730565b604051610786919061337e565b60405180910390f35b34801561079a575f80fd5b506107b560048036038101906107b09190613344565b611754565b6040516107c29190613526565b60405180910390f35b3480156107d6575f80fd5b506107f160048036038101906107ec9190613709565b611771565b005b3480156107fe575f80fd5b5061081960048036038101906108149190613771565b6118ea565b005b348015610826575f80fd5b5061082f611aed565b60405161083c919061354e565b60405180910390f35b348015610850575f80fd5b50610859611af3565b60405161086893929190613638565b60405180910390f35b34801561087c575f80fd5b50610885611b43565b604051610892919061354e565b60405180910390f35b3480156108a6575f80fd5b506108c160048036038101906108bc91906137af565b611b49565b6040516108ce919061354e565b60405180910390f35b3480156108e2575f80fd5b506108fd60048036038101906108f89190613344565b611bcb565b005b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098590613837565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f39061389f565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a36919061337e565b602060405180830381865afa158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7591906138d1565b9050610aa382600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611d8d565b5050565b61dead81565b606060038054610abc90613929565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae890613929565b8015610b335780601f10610b0a57610100808354040283529160200191610b33565b820191905f5260205f20905b815481529060010190602001808311610b1657829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f80610b6b611e13565b9050610b78818585611e1a565b600191505092915050565b5f600254905090565b610b94611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c19906139a3565b60405180910390fd5b620186a06001610c30610b83565b610c3a91906139ee565b610c449190613a5c565b811015610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90613afc565b60405180910390fd5b6103e86005610c93610b83565b610c9d91906139ee565b610ca79190613a5c565b811115610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090613b8a565b60405180910390fd5b80600e8190555050565b610cfb611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d80906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613bf2565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610e44611e13565b9050610e51858285611fdd565b610e5c858585612068565b60019150509392505050565b5f6009905090565b5f80610e7a611e13565b9050610e9b818585610e8c8589611b49565b610e969190613c10565b611e1a565b600191505092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f3b90613c70565b5f6040518083038185875af1925050503d805f8114610f75576040519150601f19603f3d011682016040523d82523d5f602084013e610f7a565b606091505b50508091505050565b600b805f015f9054906101000a900467ffffffffffffffff1690805f0160089054906101000a900467ffffffffffffffff1690805f0160109054906101000a900467ffffffffffffffff16905083565b60075f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b600d805f015f9054906101000a900469ffffffffffffffffffff1690805f01600a9054906101000a900469ffffffffffffffffffff1690805f0160149054906101000a900460ff16905083565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61109c611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111ef611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613bf2565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611336611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb906139a3565b60405180910390fd5b60075f9054906101000a900460ff1615611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90613cce565b60405180910390fd5b600160075f6101000a81548160ff0219169083151502179055504360108190555043600f81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461147490613929565b80601f01602080910402602001604051908101604052809291908181526020018280546114a090613929565b80156114eb5780601f106114c2576101008083540402835291602001916114eb565b820191905f5260205f20905b8154815290600101906020018083116114ce57829003601f168201915b5050505050905090565b61271081565b611503611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611588906139a3565b60405180910390fd5b5f818361159e9190613cec565b90506107d08167ffffffffffffffff1611156115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690613d71565b60405180910390fd5b82600b5f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600b5f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600b5f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b5f8061167e611e13565b90505f61168b8286611b49565b9050838110156116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613dff565b60405180910390fd5b6116dd8286868403611e1a565b60019250505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80611718611e13565b9050611725818585612068565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6008602052805f5260405f205f915054906101000a900460ff1681565b611779611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe906139a3565b60405180910390fd5b5f81836118149190613cec565b90506107d08167ffffffffffffffff161115611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90613e67565b60405180910390fd5b82600c5f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600c5f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600c5f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b6118f2611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590613ecf565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390613f37565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d8282604051611ae1929190613f55565b60405180910390a15050565b600e5481565b600c805f015f9054906101000a900467ffffffffffffffff1690805f0160089054906101000a900467ffffffffffffffff1690805f0160109054906101000a900467ffffffffffffffff16905083565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bd3611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c58906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc690613fec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e0e8363a9059cbb60e01b8484604051602401611dac92919061400a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612182565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f906140a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed9061412f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fd0919061354e565b60405180910390a3505050565b5f611fe88484611b49565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120625781811015612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204b90614197565b60405180910390fd5b6120618484848403611e1a565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612106575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121725760075f9054906101000a900460ff16612159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612150906141ff565b60405180910390fd5b612164838383612247565b8161216f919061421d565b90505b61217d83838361284d565b505050565b5f6121e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612aa39092919063ffffffff16565b90505f8151111561224257808060200190518101906122029190614264565b612241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612238906142ff565b60405180910390fd5b5b505050565b5f600e546122543061104f565b101580156122a9575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122c35750436001600f546122c09190613c10565b11155b156122d1576122d0612aba565b5b5f6122da6132aa565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123cf57600c6040518060600160405290815f82015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506124c1565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156124c057600b6040518060600160405290815f82015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090505b5b5f816040015167ffffffffffffffff16111561282f575f600d6040518060600160405290815f82015f9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a900460ff1615151515815250509050601054431161266f5760085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125f25761271067ffffffffffffffff166107d0866125e191906139ee565b6125eb9190613a5c565b925061266a565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126695761271067ffffffffffffffff166107d08661265c91906139ee565b6126669190613a5c565b92505b5b6126a3565b61271067ffffffffffffffff16826040015167ffffffffffffffff168661269691906139ee565b6126a09190613a5c565b92505b633b9aca00826040015167ffffffffffffffff16836020015167ffffffffffffffff16856126d19190614338565b6126db9190614374565b6126e59190614374565b816020018181516126f691906143a4565b91509069ffffffffffffffffffff16908169ffffffffffffffffffff1681525050633b9aca00826040015167ffffffffffffffff16835f015167ffffffffffffffff16856127449190614338565b61274e9190614374565b6127589190614374565b815f0181815161276891906143a4565b91509069ffffffffffffffffffff16908169ffffffffffffffffffff168152505080600d5f820151815f015f6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506020820151815f01600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040820151815f0160146101000a81548160ff02191690831515021790555090505061282d8730856fffffffffffffffffffffffffffffffff1661284d565b505b816fffffffffffffffffffffffffffffffff16925050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290614451565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612920906144df565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156129ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a39061456d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a95919061354e565b60405180910390a350505050565b6060612ab184845f85612f60565b90509392505050565b5f612ac43061104f565b90505f600d6040518060600160405290815f82015f9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a900460ff16151515158152505090505f815f01518260200151612b7191906143a4565b69ffffffffffffffffffff1690505f831480612b8c57505f81145b15612b9957505050612f5e565b6004600e54612ba891906139ee565b831115612bc1576004600e54612bbe91906139ee565b92505b5f826020015169ffffffffffffffffffff161115612d1a575f81836020015169ffffffffffffffffffff1685612bf791906139ee565b612c019190613a5c565b90505f600282612c119190613a5c565b90505f8183612c20919061421d565b90505f479050612c2f83613029565b5f8147612c3c919061421d565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230865f8061dead426040518863ffffffff1660e01b8152600401612ca4969594939291906145c4565b60606040518083038185885af1158015612cc0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612ce59190614623565b5050508488612cf4919061421d565b9750866020015169ffffffffffffffffffff1686612d12919061421d565b955050505050505b5f831115612e8557612d2b83613029565b5f804790505f6064603c83612d4091906139ee565b612d4a9190613a5c565b90505f811115612de45760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051612d9d90613c70565b5f60405180830381858888f193505050503d805f8114612dd8576040519150601f19603f3d011682016040523d82523d5f602084013e612ddd565b606091505b5050809350505b5f4790505f811115612e8057600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051612e3990613c70565b5f60405180830381858888f193505050503d805f8114612e74576040519150601f19603f3d011682016040523d82523d5f602084013e612e79565b606091505b5050809450505b505050505b5f826020019069ffffffffffffffffffff16908169ffffffffffffffffffff16815250505f825f019069ffffffffffffffffffff16908169ffffffffffffffffffff168152505081600d5f820151815f015f6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506020820151815f01600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040820151815f0160146101000a81548160ff02191690831515021790555090505043600f819055505050505b565b606082471015612fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9c906146e3565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051612fcd919061473b565b5f6040518083038185875af1925050503d805f8114613007576040519150601f19603f3d011682016040523d82523d5f602084013e61300c565b606091505b509150915061301d878383876131c5565b92505050949350505050565b5f600267ffffffffffffffff81111561304557613044614751565b5b6040519080825280602002602001820160405280156130735781602001602082028036833780820191505090505b50905030815f8151811061308a5761308961477e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106130f9576130f861477e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613194959493929190614862565b5f604051808303815f87803b1580156131ab575f80fd5b505af11580156131bd573d5f803e3d5ffd5b505050505050565b60608315613226575f83510361321e576131de85613239565b61321d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321490614904565b60405180910390fd5b5b829050613231565b613230838361325b565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f8251111561326d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a19190613407565b60405180910390fd5b60405180606001604052805f67ffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f67ffffffffffffffff1681525090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613313826132ea565b9050919050565b61332381613309565b811461332d575f80fd5b50565b5f8135905061333e8161331a565b92915050565b5f60208284031215613359576133586132e6565b5b5f61336684828501613330565b91505092915050565b61337881613309565b82525050565b5f6020820190506133915f83018461336f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6133d982613397565b6133e381856133a1565b93506133f38185602086016133b1565b6133fc816133bf565b840191505092915050565b5f6020820190508181035f83015261341f81846133cf565b905092915050565b5f819050919050565b5f61344a613445613440846132ea565b613427565b6132ea565b9050919050565b5f61345b82613430565b9050919050565b5f61346c82613451565b9050919050565b61347c81613462565b82525050565b5f6020820190506134955f830184613473565b92915050565b5f819050919050565b6134ad8161349b565b81146134b7575f80fd5b50565b5f813590506134c8816134a4565b92915050565b5f80604083850312156134e4576134e36132e6565b5b5f6134f185828601613330565b9250506020613502858286016134ba565b9150509250929050565b5f8115159050919050565b6135208161350c565b82525050565b5f6020820190506135395f830184613517565b92915050565b6135488161349b565b82525050565b5f6020820190506135615f83018461353f565b92915050565b5f6020828403121561357c5761357b6132e6565b5b5f613589848285016134ba565b91505092915050565b5f805f606084860312156135a9576135a86132e6565b5b5f6135b686828701613330565b93505060206135c786828701613330565b92505060406135d8868287016134ba565b9150509250925092565b5f60ff82169050919050565b6135f7816135e2565b82525050565b5f6020820190506136105f8301846135ee565b92915050565b5f67ffffffffffffffff82169050919050565b61363281613616565b82525050565b5f60608201905061364b5f830186613629565b6136586020830185613629565b6136656040830184613629565b949350505050565b5f69ffffffffffffffffffff82169050919050565b61368b8161366d565b82525050565b5f6060820190506136a45f830186613682565b6136b16020830185613682565b6136be6040830184613517565b949350505050565b5f6020820190506136d95f830184613629565b92915050565b6136e881613616565b81146136f2575f80fd5b50565b5f81359050613703816136df565b92915050565b5f806040838503121561371f5761371e6132e6565b5b5f61372c858286016136f5565b925050602061373d858286016136f5565b9150509250929050565b6137508161350c565b811461375a575f80fd5b50565b5f8135905061376b81613747565b92915050565b5f8060408385031215613787576137866132e6565b5b5f61379485828601613330565b92505060206137a58582860161375d565b9150509250929050565b5f80604083850312156137c5576137c46132e6565b5b5f6137d285828601613330565b92505060206137e385828601613330565b9150509250929050565b7f4e6f7420646576000000000000000000000000000000000000000000000000005f82015250565b5f6138216007836133a1565b915061382c826137ed565b602082019050919050565b5f6020820190508181035f83015261384e81613815565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f613889601a836133a1565b915061389482613855565b602082019050919050565b5f6020820190508181035f8301526138b68161387d565b9050919050565b5f815190506138cb816134a4565b92915050565b5f602082840312156138e6576138e56132e6565b5b5f6138f3848285016138bd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061394057607f821691505b602082108103613953576139526138fc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61398d6020836133a1565b915061399882613959565b602082019050919050565b5f6020820190508181035f8301526139ba81613981565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139f88261349b565b9150613a038361349b565b9250828202613a118161349b565b91508282048414831517613a2857613a276139c1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a668261349b565b9150613a718361349b565b925082613a8157613a80613a2f565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613ae66035836133a1565b9150613af182613a8c565b604082019050919050565b5f6020820190508181035f830152613b1381613ada565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613b746034836133a1565b9150613b7f82613b1a565b604082019050919050565b5f6020820190508181035f830152613ba181613b68565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f613bdc600c836133a1565b9150613be782613ba8565b602082019050919050565b5f6020820190508181035f830152613c0981613bd0565b9050919050565b5f613c1a8261349b565b9150613c258361349b565b9250828201905080821115613c3d57613c3c6139c1565b5b92915050565b5f81905092915050565b50565b5f613c5b5f83613c43565b9150613c6682613c4d565b5f82019050919050565b5f613c7a82613c50565b9150819050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f613cb86017836133a1565b9150613cc382613c84565b602082019050919050565b5f6020820190508181035f830152613ce581613cac565b9050919050565b5f613cf682613616565b9150613d0183613616565b9250828201905067ffffffffffffffff811115613d2157613d206139c1565b5b92915050565b7f42757920746178206578636565647320323025000000000000000000000000005f82015250565b5f613d5b6013836133a1565b9150613d6682613d27565b602082019050919050565b5f6020820190508181035f830152613d8881613d4f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613de96025836133a1565b9150613df482613d8f565b604082019050919050565b5f6020820190508181035f830152613e1681613ddd565b9050919050565b7f53656c6c207461782065786365656473203230250000000000000000000000005f82015250565b5f613e516014836133a1565b9150613e5c82613e1d565b602082019050919050565b5f6020820190508181035f830152613e7e81613e45565b9050919050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f613eb9600c836133a1565b9150613ec482613e85565b602082019050919050565b5f6020820190508181035f830152613ee681613ead565b9050919050565b7f43616e6e6f7420756e6578656d707420636f6e747261637400000000000000005f82015250565b5f613f216018836133a1565b9150613f2c82613eed565b602082019050919050565b5f6020820190508181035f830152613f4e81613f15565b9050919050565b5f604082019050613f685f83018561336f565b613f756020830184613517565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613fd66026836133a1565b9150613fe182613f7c565b604082019050919050565b5f6020820190508181035f83015261400381613fca565b9050919050565b5f60408201905061401d5f83018561336f565b61402a602083018461353f565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61408b6024836133a1565b915061409682614031565b604082019050919050565b5f6020820190508181035f8301526140b88161407f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141196022836133a1565b9150614124826140bf565b604082019050919050565b5f6020820190508181035f8301526141468161410d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f614181601d836133a1565b915061418c8261414d565b602082019050919050565b5f6020820190508181035f8301526141ae81614175565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6141e96012836133a1565b91506141f4826141b5565b602082019050919050565b5f6020820190508181035f830152614216816141dd565b9050919050565b5f6142278261349b565b91506142328361349b565b925082820390508181111561424a576142496139c1565b5b92915050565b5f8151905061425e81613747565b92915050565b5f60208284031215614279576142786132e6565b5b5f61428684828501614250565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f6142e9602a836133a1565b91506142f48261428f565b604082019050919050565b5f6020820190508181035f830152614316816142dd565b9050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f6143428261431d565b915061434d8361431d565b925082820261435b8161431d565b915080821461436d5761436c6139c1565b5b5092915050565b5f61437e8261431d565b91506143898361431d565b92508261439957614398613a2f565b5b828204905092915050565b5f6143ae8261366d565b91506143b98361366d565b9250828201905069ffffffffffffffffffff8111156143db576143da6139c1565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61443b6025836133a1565b9150614446826143e1565b604082019050919050565b5f6020820190508181035f8301526144688161442f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6144c96023836133a1565b91506144d48261446f565b604082019050919050565b5f6020820190508181035f8301526144f6816144bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6145576026836133a1565b9150614562826144fd565b604082019050919050565b5f6020820190508181035f8301526145848161454b565b9050919050565b5f819050919050565b5f6145ae6145a96145a48461458b565b613427565b61349b565b9050919050565b6145be81614594565b82525050565b5f60c0820190506145d75f83018961336f565b6145e4602083018861353f565b6145f160408301876145b5565b6145fe60608301866145b5565b61460b608083018561336f565b61461860a083018461353f565b979650505050505050565b5f805f6060848603121561463a576146396132e6565b5b5f614647868287016138bd565b9350506020614658868287016138bd565b9250506040614669868287016138bd565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f6146cd6026836133a1565b91506146d882614673565b604082019050919050565b5f6020820190508181035f8301526146fa816146c1565b9050919050565b5f81519050919050565b5f61471582614701565b61471f8185613c43565b935061472f8185602086016133b1565b80840191505092915050565b5f614746828461470b565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147dd81613309565b82525050565b5f6147ee83836147d4565b60208301905092915050565b5f602082019050919050565b5f614810826147ab565b61481a81856147b5565b9350614825836147c5565b805f5b8381101561485557815161483c88826147e3565b9750614847836147fa565b925050600181019050614828565b5085935050505092915050565b5f60a0820190506148755f83018861353f565b61488260208301876145b5565b81810360408301526148948186614806565b90506148a3606083018561336f565b6148b0608083018461353f565b9695505050505050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6148ee601d836133a1565b91506148f9826148ba565b602082019050919050565b5f6020820190508181035f83015261491b816148e2565b905091905056fea2646970667358221220530ddb4a8c0ed5dd99e4da9c75ab719cc6f95d1e41cc6c55656a9de06ee294de64736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610232575f3560e01c806370a082311161012d578063a9059cbb116100aa578063c78d0fa01161006e578063c78d0fa01461081b578063cc1776d314610845578063d00efb2f14610871578063dd62ed3e1461089b578063f2fde38b146108d757610239565b8063a9059cbb14610729578063ad5c464814610765578063b0249cc61461078f578063b150715e146107cb578063bedafd01146107f357610239565b806395d89b41116100f157806395d89b41146106475780639e93ad8e14610671578063a1e1fbbc1461069b578063a457c2d7146106c3578063a5ece941146106ff57610239565b806370a082311461058d578063715018a6146105c957806385033762146105df5780638a8c523c146106075780638da5cb5b1461061d57610239565b8063313ce567116101bb578063484ed3341161017f578063484ed334146104b95780634f7041a5146104cf57806353371be0146104fb5780635a90a49e146105255780636d7adcad1461056157610239565b8063313ce567146103d557806339509351146103ff5780633ad10ef61461043b578063432e95a514610465578063452ed4f11461048f57610239565b8063095ea7b311610202578063095ea7b3146102e357806318160ddd1461031f57806321045918146103495780632369bf831461037157806323b872dd1461039957610239565b8062ae3bf81461023d57806303fd2a451461026557806306fdde031461028f5780630758d924146102b957610239565b3661023957005b5f80fd5b348015610248575f80fd5b50610263600480360381019061025e9190613344565b6108ff565b005b348015610270575f80fd5b50610279610aa7565b604051610286919061337e565b60405180910390f35b34801561029a575f80fd5b506102a3610aad565b6040516102b09190613407565b60405180910390f35b3480156102c4575f80fd5b506102cd610b3d565b6040516102da9190613482565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906134ce565b610b61565b6040516103169190613526565b60405180910390f35b34801561032a575f80fd5b50610333610b83565b604051610340919061354e565b60405180910390f35b348015610354575f80fd5b5061036f600480360381019061036a9190613567565b610b8c565b005b34801561037c575f80fd5b5061039760048036038101906103929190613344565b610cf3565b005b3480156103a4575f80fd5b506103bf60048036038101906103ba9190613592565b610e3a565b6040516103cc9190613526565b60405180910390f35b3480156103e0575f80fd5b506103e9610e68565b6040516103f691906135fd565b60405180910390f35b34801561040a575f80fd5b50610425600480360381019061042091906134ce565b610e70565b6040516104329190613526565b60405180910390f35b348015610446575f80fd5b5061044f610ea6565b60405161045c919061337e565b60405180910390f35b348015610470575f80fd5b50610479610ecb565b604051610486919061354e565b60405180910390f35b34801561049a575f80fd5b506104a3610ed1565b6040516104b0919061337e565b60405180910390f35b3480156104c4575f80fd5b506104cd610ef5565b005b3480156104da575f80fd5b506104e3610f83565b6040516104f293929190613638565b60405180910390f35b348015610506575f80fd5b5061050f610fd3565b60405161051c9190613526565b60405180910390f35b348015610530575f80fd5b5061054b60048036038101906105469190613344565b610fe5565b6040516105589190613526565b60405180910390f35b34801561056c575f80fd5b50610575611002565b60405161058493929190613691565b60405180910390f35b348015610598575f80fd5b506105b360048036038101906105ae9190613344565b61104f565b6040516105c0919061354e565b60405180910390f35b3480156105d4575f80fd5b506105dd611094565b005b3480156105ea575f80fd5b5061060560048036038101906106009190613344565b6111e7565b005b348015610612575f80fd5b5061061b61132e565b005b348015610628575f80fd5b5061063161143d565b60405161063e919061337e565b60405180910390f35b348015610652575f80fd5b5061065b611465565b6040516106689190613407565b60405180910390f35b34801561067c575f80fd5b506106856114f5565b60405161069291906136c6565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc9190613709565b6114fb565b005b3480156106ce575f80fd5b506106e960048036038101906106e491906134ce565b611674565b6040516106f69190613526565b60405180910390f35b34801561070a575f80fd5b506107136116e9565b604051610720919061337e565b60405180910390f35b348015610734575f80fd5b5061074f600480360381019061074a91906134ce565b61170e565b60405161075c9190613526565b60405180910390f35b348015610770575f80fd5b50610779611730565b604051610786919061337e565b60405180910390f35b34801561079a575f80fd5b506107b560048036038101906107b09190613344565b611754565b6040516107c29190613526565b60405180910390f35b3480156107d6575f80fd5b506107f160048036038101906107ec9190613709565b611771565b005b3480156107fe575f80fd5b5061081960048036038101906108149190613771565b6118ea565b005b348015610826575f80fd5b5061082f611aed565b60405161083c919061354e565b60405180910390f35b348015610850575f80fd5b50610859611af3565b60405161086893929190613638565b60405180910390f35b34801561087c575f80fd5b50610885611b43565b604051610892919061354e565b60405180910390f35b3480156108a6575f80fd5b506108c160048036038101906108bc91906137af565b611b49565b6040516108ce919061354e565b60405180910390f35b3480156108e2575f80fd5b506108fd60048036038101906108f89190613344565b611bcb565b005b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098590613837565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f39061389f565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a36919061337e565b602060405180830381865afa158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7591906138d1565b9050610aa382600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611d8d565b5050565b61dead81565b606060038054610abc90613929565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae890613929565b8015610b335780601f10610b0a57610100808354040283529160200191610b33565b820191905f5260205f20905b815481529060010190602001808311610b1657829003601f168201915b5050505050905090565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e81565b5f80610b6b611e13565b9050610b78818585611e1a565b600191505092915050565b5f600254905090565b610b94611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c19906139a3565b60405180910390fd5b620186a06001610c30610b83565b610c3a91906139ee565b610c449190613a5c565b811015610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90613afc565b60405180910390fd5b6103e86005610c93610b83565b610c9d91906139ee565b610ca79190613a5c565b811115610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090613b8a565b60405180910390fd5b80600e8190555050565b610cfb611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d80906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613bf2565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610e44611e13565b9050610e51858285611fdd565b610e5c858585612068565b60019150509392505050565b5f6009905090565b5f80610e7a611e13565b9050610e9b818585610e8c8589611b49565b610e969190613c10565b611e1a565b600191505092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b7f000000000000000000000000f7d21628d824d4910eb92466e830f8d09e9cccb981565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f3b90613c70565b5f6040518083038185875af1925050503d805f8114610f75576040519150601f19603f3d011682016040523d82523d5f602084013e610f7a565b606091505b50508091505050565b600b805f015f9054906101000a900467ffffffffffffffff1690805f0160089054906101000a900467ffffffffffffffff1690805f0160109054906101000a900467ffffffffffffffff16905083565b60075f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b600d805f015f9054906101000a900469ffffffffffffffffffff1690805f01600a9054906101000a900469ffffffffffffffffffff1690805f0160149054906101000a900460ff16905083565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61109c611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111ef611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613bf2565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611336611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb906139a3565b60405180910390fd5b60075f9054906101000a900460ff1615611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90613cce565b60405180910390fd5b600160075f6101000a81548160ff0219169083151502179055504360108190555043600f81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461147490613929565b80601f01602080910402602001604051908101604052809291908181526020018280546114a090613929565b80156114eb5780601f106114c2576101008083540402835291602001916114eb565b820191905f5260205f20905b8154815290600101906020018083116114ce57829003601f168201915b5050505050905090565b61271081565b611503611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611588906139a3565b60405180910390fd5b5f818361159e9190613cec565b90506107d08167ffffffffffffffff1611156115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690613d71565b60405180910390fd5b82600b5f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600b5f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600b5f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b5f8061167e611e13565b90505f61168b8286611b49565b9050838110156116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613dff565b60405180910390fd5b6116dd8286868403611e1a565b60019250505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80611718611e13565b9050611725818585612068565b600191505092915050565b7f000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6008602052805f5260405f205f915054906101000a900460ff1681565b611779611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe906139a3565b60405180910390fd5b5f81836118149190613cec565b90506107d08167ffffffffffffffff161115611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90613e67565b60405180910390fd5b82600c5f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600c5f0160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600c5f0160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b6118f2611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590613ecf565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390613f37565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d8282604051611ae1929190613f55565b60405180910390a15050565b600e5481565b600c805f015f9054906101000a900467ffffffffffffffff1690805f0160089054906101000a900467ffffffffffffffff1690805f0160109054906101000a900467ffffffffffffffff16905083565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bd3611e13565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c58906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc690613fec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e0e8363a9059cbb60e01b8484604051602401611dac92919061400a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612182565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f906140a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed9061412f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fd0919061354e565b60405180910390a3505050565b5f611fe88484611b49565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120625781811015612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204b90614197565b60405180910390fd5b6120618484848403611e1a565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612106575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121725760075f9054906101000a900460ff16612159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612150906141ff565b60405180910390fd5b612164838383612247565b8161216f919061421d565b90505b61217d83838361284d565b505050565b5f6121e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612aa39092919063ffffffff16565b90505f8151111561224257808060200190518101906122029190614264565b612241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612238906142ff565b60405180910390fd5b5b505050565b5f600e546122543061104f565b101580156122a9575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122c35750436001600f546122c09190613c10565b11155b156122d1576122d0612aba565b5b5f6122da6132aa565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123cf57600c6040518060600160405290815f82015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506124c1565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156124c057600b6040518060600160405290815f82015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090505b5b5f816040015167ffffffffffffffff16111561282f575f600d6040518060600160405290815f82015f9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a900460ff1615151515815250509050601054431161266f5760085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125f25761271067ffffffffffffffff166107d0866125e191906139ee565b6125eb9190613a5c565b925061266a565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126695761271067ffffffffffffffff166107d08661265c91906139ee565b6126669190613a5c565b92505b5b6126a3565b61271067ffffffffffffffff16826040015167ffffffffffffffff168661269691906139ee565b6126a09190613a5c565b92505b633b9aca00826040015167ffffffffffffffff16836020015167ffffffffffffffff16856126d19190614338565b6126db9190614374565b6126e59190614374565b816020018181516126f691906143a4565b91509069ffffffffffffffffffff16908169ffffffffffffffffffff1681525050633b9aca00826040015167ffffffffffffffff16835f015167ffffffffffffffff16856127449190614338565b61274e9190614374565b6127589190614374565b815f0181815161276891906143a4565b91509069ffffffffffffffffffff16908169ffffffffffffffffffff168152505080600d5f820151815f015f6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506020820151815f01600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040820151815f0160146101000a81548160ff02191690831515021790555090505061282d8730856fffffffffffffffffffffffffffffffff1661284d565b505b816fffffffffffffffffffffffffffffffff16925050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290614451565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612920906144df565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156129ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a39061456d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a95919061354e565b60405180910390a350505050565b6060612ab184845f85612f60565b90509392505050565b5f612ac43061104f565b90505f600d6040518060600160405290815f82015f9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a900460ff16151515158152505090505f815f01518260200151612b7191906143a4565b69ffffffffffffffffffff1690505f831480612b8c57505f81145b15612b9957505050612f5e565b6004600e54612ba891906139ee565b831115612bc1576004600e54612bbe91906139ee565b92505b5f826020015169ffffffffffffffffffff161115612d1a575f81836020015169ffffffffffffffffffff1685612bf791906139ee565b612c019190613a5c565b90505f600282612c119190613a5c565b90505f8183612c20919061421d565b90505f479050612c2f83613029565b5f8147612c3c919061421d565b90507f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230865f8061dead426040518863ffffffff1660e01b8152600401612ca4969594939291906145c4565b60606040518083038185885af1158015612cc0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612ce59190614623565b5050508488612cf4919061421d565b9750866020015169ffffffffffffffffffff1686612d12919061421d565b955050505050505b5f831115612e8557612d2b83613029565b5f804790505f6064603c83612d4091906139ee565b612d4a9190613a5c565b90505f811115612de45760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051612d9d90613c70565b5f60405180830381858888f193505050503d805f8114612dd8576040519150601f19603f3d011682016040523d82523d5f602084013e612ddd565b606091505b5050809350505b5f4790505f811115612e8057600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051612e3990613c70565b5f60405180830381858888f193505050503d805f8114612e74576040519150601f19603f3d011682016040523d82523d5f602084013e612e79565b606091505b5050809450505b505050505b5f826020019069ffffffffffffffffffff16908169ffffffffffffffffffff16815250505f825f019069ffffffffffffffffffff16908169ffffffffffffffffffff168152505081600d5f820151815f015f6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506020820151815f01600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040820151815f0160146101000a81548160ff02191690831515021790555090505043600f819055505050505b565b606082471015612fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9c906146e3565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051612fcd919061473b565b5f6040518083038185875af1925050503d805f8114613007576040519150601f19603f3d011682016040523d82523d5f602084013e61300c565b606091505b509150915061301d878383876131c5565b92505050949350505050565b5f600267ffffffffffffffff81111561304557613044614751565b5b6040519080825280602002602001820160405280156130735781602001602082028036833780820191505090505b50905030815f8151811061308a5761308961477e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c816001815181106130f9576130f861477e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613194959493929190614862565b5f604051808303815f87803b1580156131ab575f80fd5b505af11580156131bd573d5f803e3d5ffd5b505050505050565b60608315613226575f83510361321e576131de85613239565b61321d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321490614904565b60405180910390fd5b5b829050613231565b613230838361325b565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f8251111561326d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a19190613407565b60405180910390fd5b60405180606001604052805f67ffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f67ffffffffffffffff1681525090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613313826132ea565b9050919050565b61332381613309565b811461332d575f80fd5b50565b5f8135905061333e8161331a565b92915050565b5f60208284031215613359576133586132e6565b5b5f61336684828501613330565b91505092915050565b61337881613309565b82525050565b5f6020820190506133915f83018461336f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6133d982613397565b6133e381856133a1565b93506133f38185602086016133b1565b6133fc816133bf565b840191505092915050565b5f6020820190508181035f83015261341f81846133cf565b905092915050565b5f819050919050565b5f61344a613445613440846132ea565b613427565b6132ea565b9050919050565b5f61345b82613430565b9050919050565b5f61346c82613451565b9050919050565b61347c81613462565b82525050565b5f6020820190506134955f830184613473565b92915050565b5f819050919050565b6134ad8161349b565b81146134b7575f80fd5b50565b5f813590506134c8816134a4565b92915050565b5f80604083850312156134e4576134e36132e6565b5b5f6134f185828601613330565b9250506020613502858286016134ba565b9150509250929050565b5f8115159050919050565b6135208161350c565b82525050565b5f6020820190506135395f830184613517565b92915050565b6135488161349b565b82525050565b5f6020820190506135615f83018461353f565b92915050565b5f6020828403121561357c5761357b6132e6565b5b5f613589848285016134ba565b91505092915050565b5f805f606084860312156135a9576135a86132e6565b5b5f6135b686828701613330565b93505060206135c786828701613330565b92505060406135d8868287016134ba565b9150509250925092565b5f60ff82169050919050565b6135f7816135e2565b82525050565b5f6020820190506136105f8301846135ee565b92915050565b5f67ffffffffffffffff82169050919050565b61363281613616565b82525050565b5f60608201905061364b5f830186613629565b6136586020830185613629565b6136656040830184613629565b949350505050565b5f69ffffffffffffffffffff82169050919050565b61368b8161366d565b82525050565b5f6060820190506136a45f830186613682565b6136b16020830185613682565b6136be6040830184613517565b949350505050565b5f6020820190506136d95f830184613629565b92915050565b6136e881613616565b81146136f2575f80fd5b50565b5f81359050613703816136df565b92915050565b5f806040838503121561371f5761371e6132e6565b5b5f61372c858286016136f5565b925050602061373d858286016136f5565b9150509250929050565b6137508161350c565b811461375a575f80fd5b50565b5f8135905061376b81613747565b92915050565b5f8060408385031215613787576137866132e6565b5b5f61379485828601613330565b92505060206137a58582860161375d565b9150509250929050565b5f80604083850312156137c5576137c46132e6565b5b5f6137d285828601613330565b92505060206137e385828601613330565b9150509250929050565b7f4e6f7420646576000000000000000000000000000000000000000000000000005f82015250565b5f6138216007836133a1565b915061382c826137ed565b602082019050919050565b5f6020820190508181035f83015261384e81613815565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f613889601a836133a1565b915061389482613855565b602082019050919050565b5f6020820190508181035f8301526138b68161387d565b9050919050565b5f815190506138cb816134a4565b92915050565b5f602082840312156138e6576138e56132e6565b5b5f6138f3848285016138bd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061394057607f821691505b602082108103613953576139526138fc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61398d6020836133a1565b915061399882613959565b602082019050919050565b5f6020820190508181035f8301526139ba81613981565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139f88261349b565b9150613a038361349b565b9250828202613a118161349b565b91508282048414831517613a2857613a276139c1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a668261349b565b9150613a718361349b565b925082613a8157613a80613a2f565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613ae66035836133a1565b9150613af182613a8c565b604082019050919050565b5f6020820190508181035f830152613b1381613ada565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613b746034836133a1565b9150613b7f82613b1a565b604082019050919050565b5f6020820190508181035f830152613ba181613b68565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f613bdc600c836133a1565b9150613be782613ba8565b602082019050919050565b5f6020820190508181035f830152613c0981613bd0565b9050919050565b5f613c1a8261349b565b9150613c258361349b565b9250828201905080821115613c3d57613c3c6139c1565b5b92915050565b5f81905092915050565b50565b5f613c5b5f83613c43565b9150613c6682613c4d565b5f82019050919050565b5f613c7a82613c50565b9150819050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f613cb86017836133a1565b9150613cc382613c84565b602082019050919050565b5f6020820190508181035f830152613ce581613cac565b9050919050565b5f613cf682613616565b9150613d0183613616565b9250828201905067ffffffffffffffff811115613d2157613d206139c1565b5b92915050565b7f42757920746178206578636565647320323025000000000000000000000000005f82015250565b5f613d5b6013836133a1565b9150613d6682613d27565b602082019050919050565b5f6020820190508181035f830152613d8881613d4f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613de96025836133a1565b9150613df482613d8f565b604082019050919050565b5f6020820190508181035f830152613e1681613ddd565b9050919050565b7f53656c6c207461782065786365656473203230250000000000000000000000005f82015250565b5f613e516014836133a1565b9150613e5c82613e1d565b602082019050919050565b5f6020820190508181035f830152613e7e81613e45565b9050919050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f613eb9600c836133a1565b9150613ec482613e85565b602082019050919050565b5f6020820190508181035f830152613ee681613ead565b9050919050565b7f43616e6e6f7420756e6578656d707420636f6e747261637400000000000000005f82015250565b5f613f216018836133a1565b9150613f2c82613eed565b602082019050919050565b5f6020820190508181035f830152613f4e81613f15565b9050919050565b5f604082019050613f685f83018561336f565b613f756020830184613517565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613fd66026836133a1565b9150613fe182613f7c565b604082019050919050565b5f6020820190508181035f83015261400381613fca565b9050919050565b5f60408201905061401d5f83018561336f565b61402a602083018461353f565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61408b6024836133a1565b915061409682614031565b604082019050919050565b5f6020820190508181035f8301526140b88161407f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141196022836133a1565b9150614124826140bf565b604082019050919050565b5f6020820190508181035f8301526141468161410d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f614181601d836133a1565b915061418c8261414d565b602082019050919050565b5f6020820190508181035f8301526141ae81614175565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6141e96012836133a1565b91506141f4826141b5565b602082019050919050565b5f6020820190508181035f830152614216816141dd565b9050919050565b5f6142278261349b565b91506142328361349b565b925082820390508181111561424a576142496139c1565b5b92915050565b5f8151905061425e81613747565b92915050565b5f60208284031215614279576142786132e6565b5b5f61428684828501614250565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f6142e9602a836133a1565b91506142f48261428f565b604082019050919050565b5f6020820190508181035f830152614316816142dd565b9050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f6143428261431d565b915061434d8361431d565b925082820261435b8161431d565b915080821461436d5761436c6139c1565b5b5092915050565b5f61437e8261431d565b91506143898361431d565b92508261439957614398613a2f565b5b828204905092915050565b5f6143ae8261366d565b91506143b98361366d565b9250828201905069ffffffffffffffffffff8111156143db576143da6139c1565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61443b6025836133a1565b9150614446826143e1565b604082019050919050565b5f6020820190508181035f8301526144688161442f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6144c96023836133a1565b91506144d48261446f565b604082019050919050565b5f6020820190508181035f8301526144f6816144bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6145576026836133a1565b9150614562826144fd565b604082019050919050565b5f6020820190508181035f8301526145848161454b565b9050919050565b5f819050919050565b5f6145ae6145a96145a48461458b565b613427565b61349b565b9050919050565b6145be81614594565b82525050565b5f60c0820190506145d75f83018961336f565b6145e4602083018861353f565b6145f160408301876145b5565b6145fe60608301866145b5565b61460b608083018561336f565b61461860a083018461353f565b979650505050505050565b5f805f6060848603121561463a576146396132e6565b5b5f614647868287016138bd565b9350506020614658868287016138bd565b9250506040614669868287016138bd565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f6146cd6026836133a1565b91506146d882614673565b604082019050919050565b5f6020820190508181035f8301526146fa816146c1565b9050919050565b5f81519050919050565b5f61471582614701565b61471f8185613c43565b935061472f8185602086016133b1565b80840191505092915050565b5f614746828461470b565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147dd81613309565b82525050565b5f6147ee83836147d4565b60208301905092915050565b5f602082019050919050565b5f614810826147ab565b61481a81856147b5565b9350614825836147c5565b805f5b8381101561485557815161483c88826147e3565b9750614847836147fa565b925050600181019050614828565b5085935050505092915050565b5f60a0820190506148755f83018861353f565b61488260208301876145b5565b81810360408301526148948186614806565b90506148a3606083018561336f565b6148b0608083018461353f565b9695505050505050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6148ee601d836133a1565b91506148f9826148ba565b602082019050919050565b5f6020820190508181035f83015261491b816148e2565b905091905056fea2646970667358221220530ddb4a8c0ed5dd99e4da9c75ab719cc6f95d1e41cc6c55656a9de06ee294de64736f6c634300081a0033
Deployed Bytecode Sourcemap
21758:9261:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29580:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22362:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4189:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22229:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6548:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5317:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28824:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29928:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7329:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5160:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7999:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21983:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22150:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22191:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29416:156;;;;;;;;;;;;;:::i;:::-;;22017:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;21859:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21803:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22072:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5488:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13102:150;;;;;;;;;;;;;:::i;:::-;;30109:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29180:226;;;;;;;;;;;;;:::i;:::-;;12888:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4408:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22313:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30278:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8740:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21945:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5821:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22273:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21894:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30625:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28495:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22113:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22043:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;22446:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6077:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13260:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29580:340;29657:10;;;;;;;;;;;29643:24;;:10;:24;;;29635:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;29715:1;29697:20;;:6;:20;;;29689:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;29759:24;29793:6;29786:24;;;29819:4;29786:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29759:66;;29836:76;29866:6;29882:10;;;;;;;;;;;29895:16;29836:22;:76::i;:::-;29627:293;29580:340;:::o;22362:73::-;22393:42;22362:73;:::o;4189:100::-;4243:13;4276:5;4269:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4189:100;:::o;22229:37::-;;;:::o;6548:201::-;6631:4;6648:13;6664:12;:10;:12::i;:::-;6648:28;;6687:32;6696:5;6703:7;6712:6;6687:8;:32::i;:::-;6737:4;6730:11;;;6548:201;;;;:::o;5317:108::-;5378:7;5405:12;;5398:19;;5317:108;:::o;28824:346::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28945:6:::1;28940:1;28924:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28923:28;;;;:::i;:::-;28910:9;:41;;28902:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;29063:4;29058:1;29042:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29041:26;;;;:::i;:::-;29028:9;:39;;29020:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;29153:9;29135:15;:27;;;;28824:346:::0;:::o;29928:173::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30036:1:::1;30016:22;;:8;:22;;::::0;30008:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30085:8;30066:16;;:27;;;;;;;;;;;;;;;;;;29928:173:::0;:::o;7329:261::-;7426:4;7443:15;7461:12;:10;:12::i;:::-;7443:30;;7484:38;7500:4;7506:7;7515:6;7484:15;:38::i;:::-;7533:27;7543:4;7549:2;7553:6;7533:9;:27::i;:::-;7578:4;7571:11;;;7329:261;;;;;:::o;5160:92::-;5218:5;5243:1;5236:8;;5160:92;:::o;7999:238::-;8087:4;8104:13;8120:12;:10;:12::i;:::-;8104:28;;8143:64;8152:5;8159:7;8196:10;8168:25;8178:5;8185:7;8168:9;:25::i;:::-;:38;;;;:::i;:::-;8143:8;:64::i;:::-;8225:4;8218:11;;;7999:238;;;;:::o;21983:25::-;;;;;;;;;;;;;:::o;22150:32::-;;;;:::o;22191:31::-;;;:::o;29416:156::-;29464:12;29508:16;;;;;;;;;;;29500:30;;29538:21;29500:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29487:77;;;;;29453:119;29416:156::o;22017:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21859:26::-;;;;;;;;;;;;;:::o;21803:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;22072:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5488:127::-;5562:7;5589:9;:18;5599:7;5589:18;;;;;;;;;;;;;;;;5582:25;;5488:127;;;:::o;13102:150::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13211:1:::1;13174:40;;13195:6;;;;;;;;;;;13174:40;;;;;;;;;;;;13242:1;13225:6;;:19;;;;;;;;;;;;;;;;;;13102:150::o:0;30109:161::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30211:1:::1;30191:22;;:8;:22;;::::0;30183:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30254:8;30241:10;;:21;;;;;;;;;;;;;;;;;;30109:161:::0;:::o;29180:226::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29244:14:::1;;;;;;;;;;;29243:15;29235:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;29314:4;29297:14;;:21;;;;;;;;;;;;;;;;;;29343:12;29329:11;:26;;;;29386:12;29366:17;:32;;;;29180:226::o:0;12888:79::-;12926:7;12953:6;;;;;;;;;;;12946:13;;12888:79;:::o;4408:104::-;4464:13;4497:7;4490:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:104;:::o;22313:42::-;22350:5;22313:42;:::o;30278:339::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30374:15:::1;30408:13;30392;:29;;;;:::i;:::-;30374:47;;30452:4;30440:8;:16;;;;30432:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30513:13;30491:6;:19;;;:35;;;;;;;;;;;;;;;;;;30559:13;30537:6;:19;;;:35;;;;;;;;;;;;;;;;;;30601:8;30583:6;:15;;;:26;;;;;;;;;;;;;;;;;;30363:254;30278:339:::0;;:::o;8740:436::-;8833:4;8850:13;8866:12;:10;:12::i;:::-;8850:28;;8889:24;8916:25;8926:5;8933:7;8916:9;:25::i;:::-;8889:52;;8980:15;8960:16;:35;;8952:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9073:60;9082:5;9089:7;9117:15;9098:16;:34;9073:8;:60::i;:::-;9164:4;9157:11;;;;8740:436;;;;:::o;21945:31::-;;;;;;;;;;;;;:::o;5821:193::-;5900:4;5917:13;5933:12;:10;:12::i;:::-;5917:28;;5956;5966:5;5973:2;5977:6;5956:9;:28::i;:::-;6002:4;5995:11;;;5821:193;;;;:::o;22273:29::-;;;:::o;21894:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;30625:344::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30722:15:::1;30756:13;30740;:29;;;;:::i;:::-;30722:47;;30800:4;30788:8;:16;;;;30780:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;30863:13;30840:7;:20;;;:36;;;;;;;;;;;;;;;;;;30910:13;30887:7;:20;;;:36;;;;;;;;;;;;;;;;;;30953:8;30934:7;:16;;;:27;;;;;;;;;;;;;;;;;;30711:258;30625:344:::0;;:::o;28495:319::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28613:1:::1;28593:22;;:8;:22;;::::0;28585:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28671:4;28651:25;;:8;:25;;::::0;28643:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28743:9;28716:14;:24;28731:8;28716:24;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;28768:38;28786:8;28796:9;28768:38;;;;;;;:::i;:::-;;;;;;;;28495:319:::0;;:::o;22113:30::-;;;;:::o;22043:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22446:26::-;;;;:::o;6077:151::-;6166:7;6193:11;:18;6205:5;6193:18;;;;;;;;;;;;;;;:27;6212:7;6193:27;;;;;;;;;;;;;;;;6186:34;;6077:151;;;;:::o;13260:244::-;13025:12;:10;:12::i;:::-;13015:22;;:6;;;;;;;;;;;:22;;;13007:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13369:1:::1;13349:22;;:8;:22;;::::0;13341:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13459:8;13430:38;;13451:6;;;;;;;;;;;13430:38;;;;;;;;;;;;13488:8;13479:6;;:17;;;;;;;;;;;;;;;;;;13260:244:::0;:::o;19674:177::-;19757:86;19777:5;19807:23;;;19832:2;19836:5;19784:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19757:19;:86::i;:::-;19674:177;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;11501:346::-;11620:1;11603:19;;:5;:19;;;11595:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11701:1;11682:21;;:7;:21;;;11674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11785:6;11755:11;:18;11767:5;11755:18;;;;;;;;;;;;;;;:27;11774:7;11755:27;;;;;;;;;;;;;;;:36;;;;11823:7;11807:32;;11816:5;11807:32;;;11832:6;11807:32;;;;;;:::i;:::-;;;;;;;;11501:346;;;:::o;12138:419::-;12239:24;12266:25;12276:5;12283:7;12266:9;:25::i;:::-;12239:52;;12326:17;12306:16;:37;12302:248;;12388:6;12368:16;:26;;12360:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12472:51;12481:5;12488:7;12516:6;12497:16;:25;12472:8;:51::i;:::-;12302:248;12228:329;12138:419;;;:::o;24206:376::-;24352:14;:20;24367:4;24352:20;;;;;;;;;;;;;;;;;;;;;;;;;24351:21;:44;;;;;24377:14;:18;24392:2;24377:18;;;;;;;;;;;;;;;;;;;;;;;;;24376:19;24351:44;24348:183;;;24419:14;;;;;;;;;;;24411:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;24481:27;24491:4;24497:2;24501:6;24481:9;:27::i;:::-;24471:37;;;;;:::i;:::-;;;24348:183;24543:31;24559:4;24564:2;24567:6;24543:15;:31::i;:::-;24206:376;;;:::o;20072:333::-;20153:23;20179:69;20207:4;20179:69;;;;;;;;;;;;;;;;;20187:5;20179:27;;;;:69;;;;;:::i;:::-;20153:95;;20283:1;20263:10;:17;:21;20259:139;;;20320:10;20309:30;;;;;;;;;;;;:::i;:::-;20301:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20259:139;20142:263;20072:333;;:::o;24594:1328::-;24673:7;24725:15;;24697:24;24715:4;24697:9;:24::i;:::-;:43;;:63;;;;;24745:9;:15;24755:4;24745:15;;;;;;;;;;;;;;;;;;;;;;;;;24744:16;24697:63;:104;;;;;24789:12;24784:1;24764:17;;:21;;;;:::i;:::-;:37;;24697:104;24694:150;;;24818:14;:12;:14::i;:::-;24694:150;24864:11;24892:18;;:::i;:::-;24927:9;:13;24937:2;24927:13;;;;;;;;;;;;;;;;;;;;;;;;;24923:126;;;24964:7;24956:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24923:126;;;24992:9;:15;25002:4;24992:15;;;;;;;;;;;;;;;;;;;;;;;;;24989:60;;;25031:6;25023:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24989:60;24923:126;25089:1;25072:5;:14;;;:18;;;25069:815;;;25106:38;25147:12;25106:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25193:11;;25177:12;:27;25174:373;;25228:9;:15;25238:4;25228:15;;;;;;;;;;;;;;;;;;;;;;;;;25224:215;;;22350:5;25281:27;;25290:4;25281:6;:13;;;;:::i;:::-;:27;;;;:::i;:::-;25267:42;;25224:215;;;25339:9;:13;25349:2;25339:13;;;;;;;;;;;;;;;;;;;;;;;;;25335:104;;;22350:5;25391:27;;25400:4;25391:6;:13;;;;:::i;:::-;:27;;;;:::i;:::-;25377:42;;25335:104;25224:215;25174:373;;;22350:5;25493:37;;25502:5;:14;;;25493:23;;:6;:23;;;;:::i;:::-;:37;;;;:::i;:::-;25479:52;;25174:373;25653:3;25636:5;:14;;;25609:41;;25615:5;:18;;;25609:24;;:3;:24;;;;:::i;:::-;:41;;;;:::i;:::-;:47;;;;:::i;:::-;25561:18;:37;;:96;;;;;;;:::i;:::-;;;;;;;;;;;;;;25764:3;25747:5;:14;;;25720:41;;25726:5;:18;;;25720:24;;:3;:24;;;;:::i;:::-;:41;;;;:::i;:::-;:47;;;;:::i;:::-;25672:18;:37;;:96;;;;;;;:::i;:::-;;;;;;;;;;;;;;25798:18;25783:12;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25831:41;25847:4;25861;25868:3;25831:41;;:15;:41::i;:::-;25091:793;25069:815;25911:3;25904:10;;;;;;24594:1328;;;;;:::o;9646:705::-;9759:1;9743:18;;:4;:18;;;9735:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9836:1;9822:16;;:2;:16;;;9814:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9891:19;9913:9;:15;9923:4;9913:15;;;;;;;;;;;;;;;;9891:37;;9962:6;9947:11;:21;;9939:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10079:6;10065:11;:20;10047:9;:15;10057:4;10047:15;;;;;;;;;;;;;;;:38;;;;10282:6;10265:9;:13;10275:2;10265:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;10332:2;10317:26;;10326:4;10317:26;;;10336:6;10317:26;;;;;;:::i;:::-;;;;;;;;9724:627;9646:705;;;:::o;14177:229::-;14314:12;14346:52;14368:6;14376:4;14382:1;14385:12;14346:21;:52::i;:::-;14339:59;;14177:229;;;;;:::o;26310:2153::-;26355:23;26381:24;26399:4;26381:9;:24::i;:::-;26355:50;;26416:35;26454:12;26416:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26477:25;26542:15;:34;;;26505:15;:34;;;:71;;;;:::i;:::-;26477:99;;;;26619:1;26600:15;:20;:46;;;;26645:1;26624:17;:22;26600:46;26597:60;;;26649:7;;;;;26597:60;26708:1;26690:15;;:19;;;;:::i;:::-;26672:15;:37;26669:105;;;26761:1;26743:15;;:19;;;;:::i;:::-;26725:37;;26669:105;26826:1;26789:15;:34;;;:38;;;26786:787;;;26843:23;26924:17;26887:15;:34;;;26869:52;;:15;:52;;;;:::i;:::-;:72;;;;:::i;:::-;26843:98;;26956:17;26994:1;26976:15;:19;;;;:::i;:::-;26956:39;;27010:18;27049:9;27031:15;:27;;;;:::i;:::-;27010:48;;27073:22;27098:21;27073:46;;27134:27;27151:9;27134:16;:27::i;:::-;27176:18;27221:14;27197:21;:38;;;;:::i;:::-;27176:59;;27251:9;:25;;;27284:10;27318:4;27338:10;27363:1;27379;22393:42;27414:15;27251:189;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27476:15;27457:34;;;;;:::i;:::-;;;27527:15;:34;;;27506:55;;;;;;;:::i;:::-;;;26828:745;;;;;26786:787;27606:1;27588:15;:19;27585:685;;;27625:33;27642:15;27625:16;:33::i;:::-;27689:12;27720:18;27741:21;27720:42;;27777:22;27822:3;27816:2;27803:10;:15;;;;:::i;:::-;27802:23;;;;:::i;:::-;27777:48;;27861:1;27844:14;:18;27840:174;;;27893:16;;;;;;;;;;;:21;;27940:14;27978:5;27893:109;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27879:123;;;;;27840:174;28026:24;28053:21;28026:48;;28108:1;28089:16;:20;28085:172;;;28140:10;;;;;;;;;;;:15;;28181:16;28221:5;28140:105;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28126:119;;;;;28085:172;27608:662;;;;27585:685;28319:1;28282:15;:34;;:38;;;;;;;;;;;28368:1;28331:15;:34;;:38;;;;;;;;;;;28397:15;28382:12;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28443:12;28423:17;:32;;;;26342:2121;;;26310:2153;:::o;15297:455::-;15467:12;15525:5;15500:21;:30;;15492:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;15585:12;15599:23;15626:6;:11;;15645:5;15652:4;15626:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15584:73;;;;15675:69;15702:6;15710:7;15719:10;15731:12;15675:26;:69::i;:::-;15668:76;;;;15297:455;;;;;;:::o;25930:372::-;25995:21;26033:1;26019:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25995:40;;26064:4;26046;26051:1;26046:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26090:4;26080;26085:1;26080:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;26107:9;:60;;;26182:8;26205:1;26221:4;26248;26268:15;26107:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25982:320;25930:372;:::o;17870:644::-;18055:12;18084:7;18080:427;;;18133:1;18112:10;:17;:22;18108:290;;18330:18;18341:6;18330:10;:18::i;:::-;18322:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18108:290;18419:10;18412:17;;;;18080:427;18462:33;18470:10;18482:12;18462:7;:33::i;:::-;17870:644;;;;;;;:::o;13534:115::-;13594:4;13640:1;13618:7;:19;;;:23;13611:30;;13534:115;;;:::o;19056:552::-;19237:1;19217:10;:17;:21;19213:388;;;19449:10;19443:17;19506:15;19493:10;19489:2;19485:19;19478:44;19213:388;19576:12;19569:20;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:118::-;1263:24;1281:5;1263:24;:::i;:::-;1258:3;1251:37;1176:118;;:::o;1300:222::-;1393:4;1431:2;1420:9;1416:18;1408:26;;1444:71;1512:1;1501:9;1497:17;1488:6;1444:71;:::i;:::-;1300:222;;;;:::o;1528:99::-;1580:6;1614:5;1608:12;1598:22;;1528:99;;;:::o;1633:169::-;1717:11;1751:6;1746:3;1739:19;1791:4;1786:3;1782:14;1767:29;;1633:169;;;;:::o;1808:139::-;1897:6;1892:3;1887;1881:23;1938:1;1929:6;1924:3;1920:16;1913:27;1808:139;;;:::o;1953:102::-;1994:6;2045:2;2041:7;2036:2;2029:5;2025:14;2021:28;2011:38;;1953:102;;;:::o;2061:377::-;2149:3;2177:39;2210:5;2177:39;:::i;:::-;2232:71;2296:6;2291:3;2232:71;:::i;:::-;2225:78;;2312:65;2370:6;2365:3;2358:4;2351:5;2347:16;2312:65;:::i;:::-;2402:29;2424:6;2402:29;:::i;:::-;2397:3;2393:39;2386:46;;2153:285;2061:377;;;;:::o;2444:313::-;2557:4;2595:2;2584:9;2580:18;2572:26;;2644:9;2638:4;2634:20;2630:1;2619:9;2615:17;2608:47;2672:78;2745:4;2736:6;2672:78;:::i;:::-;2664:86;;2444:313;;;;:::o;2763:60::-;2791:3;2812:5;2805:12;;2763:60;;;:::o;2829:142::-;2879:9;2912:53;2930:34;2939:24;2957:5;2939:24;:::i;:::-;2930:34;:::i;:::-;2912:53;:::i;:::-;2899:66;;2829:142;;;:::o;2977:126::-;3027:9;3060:37;3091:5;3060:37;:::i;:::-;3047:50;;2977:126;;;:::o;3109:145::-;3178:9;3211:37;3242:5;3211:37;:::i;:::-;3198:50;;3109:145;;;:::o;3260:169::-;3366:56;3416:5;3366:56;:::i;:::-;3361:3;3354:69;3260:169;;:::o;3435:260::-;3547:4;3585:2;3574:9;3570:18;3562:26;;3598:90;3685:1;3674:9;3670:17;3661:6;3598:90;:::i;:::-;3435:260;;;;:::o;3701:77::-;3738:7;3767:5;3756:16;;3701:77;;;:::o;3784:122::-;3857:24;3875:5;3857:24;:::i;:::-;3850:5;3847:35;3837:63;;3896:1;3893;3886:12;3837:63;3784:122;:::o;3912:139::-;3958:5;3996:6;3983:20;3974:29;;4012:33;4039:5;4012:33;:::i;:::-;3912:139;;;;:::o;4057:474::-;4125:6;4133;4182:2;4170:9;4161:7;4157:23;4153:32;4150:119;;;4188:79;;:::i;:::-;4150:119;4308:1;4333:53;4378:7;4369:6;4358:9;4354:22;4333:53;:::i;:::-;4323:63;;4279:117;4435:2;4461:53;4506:7;4497:6;4486:9;4482:22;4461:53;:::i;:::-;4451:63;;4406:118;4057:474;;;;;:::o;4537:90::-;4571:7;4614:5;4607:13;4600:21;4589:32;;4537:90;;;:::o;4633:109::-;4714:21;4729:5;4714:21;:::i;:::-;4709:3;4702:34;4633:109;;:::o;4748:210::-;4835:4;4873:2;4862:9;4858:18;4850:26;;4886:65;4948:1;4937:9;4933:17;4924:6;4886:65;:::i;:::-;4748:210;;;;:::o;4964:118::-;5051:24;5069:5;5051:24;:::i;:::-;5046:3;5039:37;4964:118;;:::o;5088:222::-;5181:4;5219:2;5208:9;5204:18;5196:26;;5232:71;5300:1;5289:9;5285:17;5276:6;5232:71;:::i;:::-;5088:222;;;;:::o;5316:329::-;5375:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5550:1;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5521:117;5316:329;;;;:::o;5651:619::-;5728:6;5736;5744;5793:2;5781:9;5772:7;5768:23;5764:32;5761:119;;;5799:79;;:::i;:::-;5761:119;5919:1;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5890:117;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;6174:2;6200:53;6245:7;6236:6;6225:9;6221:22;6200:53;:::i;:::-;6190:63;;6145:118;5651:619;;;;;:::o;6276:86::-;6311:7;6351:4;6344:5;6340:16;6329:27;;6276:86;;;:::o;6368:112::-;6451:22;6467:5;6451:22;:::i;:::-;6446:3;6439:35;6368:112;;:::o;6486:214::-;6575:4;6613:2;6602:9;6598:18;6590:26;;6626:67;6690:1;6679:9;6675:17;6666:6;6626:67;:::i;:::-;6486:214;;;;:::o;6706:101::-;6742:7;6782:18;6775:5;6771:30;6760:41;;6706:101;;;:::o;6813:115::-;6898:23;6915:5;6898:23;:::i;:::-;6893:3;6886:36;6813:115;;:::o;6934:430::-;7077:4;7115:2;7104:9;7100:18;7092:26;;7128:69;7194:1;7183:9;7179:17;7170:6;7128:69;:::i;:::-;7207:70;7273:2;7262:9;7258:18;7249:6;7207:70;:::i;:::-;7287;7353:2;7342:9;7338:18;7329:6;7287:70;:::i;:::-;6934:430;;;;;;:::o;7370:105::-;7406:7;7446:22;7439:5;7435:34;7424:45;;7370:105;;;:::o;7481:115::-;7566:23;7583:5;7566:23;:::i;:::-;7561:3;7554:36;7481:115;;:::o;7602:422::-;7741:4;7779:2;7768:9;7764:18;7756:26;;7792:69;7858:1;7847:9;7843:17;7834:6;7792:69;:::i;:::-;7871:70;7937:2;7926:9;7922:18;7913:6;7871:70;:::i;:::-;7951:66;8013:2;8002:9;7998:18;7989:6;7951:66;:::i;:::-;7602:422;;;;;;:::o;8030:218::-;8121:4;8159:2;8148:9;8144:18;8136:26;;8172:69;8238:1;8227:9;8223:17;8214:6;8172:69;:::i;:::-;8030:218;;;;:::o;8254:120::-;8326:23;8343:5;8326:23;:::i;:::-;8319:5;8316:34;8306:62;;8364:1;8361;8354:12;8306:62;8254:120;:::o;8380:137::-;8425:5;8463:6;8450:20;8441:29;;8479:32;8505:5;8479:32;:::i;:::-;8380:137;;;;:::o;8523:470::-;8589:6;8597;8646:2;8634:9;8625:7;8621:23;8617:32;8614:119;;;8652:79;;:::i;:::-;8614:119;8772:1;8797:52;8841:7;8832:6;8821:9;8817:22;8797:52;:::i;:::-;8787:62;;8743:116;8898:2;8924:52;8968:7;8959:6;8948:9;8944:22;8924:52;:::i;:::-;8914:62;;8869:117;8523:470;;;;;:::o;8999:116::-;9069:21;9084:5;9069:21;:::i;:::-;9062:5;9059:32;9049:60;;9105:1;9102;9095:12;9049:60;8999:116;:::o;9121:133::-;9164:5;9202:6;9189:20;9180:29;;9218:30;9242:5;9218:30;:::i;:::-;9121:133;;;;:::o;9260:468::-;9325:6;9333;9382:2;9370:9;9361:7;9357:23;9353:32;9350:119;;;9388:79;;:::i;:::-;9350:119;9508:1;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9479:117;9635:2;9661:50;9703:7;9694:6;9683:9;9679:22;9661:50;:::i;:::-;9651:60;;9606:115;9260:468;;;;;:::o;9734:474::-;9802:6;9810;9859:2;9847:9;9838:7;9834:23;9830:32;9827:119;;;9865:79;;:::i;:::-;9827:119;9985:1;10010:53;10055:7;10046:6;10035:9;10031:22;10010:53;:::i;:::-;10000:63;;9956:117;10112:2;10138:53;10183:7;10174:6;10163:9;10159:22;10138:53;:::i;:::-;10128:63;;10083:118;9734:474;;;;;:::o;10214:157::-;10354:9;10350:1;10342:6;10338:14;10331:33;10214:157;:::o;10377:365::-;10519:3;10540:66;10604:1;10599:3;10540:66;:::i;:::-;10533:73;;10615:93;10704:3;10615:93;:::i;:::-;10733:2;10728:3;10724:12;10717:19;;10377:365;;;:::o;10748:419::-;10914:4;10952:2;10941:9;10937:18;10929:26;;11001:9;10995:4;10991:20;10987:1;10976:9;10972:17;10965:47;11029:131;11155:4;11029:131;:::i;:::-;11021:139;;10748:419;;;:::o;11173:176::-;11313:28;11309:1;11301:6;11297:14;11290:52;11173:176;:::o;11355:366::-;11497:3;11518:67;11582:2;11577:3;11518:67;:::i;:::-;11511:74;;11594:93;11683:3;11594:93;:::i;:::-;11712:2;11707:3;11703:12;11696:19;;11355:366;;;:::o;11727:419::-;11893:4;11931:2;11920:9;11916:18;11908:26;;11980:9;11974:4;11970:20;11966:1;11955:9;11951:17;11944:47;12008:131;12134:4;12008:131;:::i;:::-;12000:139;;11727:419;;;:::o;12152:143::-;12209:5;12240:6;12234:13;12225:22;;12256:33;12283:5;12256:33;:::i;:::-;12152:143;;;;:::o;12301:351::-;12371:6;12420:2;12408:9;12399:7;12395:23;12391:32;12388:119;;;12426:79;;:::i;:::-;12388:119;12546:1;12571:64;12627:7;12618:6;12607:9;12603:22;12571:64;:::i;:::-;12561:74;;12517:128;12301:351;;;;:::o;12658:180::-;12706:77;12703:1;12696:88;12803:4;12800:1;12793:15;12827:4;12824:1;12817:15;12844:320;12888:6;12925:1;12919:4;12915:12;12905:22;;12972:1;12966:4;12962:12;12993:18;12983:81;;13049:4;13041:6;13037:17;13027:27;;12983:81;13111:2;13103:6;13100:14;13080:18;13077:38;13074:84;;13130:18;;:::i;:::-;13074:84;12895:269;12844:320;;;:::o;13170:182::-;13310:34;13306:1;13298:6;13294:14;13287:58;13170:182;:::o;13358:366::-;13500:3;13521:67;13585:2;13580:3;13521:67;:::i;:::-;13514:74;;13597:93;13686:3;13597:93;:::i;:::-;13715:2;13710:3;13706:12;13699:19;;13358:366;;;:::o;13730:419::-;13896:4;13934:2;13923:9;13919:18;13911:26;;13983:9;13977:4;13973:20;13969:1;13958:9;13954:17;13947:47;14011:131;14137:4;14011:131;:::i;:::-;14003:139;;13730:419;;;:::o;14155:180::-;14203:77;14200:1;14193:88;14300:4;14297:1;14290:15;14324:4;14321:1;14314:15;14341:410;14381:7;14404:20;14422:1;14404:20;:::i;:::-;14399:25;;14438:20;14456:1;14438:20;:::i;:::-;14433:25;;14493:1;14490;14486:9;14515:30;14533:11;14515:30;:::i;:::-;14504:41;;14694:1;14685:7;14681:15;14678:1;14675:22;14655:1;14648:9;14628:83;14605:139;;14724:18;;:::i;:::-;14605:139;14389:362;14341:410;;;;:::o;14757:180::-;14805:77;14802:1;14795:88;14902:4;14899:1;14892:15;14926:4;14923:1;14916:15;14943:185;14983:1;15000:20;15018:1;15000:20;:::i;:::-;14995:25;;15034:20;15052:1;15034:20;:::i;:::-;15029:25;;15073:1;15063:35;;15078:18;;:::i;:::-;15063:35;15120:1;15117;15113:9;15108:14;;14943:185;;;;:::o;15134:240::-;15274:34;15270:1;15262:6;15258:14;15251:58;15343:23;15338:2;15330:6;15326:15;15319:48;15134:240;:::o;15380:366::-;15522:3;15543:67;15607:2;15602:3;15543:67;:::i;:::-;15536:74;;15619:93;15708:3;15619:93;:::i;:::-;15737:2;15732:3;15728:12;15721:19;;15380:366;;;:::o;15752:419::-;15918:4;15956:2;15945:9;15941:18;15933:26;;16005:9;15999:4;15995:20;15991:1;15980:9;15976:17;15969:47;16033:131;16159:4;16033:131;:::i;:::-;16025:139;;15752:419;;;:::o;16177:239::-;16317:34;16313:1;16305:6;16301:14;16294:58;16386:22;16381:2;16373:6;16369:15;16362:47;16177:239;:::o;16422:366::-;16564:3;16585:67;16649:2;16644:3;16585:67;:::i;:::-;16578:74;;16661:93;16750:3;16661:93;:::i;:::-;16779:2;16774:3;16770:12;16763:19;;16422:366;;;:::o;16794:419::-;16960:4;16998:2;16987:9;16983:18;16975:26;;17047:9;17041:4;17037:20;17033:1;17022:9;17018:17;17011:47;17075:131;17201:4;17075:131;:::i;:::-;17067:139;;16794:419;;;:::o;17219:162::-;17359:14;17355:1;17347:6;17343:14;17336:38;17219:162;:::o;17387:366::-;17529:3;17550:67;17614:2;17609:3;17550:67;:::i;:::-;17543:74;;17626:93;17715:3;17626:93;:::i;:::-;17744:2;17739:3;17735:12;17728:19;;17387:366;;;:::o;17759:419::-;17925:4;17963:2;17952:9;17948:18;17940:26;;18012:9;18006:4;18002:20;17998:1;17987:9;17983:17;17976:47;18040:131;18166:4;18040:131;:::i;:::-;18032:139;;17759:419;;;:::o;18184:191::-;18224:3;18243:20;18261:1;18243:20;:::i;:::-;18238:25;;18277:20;18295:1;18277:20;:::i;:::-;18272:25;;18320:1;18317;18313:9;18306:16;;18341:3;18338:1;18335:10;18332:36;;;18348:18;;:::i;:::-;18332:36;18184:191;;;;:::o;18381:147::-;18482:11;18519:3;18504:18;;18381:147;;;;:::o;18534:114::-;;:::o;18654:398::-;18813:3;18834:83;18915:1;18910:3;18834:83;:::i;:::-;18827:90;;18926:93;19015:3;18926:93;:::i;:::-;19044:1;19039:3;19035:11;19028:18;;18654:398;;;:::o;19058:379::-;19242:3;19264:147;19407:3;19264:147;:::i;:::-;19257:154;;19428:3;19421:10;;19058:379;;;:::o;19443:173::-;19583:25;19579:1;19571:6;19567:14;19560:49;19443:173;:::o;19622:366::-;19764:3;19785:67;19849:2;19844:3;19785:67;:::i;:::-;19778:74;;19861:93;19950:3;19861:93;:::i;:::-;19979:2;19974:3;19970:12;19963:19;;19622:366;;;:::o;19994:419::-;20160:4;20198:2;20187:9;20183:18;20175:26;;20247:9;20241:4;20237:20;20233:1;20222:9;20218:17;20211:47;20275:131;20401:4;20275:131;:::i;:::-;20267:139;;19994:419;;;:::o;20419:205::-;20458:3;20477:19;20494:1;20477:19;:::i;:::-;20472:24;;20510:19;20527:1;20510:19;:::i;:::-;20505:24;;20552:1;20549;20545:9;20538:16;;20575:18;20570:3;20567:27;20564:53;;;20597:18;;:::i;:::-;20564:53;20419:205;;;;:::o;20630:169::-;20770:21;20766:1;20758:6;20754:14;20747:45;20630:169;:::o;20805:366::-;20947:3;20968:67;21032:2;21027:3;20968:67;:::i;:::-;20961:74;;21044:93;21133:3;21044:93;:::i;:::-;21162:2;21157:3;21153:12;21146:19;;20805:366;;;:::o;21177:419::-;21343:4;21381:2;21370:9;21366:18;21358:26;;21430:9;21424:4;21420:20;21416:1;21405:9;21401:17;21394:47;21458:131;21584:4;21458:131;:::i;:::-;21450:139;;21177:419;;;:::o;21602:224::-;21742:34;21738:1;21730:6;21726:14;21719:58;21811:7;21806:2;21798:6;21794:15;21787:32;21602:224;:::o;21832:366::-;21974:3;21995:67;22059:2;22054:3;21995:67;:::i;:::-;21988:74;;22071:93;22160:3;22071:93;:::i;:::-;22189:2;22184:3;22180:12;22173:19;;21832:366;;;:::o;22204:419::-;22370:4;22408:2;22397:9;22393:18;22385:26;;22457:9;22451:4;22447:20;22443:1;22432:9;22428:17;22421:47;22485:131;22611:4;22485:131;:::i;:::-;22477:139;;22204:419;;;:::o;22629:170::-;22769:22;22765:1;22757:6;22753:14;22746:46;22629:170;:::o;22805:366::-;22947:3;22968:67;23032:2;23027:3;22968:67;:::i;:::-;22961:74;;23044:93;23133:3;23044:93;:::i;:::-;23162:2;23157:3;23153:12;23146:19;;22805:366;;;:::o;23177:419::-;23343:4;23381:2;23370:9;23366:18;23358:26;;23430:9;23424:4;23420:20;23416:1;23405:9;23401:17;23394:47;23458:131;23584:4;23458:131;:::i;:::-;23450:139;;23177:419;;;:::o;23602:162::-;23742:14;23738:1;23730:6;23726:14;23719:38;23602:162;:::o;23770:366::-;23912:3;23933:67;23997:2;23992:3;23933:67;:::i;:::-;23926:74;;24009:93;24098:3;24009:93;:::i;:::-;24127:2;24122:3;24118:12;24111:19;;23770:366;;;:::o;24142:419::-;24308:4;24346:2;24335:9;24331:18;24323:26;;24395:9;24389:4;24385:20;24381:1;24370:9;24366:17;24359:47;24423:131;24549:4;24423:131;:::i;:::-;24415:139;;24142:419;;;:::o;24567:174::-;24707:26;24703:1;24695:6;24691:14;24684:50;24567:174;:::o;24747:366::-;24889:3;24910:67;24974:2;24969:3;24910:67;:::i;:::-;24903:74;;24986:93;25075:3;24986:93;:::i;:::-;25104:2;25099:3;25095:12;25088:19;;24747:366;;;:::o;25119:419::-;25285:4;25323:2;25312:9;25308:18;25300:26;;25372:9;25366:4;25362:20;25358:1;25347:9;25343:17;25336:47;25400:131;25526:4;25400:131;:::i;:::-;25392:139;;25119:419;;;:::o;25544:320::-;25659:4;25697:2;25686:9;25682:18;25674:26;;25710:71;25778:1;25767:9;25763:17;25754:6;25710:71;:::i;:::-;25791:66;25853:2;25842:9;25838:18;25829:6;25791:66;:::i;:::-;25544:320;;;;;:::o;25870:225::-;26010:34;26006:1;25998:6;25994:14;25987:58;26079:8;26074:2;26066:6;26062:15;26055:33;25870:225;:::o;26101:366::-;26243:3;26264:67;26328:2;26323:3;26264:67;:::i;:::-;26257:74;;26340:93;26429:3;26340:93;:::i;:::-;26458:2;26453:3;26449:12;26442:19;;26101:366;;;:::o;26473:419::-;26639:4;26677:2;26666:9;26662:18;26654:26;;26726:9;26720:4;26716:20;26712:1;26701:9;26697:17;26690:47;26754:131;26880:4;26754:131;:::i;:::-;26746:139;;26473:419;;;:::o;26898:332::-;27019:4;27057:2;27046:9;27042:18;27034:26;;27070:71;27138:1;27127:9;27123:17;27114:6;27070:71;:::i;:::-;27151:72;27219:2;27208:9;27204:18;27195:6;27151:72;:::i;:::-;26898:332;;;;;:::o;27236:223::-;27376:34;27372:1;27364:6;27360:14;27353:58;27445:6;27440:2;27432:6;27428:15;27421:31;27236:223;:::o;27465:366::-;27607:3;27628:67;27692:2;27687:3;27628:67;:::i;:::-;27621:74;;27704:93;27793:3;27704:93;:::i;:::-;27822:2;27817:3;27813:12;27806:19;;27465:366;;;:::o;27837:419::-;28003:4;28041:2;28030:9;28026:18;28018:26;;28090:9;28084:4;28080:20;28076:1;28065:9;28061:17;28054:47;28118:131;28244:4;28118:131;:::i;:::-;28110:139;;27837:419;;;:::o;28262:221::-;28402:34;28398:1;28390:6;28386:14;28379:58;28471:4;28466:2;28458:6;28454:15;28447:29;28262:221;:::o;28489:366::-;28631:3;28652:67;28716:2;28711:3;28652:67;:::i;:::-;28645:74;;28728:93;28817:3;28728:93;:::i;:::-;28846:2;28841:3;28837:12;28830:19;;28489:366;;;:::o;28861:419::-;29027:4;29065:2;29054:9;29050:18;29042:26;;29114:9;29108:4;29104:20;29100:1;29089:9;29085:17;29078:47;29142:131;29268:4;29142:131;:::i;:::-;29134:139;;28861:419;;;:::o;29286:179::-;29426:31;29422:1;29414:6;29410:14;29403:55;29286:179;:::o;29471:366::-;29613:3;29634:67;29698:2;29693:3;29634:67;:::i;:::-;29627:74;;29710:93;29799:3;29710:93;:::i;:::-;29828:2;29823:3;29819:12;29812:19;;29471:366;;;:::o;29843:419::-;30009:4;30047:2;30036:9;30032:18;30024:26;;30096:9;30090:4;30086:20;30082:1;30071:9;30067:17;30060:47;30124:131;30250:4;30124:131;:::i;:::-;30116:139;;29843:419;;;:::o;30268:168::-;30408:20;30404:1;30396:6;30392:14;30385:44;30268:168;:::o;30442:366::-;30584:3;30605:67;30669:2;30664:3;30605:67;:::i;:::-;30598:74;;30681:93;30770:3;30681:93;:::i;:::-;30799:2;30794:3;30790:12;30783:19;;30442:366;;;:::o;30814:419::-;30980:4;31018:2;31007:9;31003:18;30995:26;;31067:9;31061:4;31057:20;31053:1;31042:9;31038:17;31031:47;31095:131;31221:4;31095:131;:::i;:::-;31087:139;;30814:419;;;:::o;31239:194::-;31279:4;31299:20;31317:1;31299:20;:::i;:::-;31294:25;;31333:20;31351:1;31333:20;:::i;:::-;31328:25;;31377:1;31374;31370:9;31362:17;;31401:1;31395:4;31392:11;31389:37;;;31406:18;;:::i;:::-;31389:37;31239:194;;;;:::o;31439:137::-;31493:5;31524:6;31518:13;31509:22;;31540:30;31564:5;31540:30;:::i;:::-;31439:137;;;;:::o;31582:345::-;31649:6;31698:2;31686:9;31677:7;31673:23;31669:32;31666:119;;;31704:79;;:::i;:::-;31666:119;31824:1;31849:61;31902:7;31893:6;31882:9;31878:22;31849:61;:::i;:::-;31839:71;;31795:125;31582:345;;;;:::o;31933:229::-;32073:34;32069:1;32061:6;32057:14;32050:58;32142:12;32137:2;32129:6;32125:15;32118:37;31933:229;:::o;32168:366::-;32310:3;32331:67;32395:2;32390:3;32331:67;:::i;:::-;32324:74;;32407:93;32496:3;32407:93;:::i;:::-;32525:2;32520:3;32516:12;32509:19;;32168:366;;;:::o;32540:419::-;32706:4;32744:2;32733:9;32729:18;32721:26;;32793:9;32787:4;32783:20;32779:1;32768:9;32764:17;32757:47;32821:131;32947:4;32821:131;:::i;:::-;32813:139;;32540:419;;;:::o;32965:118::-;33002:7;33042:34;33035:5;33031:46;33020:57;;32965:118;;;:::o;33089:279::-;33129:7;33152:20;33170:1;33152:20;:::i;:::-;33147:25;;33186:20;33204:1;33186:20;:::i;:::-;33181:25;;33241:1;33238;33234:9;33263:30;33281:11;33263:30;:::i;:::-;33252:41;;33325:11;33316:7;33313:24;33303:58;;33341:18;;:::i;:::-;33303:58;33137:231;33089:279;;;;:::o;33374:185::-;33414:1;33431:20;33449:1;33431:20;:::i;:::-;33426:25;;33465:20;33483:1;33465:20;:::i;:::-;33460:25;;33504:1;33494:35;;33509:18;;:::i;:::-;33494:35;33551:1;33548;33544:9;33539:14;;33374:185;;;;:::o;33565:209::-;33604:3;33623:19;33640:1;33623:19;:::i;:::-;33618:24;;33656:19;33673:1;33656:19;:::i;:::-;33651:24;;33698:1;33695;33691:9;33684:16;;33721:22;33716:3;33713:31;33710:57;;;33747:18;;:::i;:::-;33710:57;33565:209;;;;:::o;33780:224::-;33920:34;33916:1;33908:6;33904:14;33897:58;33989:7;33984:2;33976:6;33972:15;33965:32;33780:224;:::o;34010:366::-;34152:3;34173:67;34237:2;34232:3;34173:67;:::i;:::-;34166:74;;34249:93;34338:3;34249:93;:::i;:::-;34367:2;34362:3;34358:12;34351:19;;34010:366;;;:::o;34382:419::-;34548:4;34586:2;34575:9;34571:18;34563:26;;34635:9;34629:4;34625:20;34621:1;34610:9;34606:17;34599:47;34663:131;34789:4;34663:131;:::i;:::-;34655:139;;34382:419;;;:::o;34807:222::-;34947:34;34943:1;34935:6;34931:14;34924:58;35016:5;35011:2;35003:6;34999:15;34992:30;34807:222;:::o;35035:366::-;35177:3;35198:67;35262:2;35257:3;35198:67;:::i;:::-;35191:74;;35274:93;35363:3;35274:93;:::i;:::-;35392:2;35387:3;35383:12;35376:19;;35035:366;;;:::o;35407:419::-;35573:4;35611:2;35600:9;35596:18;35588:26;;35660:9;35654:4;35650:20;35646:1;35635:9;35631:17;35624:47;35688:131;35814:4;35688:131;:::i;:::-;35680:139;;35407:419;;;:::o;35832:225::-;35972:34;35968:1;35960:6;35956:14;35949:58;36041:8;36036:2;36028:6;36024:15;36017:33;35832:225;:::o;36063:366::-;36205:3;36226:67;36290:2;36285:3;36226:67;:::i;:::-;36219:74;;36302:93;36391:3;36302:93;:::i;:::-;36420:2;36415:3;36411:12;36404:19;;36063:366;;;:::o;36435:419::-;36601:4;36639:2;36628:9;36624:18;36616:26;;36688:9;36682:4;36678:20;36674:1;36663:9;36659:17;36652:47;36716:131;36842:4;36716:131;:::i;:::-;36708:139;;36435:419;;;:::o;36860:85::-;36905:7;36934:5;36923:16;;36860:85;;;:::o;36951:158::-;37009:9;37042:61;37060:42;37069:32;37095:5;37069:32;:::i;:::-;37060:42;:::i;:::-;37042:61;:::i;:::-;37029:74;;36951:158;;;:::o;37115:147::-;37210:45;37249:5;37210:45;:::i;:::-;37205:3;37198:58;37115:147;;:::o;37268:807::-;37517:4;37555:3;37544:9;37540:19;37532:27;;37569:71;37637:1;37626:9;37622:17;37613:6;37569:71;:::i;:::-;37650:72;37718:2;37707:9;37703:18;37694:6;37650:72;:::i;:::-;37732:80;37808:2;37797:9;37793:18;37784:6;37732:80;:::i;:::-;37822;37898:2;37887:9;37883:18;37874:6;37822:80;:::i;:::-;37912:73;37980:3;37969:9;37965:19;37956:6;37912:73;:::i;:::-;37995;38063:3;38052:9;38048:19;38039:6;37995:73;:::i;:::-;37268:807;;;;;;;;;:::o;38081:663::-;38169:6;38177;38185;38234:2;38222:9;38213:7;38209:23;38205:32;38202:119;;;38240:79;;:::i;:::-;38202:119;38360:1;38385:64;38441:7;38432:6;38421:9;38417:22;38385:64;:::i;:::-;38375:74;;38331:128;38498:2;38524:64;38580:7;38571:6;38560:9;38556:22;38524:64;:::i;:::-;38514:74;;38469:129;38637:2;38663:64;38719:7;38710:6;38699:9;38695:22;38663:64;:::i;:::-;38653:74;;38608:129;38081:663;;;;;:::o;38750:225::-;38890:34;38886:1;38878:6;38874:14;38867:58;38959:8;38954:2;38946:6;38942:15;38935:33;38750:225;:::o;38981:366::-;39123:3;39144:67;39208:2;39203:3;39144:67;:::i;:::-;39137:74;;39220:93;39309:3;39220:93;:::i;:::-;39338:2;39333:3;39329:12;39322:19;;38981:366;;;:::o;39353:419::-;39519:4;39557:2;39546:9;39542:18;39534:26;;39606:9;39600:4;39596:20;39592:1;39581:9;39577:17;39570:47;39634:131;39760:4;39634:131;:::i;:::-;39626:139;;39353:419;;;:::o;39778:98::-;39829:6;39863:5;39857:12;39847:22;;39778:98;;;:::o;39882:386::-;39986:3;40014:38;40046:5;40014:38;:::i;:::-;40068:88;40149:6;40144:3;40068:88;:::i;:::-;40061:95;;40165:65;40223:6;40218:3;40211:4;40204:5;40200:16;40165:65;:::i;:::-;40255:6;40250:3;40246:16;40239:23;;39990:278;39882:386;;;;:::o;40274:271::-;40404:3;40426:93;40515:3;40506:6;40426:93;:::i;:::-;40419:100;;40536:3;40529:10;;40274:271;;;;:::o;40551:180::-;40599:77;40596:1;40589:88;40696:4;40693:1;40686:15;40720:4;40717:1;40710:15;40737:180;40785:77;40782:1;40775:88;40882:4;40879:1;40872:15;40906:4;40903:1;40896:15;40923:114;40990:6;41024:5;41018:12;41008:22;;40923:114;;;:::o;41043:184::-;41142:11;41176:6;41171:3;41164:19;41216:4;41211:3;41207:14;41192:29;;41043:184;;;;:::o;41233:132::-;41300:4;41323:3;41315:11;;41353:4;41348:3;41344:14;41336:22;;41233:132;;;:::o;41371:108::-;41448:24;41466:5;41448:24;:::i;:::-;41443:3;41436:37;41371:108;;:::o;41485:179::-;41554:10;41575:46;41617:3;41609:6;41575:46;:::i;:::-;41653:4;41648:3;41644:14;41630:28;;41485:179;;;;:::o;41670:113::-;41740:4;41772;41767:3;41763:14;41755:22;;41670:113;;;:::o;41819:732::-;41938:3;41967:54;42015:5;41967:54;:::i;:::-;42037:86;42116:6;42111:3;42037:86;:::i;:::-;42030:93;;42147:56;42197:5;42147:56;:::i;:::-;42226:7;42257:1;42242:284;42267:6;42264:1;42261:13;42242:284;;;42343:6;42337:13;42370:63;42429:3;42414:13;42370:63;:::i;:::-;42363:70;;42456:60;42509:6;42456:60;:::i;:::-;42446:70;;42302:224;42289:1;42286;42282:9;42277:14;;42242:284;;;42246:14;42542:3;42535:10;;41943:608;;;41819:732;;;;:::o;42557:831::-;42820:4;42858:3;42847:9;42843:19;42835:27;;42872:71;42940:1;42929:9;42925:17;42916:6;42872:71;:::i;:::-;42953:80;43029:2;43018:9;43014:18;43005:6;42953:80;:::i;:::-;43080:9;43074:4;43070:20;43065:2;43054:9;43050:18;43043:48;43108:108;43211:4;43202:6;43108:108;:::i;:::-;43100:116;;43226:72;43294:2;43283:9;43279:18;43270:6;43226:72;:::i;:::-;43308:73;43376:3;43365:9;43361:19;43352:6;43308:73;:::i;:::-;42557:831;;;;;;;;:::o;43394:179::-;43534:31;43530:1;43522:6;43518:14;43511:55;43394:179;:::o;43579:366::-;43721:3;43742:67;43806:2;43801:3;43742:67;:::i;:::-;43735:74;;43818:93;43907:3;43818:93;:::i;:::-;43936:2;43931:3;43927:12;43920:19;;43579:366;;;:::o;43951:419::-;44117:4;44155:2;44144:9;44140:18;44132:26;;44204:9;44198:4;44194:20;44190:1;44179:9;44175:17;44168:47;44232:131;44358:4;44232:131;:::i;:::-;44224:139;;43951:419;;;:::o
Swarm Source
ipfs://530ddb4a8c0ed5dd99e4da9c75ab719cc6f95d1e41cc6c55656a9de06ee294de
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)