ERC-20
Overview
Max Total Supply
10,000 Ordinals
Holders
7
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Ordinals
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-10 */ /** ░██████░░██████░░██████░░██░███░░░░██░░█████░░██░░░░░░███████░ ██░░░░██░██░░░██░██░░░██░██░████░░░██░██░░░██░██░░░░░░██░░░░░░ ██░░░░██░██████░░██░░░██░██░██░██░░██░███████░██░░░░░░███████░ ██░░░░██░██░░░██░██░░░██░██░██░░██░██░██░░░██░██░░░░░░░░░░░██░ ░██████░░██░░░██░██████░░██░██░░░████░██░░░██░███████░███████░ */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ 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}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * 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 value {ERC20} uses, unless this function is * 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 18; } /** * @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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, 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"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), 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 Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) internal { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Ordinals is ERC20, Ownable, Pausable { uint256 private initialSupply; uint256 private denominator = 100; uint256 private swapThreshold = 0.0000005 ether; // The contract will only swap to ETH, once the fee tokens reach the specified threshold uint256 private devTaxBuy; uint256 private marketingTaxBuy; uint256 private liquidityTaxBuy; uint256 private charityTaxBuy; uint256 private devTaxSell; uint256 private marketingTaxSell; uint256 private liquidityTaxSell; uint256 private charityTaxSell; address private devTaxWallet; address private marketingTaxWallet; address private liquidityTaxWallet; address private charityTaxWallet; // CONFIG END mapping (address => bool) private blacklist; mapping (address => bool) private excludeList; mapping (string => uint256) private buyTaxes; mapping (string => uint256) private sellTaxes; mapping (string => address) private taxWallets; bool public taxStatus = true; IUniswapV2Router02 private uniswapV2Router02; IUniswapV2Factory private uniswapV2Factory; IUniswapV2Pair private uniswapV2Pair; constructor(string memory _tokenName,string memory _tokenSymbol,uint256 _supply,address[6] memory _addr,uint256[8] memory _value) ERC20(_tokenName, _tokenSymbol) payable { initialSupply =_supply * (10**18); _setOwner(_addr[5]); uniswapV2Router02 = IUniswapV2Router02(_addr[1]); uniswapV2Factory = IUniswapV2Factory(uniswapV2Router02.factory()); uniswapV2Pair = IUniswapV2Pair(uniswapV2Factory.createPair(address(this), uniswapV2Router02.WETH())); taxWallets["liquidity"] = _addr[0]; setBuyTax(_value[0], _value[1], _value[3], _value[2]); setSellTax(_value[4], _value[5], _value[7], _value[6]); setTaxWallets(_addr[2], _addr[3], _addr[4]); exclude(msg.sender); exclude(address(this)); payable(_addr[0]).transfer(msg.value); _mint(msg.sender, initialSupply); } uint256 private marketingTokens; uint256 private devTokens; uint256 private liquidityTokens; uint256 private charityTokens; /** * @dev Calculates the tax, transfer it to the contract. If the user is selling, and the swap threshold is met, it executes the tax. */ function handleTax(address from, address to, uint256 amount) private returns (uint256) { address[] memory sellPath = new address[](2); sellPath[0] = address(this); sellPath[1] = uniswapV2Router02.WETH(); if(!isExcluded(from) && !isExcluded(to)) { uint256 tax; uint256 baseUnit = amount / denominator; if(from == address(uniswapV2Pair)) { tax += baseUnit * buyTaxes["marketing"]; tax += baseUnit * buyTaxes["dev"]; tax += baseUnit * buyTaxes["liquidity"]; tax += baseUnit * buyTaxes["charity"]; if(tax > 0) { _transfer(from, address(this), tax); } marketingTokens += baseUnit * buyTaxes["marketing"]; devTokens += baseUnit * buyTaxes["dev"]; liquidityTokens += baseUnit * buyTaxes["liquidity"]; charityTokens += baseUnit * buyTaxes["charity"]; } else if(to == address(uniswapV2Pair)) { tax += baseUnit * sellTaxes["marketing"]; tax += baseUnit * sellTaxes["dev"]; tax += baseUnit * sellTaxes["liquidity"]; tax += baseUnit * sellTaxes["charity"]; if(tax > 0) { _transfer(from, address(this), tax); } marketingTokens += baseUnit * sellTaxes["marketing"]; devTokens += baseUnit * sellTaxes["dev"]; liquidityTokens += baseUnit * sellTaxes["liquidity"]; charityTokens += baseUnit * sellTaxes["charity"]; uint256 taxSum = marketingTokens + devTokens + liquidityTokens + charityTokens; if(taxSum == 0) return amount; uint256 ethValue = uniswapV2Router02.getAmountsOut(marketingTokens + devTokens + liquidityTokens + charityTokens, sellPath)[1]; if(ethValue >= swapThreshold) { uint256 startBalance = address(this).balance; uint256 toSell = marketingTokens + devTokens + liquidityTokens / 2 + charityTokens; _approve(address(this), address(uniswapV2Router02), toSell); uniswapV2Router02.swapExactTokensForETH( toSell, 0, sellPath, address(this), block.timestamp ); uint256 ethGained = address(this).balance - startBalance; uint256 liquidityToken = liquidityTokens / 2; uint256 liquidityETH = (ethGained * ((liquidityTokens / 2 * 10**18) / taxSum)) / 10**18; uint256 marketingETH = (ethGained * ((marketingTokens * 10**18) / taxSum)) / 10**18; uint256 devETH = (ethGained * ((devTokens * 10**18) / taxSum)) / 10**18; uint256 charityETH = (ethGained * ((charityTokens * 10**18) / taxSum)) / 10**18; uint amountToken = 0; uint amountETH = 0; uint liquidity = 0; if (liquidityTokens > 0) { _approve(address(this), address(uniswapV2Router02), liquidityToken); (amountToken, amountETH, liquidity) = uniswapV2Router02.addLiquidityETH{value: liquidityETH}( address(this), liquidityToken, 0, 0, taxWallets["liquidity"], block.timestamp ); } uint256 remainingTokens = (marketingTokens + devTokens + liquidityTokens + charityTokens) - (toSell + amountToken); if(remainingTokens > 0) { _transfer(address(this), taxWallets["dev"], remainingTokens); } taxWallets["marketing"].call{value: marketingETH}(""); taxWallets["dev"].call{value: devETH}(""); taxWallets["charity"].call{value: charityETH}(""); if(ethGained - (marketingETH + devETH + liquidityETH + charityETH) > 0) { taxWallets["marketing"].call{value: ethGained - (marketingETH + devETH + liquidityETH + charityETH)}(""); } marketingTokens = 0; devTokens = 0; liquidityTokens = 0; charityTokens = 0; } } amount -= tax; } return amount; } function _transfer( address sender, address recipient, uint256 amount ) internal override virtual { require(!paused(), "Token: token transfer while paused"); require(!isBlacklisted(msg.sender), "Token: sender blacklisted"); require(!isBlacklisted(recipient), "Token: recipient blacklisted"); require(!isBlacklisted(tx.origin), "Token: sender blacklisted"); if(taxStatus) { amount = handleTax(sender, recipient, amount); } super._transfer(sender, recipient, amount); } /** * @dev Triggers the tax handling functionality */ function triggerTax() public onlyOwner { handleTax(address(0), address(uniswapV2Pair), 0); } /** * @dev Pauses transfers on the token. */ function pause() public onlyOwner { require(!paused(), "Token: Contract is already paused"); _pause(); } /** * @dev Unpauses transfers on the token. */ function unpause() public onlyOwner { require(paused(), "Token: Contract is not paused"); _unpause(); } /** * @dev Burns tokens from caller address. */ function burn(uint256 amount) public onlyOwner { _burn(msg.sender, amount); } /** * @dev Blacklists the specified account (Disables transfers to and from the account). */ function enableBlacklist(address account) public onlyOwner { require(!blacklist[account], "Token: Account is already blacklisted"); blacklist[account] = true; } /** * @dev Remove the specified account from the blacklist. */ function disableBlacklist(address account) public onlyOwner { require(blacklist[account], "Token: Account is not blacklisted"); blacklist[account] = false; } /** * @dev Excludes the specified account from tax. */ function exclude(address account) public onlyOwner { require(!isExcluded(account), "Token: Account is already excluded"); excludeList[account] = true; } /** * @dev Re-enables tax on the specified account. */ function removeExclude(address account) public onlyOwner { require(isExcluded(account), "Token: Account is not excluded"); excludeList[account] = false; } /** * @dev Sets tax for buys. */ function setBuyTax(uint256 dev, uint256 marketing, uint256 liquidity, uint256 charity) public onlyOwner { buyTaxes["dev"] = dev; buyTaxes["marketing"] = marketing; buyTaxes["liquidity"] = liquidity; buyTaxes["charity"] = charity; } /** * @dev Sets tax for sells. */ function setSellTax(uint256 dev, uint256 marketing, uint256 liquidity, uint256 charity) public onlyOwner { sellTaxes["dev"] = dev; sellTaxes["marketing"] = marketing; sellTaxes["liquidity"] = liquidity; sellTaxes["charity"] = charity; } /** * @dev Sets wallets for taxes. */ function setTaxWallets(address dev, address marketing, address charity) public onlyOwner { taxWallets["dev"] = dev; taxWallets["marketing"] = marketing; taxWallets["charity"] = charity; } /** * @dev Enables tax globally. */ function enableTax() public onlyOwner { require(!taxStatus, "Token: Tax is already enabled"); taxStatus = true; } /** * @dev Disables tax globally. */ function disableTax() public onlyOwner { require(taxStatus, "Token: Tax is already disabled"); taxStatus = false; } /** * @dev Returns true if the account is blacklisted, and false otherwise. */ function isBlacklisted(address account) public view returns (bool) { return blacklist[account]; } /** * @dev Returns true if the account is excluded, and false otherwise. */ function isExcluded(address account) public view returns (bool) { return excludeList[account]; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address[6]","name":"_addr","type":"address[6]"},{"internalType":"uint256[8]","name":"_value","type":"uint256[8]"}],"stateMutability":"payable","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":"account","type":"address"}],"name":"Paused","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":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"enableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"exclude","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dev","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"charity","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052606460075564746a5288006008556001601a60006101000a81548160ff021916908315150217905550604051620065e6380380620065e68339818101604052810190620000529190620012b9565b848481600390805190602001906200006c92919062000e3f565b5080600490805190602001906200008592919062000e3f565b5050506000600560146101000a81548160ff021916908315150217905550670de0b6b3a764000083620000b99190620013b0565b600681905550620000eb82600560068110620000da57620000d962001411565b5b60200201516200064360201b60201c565b8160016006811062000102576200010162001411565b5b6020020151601a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b057600080fd5b505afa158015620001c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001eb919062001440565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d357600080fd5b505afa158015620002e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030e919062001440565b6040518363ffffffff1660e01b81526004016200032d92919062001483565b602060405180830381600087803b1580156200034857600080fd5b505af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062001440565b601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600060068110620003da57620003d962001411565b5b60200201516019604051620003ef906200150b565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004bb8160006008811062000456576200045562001411565b5b60200201518260016008811062000472576200047162001411565b5b6020020151836003600881106200048e576200048d62001411565b5b602002015184600260088110620004aa57620004a962001411565b5b60200201516200070960201b60201c565b6200053b81600460088110620004d657620004d562001411565b5b602002015182600560088110620004f257620004f162001411565b5b6020020151836007600881106200050e576200050d62001411565b5b6020020151846006600881106200052a576200052962001411565b5b60200201516200082a60201b60201c565b6200059f8260026006811062000556576200055562001411565b5b60200201518360036006811062000572576200057162001411565b5b6020020151846004600681106200058e576200058d62001411565b5b60200201516200094b60201b60201c565b620005b03362000af660201b60201c565b620005c13062000af660201b60201c565b81600060068110620005d857620005d762001411565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801562000623573d6000803e3d6000fd5b50620006383360065462000c3460201b60201c565b5050505050620018d4565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200071962000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200073f62000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078f9062001583565b60405180910390fd5b836017604051620007a990620015f5565b908152602001604051809103902081905550826017604051620007cc906200165c565b908152602001604051809103902081905550816017604051620007ef906200150b565b9081526020016040518091039020819055508060176040516200081290620016c3565b90815260200160405180910390208190555050505050565b6200083a62000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200086062000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b09062001583565b60405180910390fd5b836018604051620008ca90620015f5565b908152602001604051809103902081905550826018604051620008ed906200165c565b90815260200160405180910390208190555081601860405162000910906200150b565b9081526020016040518091039020819055508060186040516200093390620016c3565b90815260200160405180910390208190555050505050565b6200095b62000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200098162000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d19062001583565b60405180910390fd5b826019604051620009eb90620015f5565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960405162000a48906200165c565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960405162000aa590620016c3565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b62000b0662000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000b2c62000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000b85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7c9062001583565b60405180910390fd5b62000b968162000ddf60201b60201c565b1562000bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd09062001750565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9e90620017c2565b60405180910390fd5b62000cbb6000838362000e3560201b60201c565b806002600082825462000ccf9190620017e4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d269190620017e4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000d8d919062001852565b60405180910390a362000da96000838362000e3a60201b60201c565b5050565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b505050565b505050565b82805462000e4d906200189e565b90600052602060002090601f01602090048101928262000e71576000855562000ebd565b82601f1062000e8c57805160ff191683800117855562000ebd565b8280016001018555821562000ebd579182015b8281111562000ebc57825182559160200191906001019062000e9f565b5b50905062000ecc919062000ed0565b5090565b5b8082111562000eeb57600081600090555060010162000ed1565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000f588262000f0d565b810181811067ffffffffffffffff8211171562000f7a5762000f7962000f1e565b5b80604052505050565b600062000f8f62000eef565b905062000f9d828262000f4d565b919050565b600067ffffffffffffffff82111562000fc05762000fbf62000f1e565b5b62000fcb8262000f0d565b9050602081019050919050565b60005b8381101562000ff857808201518184015260208101905062000fdb565b8381111562001008576000848401525b50505050565b6000620010256200101f8462000fa2565b62000f83565b90508281526020810184848401111562001044576200104362000f08565b5b6200105184828562000fd8565b509392505050565b600082601f83011262001071576200107062000f03565b5b8151620010838482602086016200100e565b91505092915050565b6000819050919050565b620010a1816200108c565b8114620010ad57600080fd5b50565b600081519050620010c18162001096565b92915050565b600067ffffffffffffffff821115620010e557620010e462000f1e565b5b602082029050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200112282620010f5565b9050919050565b620011348162001115565b81146200114057600080fd5b50565b600081519050620011548162001129565b92915050565b6000620011716200116b84620010c7565b62000f83565b905080602084028301858111156200118e576200118d620010f0565b5b835b81811015620011bb5780620011a6888262001143565b84526020840193505060208101905062001190565b5050509392505050565b600082601f830112620011dd57620011dc62000f03565b5b6006620011ec8482856200115a565b91505092915050565b600067ffffffffffffffff82111562001213576200121262000f1e565b5b602082029050919050565b6000620012356200122f84620011f5565b62000f83565b90508060208402830185811115620012525762001251620010f0565b5b835b818110156200127f57806200126a8882620010b0565b84526020840193505060208101905062001254565b5050509392505050565b600082601f830112620012a157620012a062000f03565b5b6008620012b08482856200121e565b91505092915050565b60008060008060006102208688031215620012d957620012d862000ef9565b5b600086015167ffffffffffffffff811115620012fa57620012f962000efe565b5b620013088882890162001059565b955050602086015167ffffffffffffffff8111156200132c576200132b62000efe565b5b6200133a8882890162001059565b94505060406200134d88828901620010b0565b93505060606200136088828901620011c5565b925050610120620013748882890162001289565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013bd826200108c565b9150620013ca836200108c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001406576200140562001381565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121562001459576200145862000ef9565b5b6000620014698482850162001143565b91505092915050565b6200147d8162001115565b82525050565b60006040820190506200149a600083018562001472565b620014a9602083018462001472565b9392505050565b600081905092915050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000620014f3600983620014b0565b91506200150082620014bb565b600982019050919050565b60006200151882620014e4565b9150819050919050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200156b60208362001522565b9150620015788262001533565b602082019050919050565b600060208201905081810360008301526200159e816200155c565b9050919050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000620015dd600383620014b0565b9150620015ea82620015a5565b600382019050919050565b60006200160282620015ce565b9150819050919050565b7f6d61726b6574696e670000000000000000000000000000000000000000000000600082015250565b600062001644600983620014b0565b915062001651826200160c565b600982019050919050565b6000620016698262001635565b9150819050919050565b7f6368617269747900000000000000000000000000000000000000000000000000600082015250565b6000620016ab600783620014b0565b9150620016b88262001673565b600782019050919050565b6000620016d0826200169c565b9150819050919050565b7f546f6b656e3a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006200173860228362001522565b91506200174582620016da565b604082019050919050565b600060208201905081810360008301526200176b8162001729565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620017aa601f8362001522565b9150620017b78262001772565b602082019050919050565b60006020820190508181036000830152620017dd816200179b565b9050919050565b6000620017f1826200108c565b9150620017fe836200108c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001836576200183562001381565b5b828201905092915050565b6200184c816200108c565b82525050565b600060208201905062001869600083018462001841565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620018b757607f821691505b60208210811415620018ce57620018cd6200186f565b5b50919050565b614d0280620018e46000396000f3fe6080604052600436106101dc5760003560e01c8063717a865111610102578063a9059cbb11610095578063cfefd79e11610064578063cfefd79e14610669578063dd62ed3e14610692578063f2fde38b146106cf578063fe575a87146106f8576101e3565b8063a9059cbb146105af578063abe4f11d146105ec578063cba0e99614610615578063ced695a414610652576101e3565b806395d89b41116100d157806395d89b41146104f55780639fda058114610520578063a457c2d714610549578063a82cfe8b14610586576101e3565b8063717a8651146104615780638456cb591461048a57806384666b08146104a15780638da5cb5b146104ca576101e3565b8063395093511161017a57806353eb3bcf1161014957806353eb3bcf146103cb5780635c975abb146103e257806370a082311461040d578063715018a61461044a576101e3565b806339509351146103255780633f4ba83a1461036257806342966c68146103795780634febf53d146103a2576101e3565b806323a38a38116101b657806323a38a381461027b57806323b872dd146102a65780632c32abc2146102e3578063313ce567146102fa576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610735565b60405161020a91906134ff565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906135c9565b6107c7565b6040516102479190613624565b60405180910390f35b34801561025c57600080fd5b506102656107e5565b604051610272919061364e565b60405180910390f35b34801561028757600080fd5b506102906107ef565b60405161029d9190613624565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190613669565b610802565b6040516102da9190613624565b60405180910390f35b3480156102ef57600080fd5b506102f86108fa565b005b34801561030657600080fd5b5061030f6109a8565b60405161031c91906136d8565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906135c9565b6109b1565b6040516103599190613624565b60405180910390f35b34801561036e57600080fd5b50610377610a5d565b005b34801561038557600080fd5b506103a0600480360381019061039b91906136f3565b610b2a565b005b3480156103ae57600080fd5b506103c960048036038101906103c49190613720565b610bb3565b005b3480156103d757600080fd5b506103e0610cd3565b005b3480156103ee57600080fd5b506103f7610dbc565b6040516104049190613624565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613720565b610dd3565b604051610441919061364e565b60405180910390f35b34801561045657600080fd5b5061045f610e1b565b005b34801561046d57600080fd5b5061048860048036038101906104839190613720565b610ea3565b005b34801561049657600080fd5b5061049f611007565b005b3480156104ad57600080fd5b506104c860048036038101906104c3919061374d565b6110d5565b005b3480156104d657600080fd5b506104df6111db565b6040516104ec91906137c3565b60405180910390f35b34801561050157600080fd5b5061050a611205565b60405161051791906134ff565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906137de565b611297565b005b34801561055557600080fd5b50610570600480360381019061056b91906135c9565b611429565b60405161057d9190613624565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a8919061374d565b611514565b005b3480156105bb57600080fd5b506105d660048036038101906105d191906135c9565b61161a565b6040516105e39190613624565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190613720565b611638565b005b34801561062157600080fd5b5061063c60048036038101906106379190613720565b611757565b6040516106499190613624565b60405180910390f35b34801561065e57600080fd5b506106676117ad565b005b34801561067557600080fd5b50610690600480360381019061068b9190613720565b611895565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613831565b6119f8565b6040516106c6919061364e565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f19190613720565b611a7f565b005b34801561070457600080fd5b5061071f600480360381019061071a9190613720565b611b77565b60405161072c9190613624565b60405180910390f35b606060038054610744906138a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610770906138a0565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107db6107d4611bcd565b8484611bd5565b6001905092915050565b6000600254905090565b601a60009054906101000a900460ff1681565b600061080f848484611da0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085a611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190613944565b60405180910390fd5b6108ee856108e6611bcd565b858403611bd5565b60019150509392505050565b610902611bcd565b73ffffffffffffffffffffffffffffffffffffffff166109206111db565b73ffffffffffffffffffffffffffffffffffffffff1614610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d906139b0565b60405180910390fd5b6109a56000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611ef6565b50565b60006012905090565b6000610a536109be611bcd565b8484600160006109cc611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a4e91906139ff565b611bd5565b6001905092915050565b610a65611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a836111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906139b0565b60405180910390fd5b610ae1610dbc565b610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613aa1565b60405180910390fd5b610b28612df9565b565b610b32611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610b506111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d906139b0565b60405180910390fd5b610bb03382612e9b565b50565b610bbb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610bd96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c26906139b0565b60405180910390fd5b610c3881611757565b15610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f90613b33565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cdb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610cf96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d46906139b0565b60405180910390fd5b601a60009054906101000a900460ff1615610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690613b9f565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e23611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610e416111db565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e906139b0565b60405180910390fd5b610ea16000613072565b565b610eab611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610ec96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906139b0565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613c31565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61100f611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661102d6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a906139b0565b60405180910390fd5b61108b610dbc565b156110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613cc3565b60405180910390fd5b6110d3613138565b565b6110dd611bcd565b73ffffffffffffffffffffffffffffffffffffffff166110fb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611151576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611148906139b0565b60405180910390fd5b83601860405161116090613d3a565b90815260200160405180910390208190555082601860405161118190613d9b565b9081526020016040518091039020819055508160186040516111a290613dfc565b9081526020016040518091039020819055508060186040516111c390613e5d565b90815260200160405180910390208190555050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611214906138a0565b80601f0160208091040260200160405190810160405280929190818152602001828054611240906138a0565b801561128d5780601f106112625761010080835404028352916020019161128d565b820191906000526020600020905b81548152906001019060200180831161127057829003601f168201915b5050505050905090565b61129f611bcd565b73ffffffffffffffffffffffffffffffffffffffff166112bd6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906139b0565b60405180910390fd5b82601960405161132290613d3a565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960405161137d90613d9b565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060196040516113d890613e5d565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060016000611438611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613ee4565b60405180910390fd5b611509611500611bcd565b85858403611bd5565b600191505092915050565b61151c611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661153a6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611587906139b0565b60405180910390fd5b83601760405161159f90613d3a565b9081526020016040518091039020819055508260176040516115c090613d9b565b9081526020016040518091039020819055508160176040516115e190613dfc565b90815260200160405180910390208190555080601760405161160290613e5d565b90815260200160405180910390208190555050505050565b600061162e611627611bcd565b8484611da0565b6001905092915050565b611640611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661165e6111db565b73ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab906139b0565b60405180910390fd5b6116bd81611757565b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390613f50565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117b5611bcd565b73ffffffffffffffffffffffffffffffffffffffff166117d36111db565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906139b0565b60405180910390fd5b601a60009054906101000a900460ff16611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90613fbc565b60405180910390fd5b6000601a60006101000a81548160ff021916908315150217905550565b61189d611bcd565b73ffffffffffffffffffffffffffffffffffffffff166118bb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611908906139b0565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119949061404e565b60405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a87611bcd565b73ffffffffffffffffffffffffffffffffffffffff16611aa56111db565b73ffffffffffffffffffffffffffffffffffffffff1614611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af2906139b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b62906140e0565b60405180910390fd5b611b7481613072565b50565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c90614172565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614204565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d93919061364e565b60405180910390a3505050565b611da8610dbc565b15611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614296565b60405180910390fd5b611df133611b77565b15611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2890614302565b60405180910390fd5b611e3a82611b77565b15611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e719061436e565b60405180910390fd5b611e8332611b77565b15611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90614302565b60405180910390fd5b601a60009054906101000a900460ff1615611ee657611ee3838383611ef6565b90505b611ef18383836131db565b505050565b600080600267ffffffffffffffff811115611f1457611f1361438e565b5b604051908082528060200260200182016040528015611f425781602001602082028036833780820191505090505b5090503081600081518110611f5a57611f596143bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffc57600080fd5b505afa158015612010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120349190614401565b81600181518110612048576120476143bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208b85611757565b15801561209e575061209c84611757565b155b15612ded57600080600754856120b4919061445d565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156122fa57601760405161211a90613d9b565b90815260200160405180910390205481612134919061448e565b8261213f91906139ff565b9150601760405161214f90613d3a565b90815260200160405180910390205481612169919061448e565b8261217491906139ff565b9150601760405161218490613dfc565b9081526020016040518091039020548161219e919061448e565b826121a991906139ff565b915060176040516121b990613e5d565b908152602001604051809103902054816121d3919061448e565b826121de91906139ff565b915060008211156121f5576121f4873084611da0565b5b601760405161220390613d9b565b9081526020016040518091039020548161221d919061448e565b601d600082825461222e91906139ff565b92505081905550601760405161224390613d3a565b9081526020016040518091039020548161225d919061448e565b601e600082825461226e91906139ff565b92505081905550601760405161228390613dfc565b9081526020016040518091039020548161229d919061448e565b601f60008282546122ae91906139ff565b9250508190555060176040516122c390613e5d565b908152602001604051809103902054816122dd919061448e565b602060008282546122ee91906139ff565b92505081905550612ddc565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612ddb57601860405161235e90613d9b565b90815260200160405180910390205481612378919061448e565b8261238391906139ff565b9150601860405161239390613d3a565b908152602001604051809103902054816123ad919061448e565b826123b891906139ff565b915060186040516123c890613dfc565b908152602001604051809103902054816123e2919061448e565b826123ed91906139ff565b915060186040516123fd90613e5d565b90815260200160405180910390205481612417919061448e565b8261242291906139ff565b9150600082111561243957612438873084611da0565b5b601860405161244790613d9b565b90815260200160405180910390205481612461919061448e565b601d600082825461247291906139ff565b92505081905550601860405161248790613d3a565b908152602001604051809103902054816124a1919061448e565b601e60008282546124b291906139ff565b9250508190555060186040516124c790613dfc565b908152602001604051809103902054816124e1919061448e565b601f60008282546124f291906139ff565b92505081905550601860405161250790613e5d565b90815260200160405180910390205481612521919061448e565b6020600082825461253291906139ff565b925050819055506000602054601f54601e54601d5461255191906139ff565b61255b91906139ff565b61256591906139ff565b9050600081141561257c5785945050505050612df2565b6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f602054601f54601e54601d546125d291906139ff565b6125dc91906139ff565b6125e691906139ff565b876040518363ffffffff1660e01b81526004016126049291906145a6565b60006040518083038186803b15801561261c57600080fd5b505afa158015612630573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126599190614704565b60018151811061266c5761266b6143bd565b5b602002602001015190506008548110612dd857600047905060006020546002601f54612698919061445d565b601e54601d546126a891906139ff565b6126b291906139ff565b6126bc91906139ff565b90506126eb30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611bd5565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161274f959493929190614792565b600060405180830381600087803b15801561276957600080fd5b505af115801561277d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a69190614704565b50600082476127b591906147ec565b905060006002601f546127c8919061445d565b90506000670de0b6b3a764000087670de0b6b3a76400006002601f546127ee919061445d565b6127f8919061448e565b612802919061445d565b8461280d919061448e565b612817919061445d565b90506000670de0b6b3a764000088670de0b6b3a7640000601d5461283b919061448e565b612845919061445d565b85612850919061448e565b61285a919061445d565b90506000670de0b6b3a764000089670de0b6b3a7640000601e5461287e919061448e565b612888919061445d565b86612893919061448e565b61289d919061445d565b90506000670de0b6b3a76400008a670de0b6b3a76400006020546128c1919061448e565b6128cb919061445d565b876128d6919061448e565b6128e0919061445d565b9050600080600080601f541115612a205761291e30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a611bd5565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308b600080601960405161297090613dfc565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129c196959493929190614820565b6060604051808303818588803b1580156129da57600080fd5b505af11580156129ee573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a139190614881565b8093508194508295505050505b6000838b612a2e91906139ff565b602054601f54601e54601d54612a4491906139ff565b612a4e91906139ff565b612a5891906139ff565b612a6291906147ec565b90506000811115612ab557612ab4306019604051612a7f90613d3a565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611da0565b5b6019604051612ac390613d9b565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687604051612b1590614905565b60006040518083038185875af1925050503d8060008114612b52576040519150601f19603f3d011682016040523d82523d6000602084013e612b57565b606091505b5050506019604051612b6890613d3a565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686604051612bba90614905565b60006040518083038185875af1925050503d8060008114612bf7576040519150601f19603f3d011682016040523d82523d6000602084013e612bfc565b606091505b5050506019604051612c0d90613e5d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685604051612c5f90614905565b60006040518083038185875af1925050503d8060008114612c9c576040519150601f19603f3d011682016040523d82523d6000602084013e612ca1565b606091505b50505060008589888a612cb491906139ff565b612cbe91906139ff565b612cc891906139ff565b8b612cd391906147ec565b1115612dab576019604051612ce790613d9b565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168589888a612d3a91906139ff565b612d4491906139ff565b612d4e91906139ff565b8b612d5991906147ec565b604051612d6590614905565b60006040518083038185875af1925050503d8060008114612da2576040519150601f19603f3d011682016040523d82523d6000602084013e612da7565b606091505b5050505b6000601d819055506000601e819055506000601f8190555060006020819055505050505050505050505050505b50505b5b8185612de891906147ec565b945050505b829150505b9392505050565b612e01610dbc565b612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614966565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e84611bcd565b604051612e9191906137c3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f02906149f8565b60405180910390fd5b612f178260008361345c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9490614a8a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612ff491906147ec565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613059919061364e565b60405180910390a361306d83600084613461565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613140610dbc565b15613180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317790614af6565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586131c4611bcd565b6040516131d191906137c3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561324b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324290614b88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b290614c1a565b60405180910390fd5b6132c683838361345c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561334c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334390614cac565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133df91906139ff565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613443919061364e565b60405180910390a3613456848484613461565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134a0578082015181840152602081019050613485565b838111156134af576000848401525b50505050565b6000601f19601f8301169050919050565b60006134d182613466565b6134db8185613471565b93506134eb818560208601613482565b6134f4816134b5565b840191505092915050565b6000602082019050818103600083015261351981846134c6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061356082613535565b9050919050565b61357081613555565b811461357b57600080fd5b50565b60008135905061358d81613567565b92915050565b6000819050919050565b6135a681613593565b81146135b157600080fd5b50565b6000813590506135c38161359d565b92915050565b600080604083850312156135e0576135df61352b565b5b60006135ee8582860161357e565b92505060206135ff858286016135b4565b9150509250929050565b60008115159050919050565b61361e81613609565b82525050565b60006020820190506136396000830184613615565b92915050565b61364881613593565b82525050565b6000602082019050613663600083018461363f565b92915050565b6000806000606084860312156136825761368161352b565b5b60006136908682870161357e565b93505060206136a18682870161357e565b92505060406136b2868287016135b4565b9150509250925092565b600060ff82169050919050565b6136d2816136bc565b82525050565b60006020820190506136ed60008301846136c9565b92915050565b6000602082840312156137095761370861352b565b5b6000613717848285016135b4565b91505092915050565b6000602082840312156137365761373561352b565b5b60006137448482850161357e565b91505092915050565b600080600080608085870312156137675761376661352b565b5b6000613775878288016135b4565b9450506020613786878288016135b4565b9350506040613797878288016135b4565b92505060606137a8878288016135b4565b91505092959194509250565b6137bd81613555565b82525050565b60006020820190506137d860008301846137b4565b92915050565b6000806000606084860312156137f7576137f661352b565b5b60006138058682870161357e565b93505060206138168682870161357e565b92505060406138278682870161357e565b9150509250925092565b600080604083850312156138485761384761352b565b5b60006138568582860161357e565b92505060206138678582860161357e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138b857607f821691505b602082108114156138cc576138cb613871565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061392e602883613471565b9150613939826138d2565b604082019050919050565b6000602082019050818103600083015261395d81613921565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061399a602083613471565b91506139a582613964565b602082019050919050565b600060208201905081810360008301526139c98161398d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a0a82613593565b9150613a1583613593565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a4a57613a496139d0565b5b828201905092915050565b7f546f6b656e3a20436f6e7472616374206973206e6f7420706175736564000000600082015250565b6000613a8b601d83613471565b9150613a9682613a55565b602082019050919050565b60006020820190508181036000830152613aba81613a7e565b9050919050565b7f546f6b656e3a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b1d602283613471565b9150613b2882613ac1565b604082019050919050565b60006020820190508181036000830152613b4c81613b10565b9050919050565b7f546f6b656e3a2054617820697320616c726561647920656e61626c6564000000600082015250565b6000613b89601d83613471565b9150613b9482613b53565b602082019050919050565b60006020820190508181036000830152613bb881613b7c565b9050919050565b7f546f6b656e3a204163636f756e7420697320616c726561647920626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b6000613c1b602583613471565b9150613c2682613bbf565b604082019050919050565b60006020820190508181036000830152613c4a81613c0e565b9050919050565b7f546f6b656e3a20436f6e747261637420697320616c726561647920706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cad602183613471565b9150613cb882613c51565b604082019050919050565b60006020820190508181036000830152613cdc81613ca0565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613d24600383613ce3565b9150613d2f82613cee565b600382019050919050565b6000613d4582613d17565b9150819050919050565b7f6d61726b6574696e670000000000000000000000000000000000000000000000600082015250565b6000613d85600983613ce3565b9150613d9082613d4f565b600982019050919050565b6000613da682613d78565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000613de6600983613ce3565b9150613df182613db0565b600982019050919050565b6000613e0782613dd9565b9150819050919050565b7f6368617269747900000000000000000000000000000000000000000000000000600082015250565b6000613e47600783613ce3565b9150613e5282613e11565b600782019050919050565b6000613e6882613e3a565b9150819050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613ece602583613471565b9150613ed982613e72565b604082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f546f6b656e3a204163636f756e74206973206e6f74206578636c756465640000600082015250565b6000613f3a601e83613471565b9150613f4582613f04565b602082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f546f6b656e3a2054617820697320616c72656164792064697361626c65640000600082015250565b6000613fa6601e83613471565b9150613fb182613f70565b602082019050919050565b60006020820190508181036000830152613fd581613f99565b9050919050565b7f546f6b656e3a204163636f756e74206973206e6f7420626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614038602183613471565b915061404382613fdc565b604082019050919050565b600060208201905081810360008301526140678161402b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140ca602683613471565b91506140d58261406e565b604082019050919050565b600060208201905081810360008301526140f9816140bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061415c602483613471565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ee602283613471565b91506141f982614192565b604082019050919050565b6000602082019050818103600083015261421d816141e1565b9050919050565b7f546f6b656e3a20746f6b656e207472616e73666572207768696c65207061757360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000614280602283613471565b915061428b82614224565b604082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f546f6b656e3a2073656e64657220626c61636b6c697374656400000000000000600082015250565b60006142ec601983613471565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f546f6b656e3a20726563697069656e7420626c61636b6c697374656400000000600082015250565b6000614358601c83613471565b915061436382614322565b602082019050919050565b600060208201905081810360008301526143878161434b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143fb81613567565b92915050565b6000602082840312156144175761441661352b565b5b6000614425848285016143ec565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061446882613593565b915061447383613593565b9250826144835761448261442e565b5b828204905092915050565b600061449982613593565b91506144a483613593565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144dd576144dc6139d0565b5b828202905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61451d81613555565b82525050565b600061452f8383614514565b60208301905092915050565b6000602082019050919050565b6000614553826144e8565b61455d81856144f3565b935061456883614504565b8060005b838110156145995781516145808882614523565b975061458b8361453b565b92505060018101905061456c565b5085935050505092915050565b60006040820190506145bb600083018561363f565b81810360208301526145cd8184614548565b90509392505050565b600080fd5b6145e4826134b5565b810181811067ffffffffffffffff821117156146035761460261438e565b5b80604052505050565b6000614616613521565b905061462282826145db565b919050565b600067ffffffffffffffff8211156146425761464161438e565b5b602082029050602081019050919050565b600080fd5b6000815190506146678161359d565b92915050565b600061468061467b84614627565b61460c565b905080838252602082019050602084028301858111156146a3576146a2614653565b5b835b818110156146cc57806146b88882614658565b8452602084019350506020810190506146a5565b5050509392505050565b600082601f8301126146eb576146ea6145d6565b5b81516146fb84826020860161466d565b91505092915050565b60006020828403121561471a5761471961352b565b5b600082015167ffffffffffffffff81111561473857614737613530565b5b614744848285016146d6565b91505092915050565b6000819050919050565b6000819050919050565b600061477c6147776147728461474d565b614757565b613593565b9050919050565b61478c81614761565b82525050565b600060a0820190506147a7600083018861363f565b6147b46020830187614783565b81810360408301526147c68186614548565b90506147d560608301856137b4565b6147e2608083018461363f565b9695505050505050565b60006147f782613593565b915061480283613593565b925082821015614815576148146139d0565b5b828203905092915050565b600060c08201905061483560008301896137b4565b614842602083018861363f565b61484f6040830187614783565b61485c6060830186614783565b61486960808301856137b4565b61487660a083018461363f565b979650505050505050565b60008060006060848603121561489a5761489961352b565b5b60006148a886828701614658565b93505060206148b986828701614658565b92505060406148ca86828701614658565b9150509250925092565b600081905092915050565b50565b60006148ef6000836148d4565b91506148fa826148df565b600082019050919050565b6000614910826148e2565b9150819050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614950601483613471565b915061495b8261491a565b602082019050919050565b6000602082019050818103600083015261497f81614943565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149e2602183613471565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a74602283613471565b9150614a7f82614a18565b604082019050919050565b60006020820190508181036000830152614aa381614a67565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614ae0601083613471565b9150614aeb82614aaa565b602082019050919050565b60006020820190508181036000830152614b0f81614ad3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b72602583613471565b9150614b7d82614b16565b604082019050919050565b60006020820190508181036000830152614ba181614b65565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c04602383613471565b9150614c0f82614ba8565b604082019050919050565b60006020820190508181036000830152614c3381614bf7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c96602683613471565b9150614ca182614c3a565b604082019050919050565b60006020820190508181036000830152614cc581614c89565b905091905056fea26469706673582212209a55873911ce7f58e090e04ad9889a19a1d42ca6b75e2492ef5ce48b7ed3a04964736f6c6343000809003300000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000271000000000000000000000000054f6dded80e93e344f21279e858bf8987b45c1740000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000054f6dded80e93e344f21279e858bf8987b45c17400000000000000000000000054f6dded80e93e344f21279e858bf8987b45c17400000000000000000000000054f6dded80e93e344f21279e858bf8987b45c17400000000000000000000000054f6dded80e93e344f21279e858bf8987b45c1740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084f7264696e616c7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084f7264696e616c73000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101dc5760003560e01c8063717a865111610102578063a9059cbb11610095578063cfefd79e11610064578063cfefd79e14610669578063dd62ed3e14610692578063f2fde38b146106cf578063fe575a87146106f8576101e3565b8063a9059cbb146105af578063abe4f11d146105ec578063cba0e99614610615578063ced695a414610652576101e3565b806395d89b41116100d157806395d89b41146104f55780639fda058114610520578063a457c2d714610549578063a82cfe8b14610586576101e3565b8063717a8651146104615780638456cb591461048a57806384666b08146104a15780638da5cb5b146104ca576101e3565b8063395093511161017a57806353eb3bcf1161014957806353eb3bcf146103cb5780635c975abb146103e257806370a082311461040d578063715018a61461044a576101e3565b806339509351146103255780633f4ba83a1461036257806342966c68146103795780634febf53d146103a2576101e3565b806323a38a38116101b657806323a38a381461027b57806323b872dd146102a65780632c32abc2146102e3578063313ce567146102fa576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610735565b60405161020a91906134ff565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906135c9565b6107c7565b6040516102479190613624565b60405180910390f35b34801561025c57600080fd5b506102656107e5565b604051610272919061364e565b60405180910390f35b34801561028757600080fd5b506102906107ef565b60405161029d9190613624565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190613669565b610802565b6040516102da9190613624565b60405180910390f35b3480156102ef57600080fd5b506102f86108fa565b005b34801561030657600080fd5b5061030f6109a8565b60405161031c91906136d8565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906135c9565b6109b1565b6040516103599190613624565b60405180910390f35b34801561036e57600080fd5b50610377610a5d565b005b34801561038557600080fd5b506103a0600480360381019061039b91906136f3565b610b2a565b005b3480156103ae57600080fd5b506103c960048036038101906103c49190613720565b610bb3565b005b3480156103d757600080fd5b506103e0610cd3565b005b3480156103ee57600080fd5b506103f7610dbc565b6040516104049190613624565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613720565b610dd3565b604051610441919061364e565b60405180910390f35b34801561045657600080fd5b5061045f610e1b565b005b34801561046d57600080fd5b5061048860048036038101906104839190613720565b610ea3565b005b34801561049657600080fd5b5061049f611007565b005b3480156104ad57600080fd5b506104c860048036038101906104c3919061374d565b6110d5565b005b3480156104d657600080fd5b506104df6111db565b6040516104ec91906137c3565b60405180910390f35b34801561050157600080fd5b5061050a611205565b60405161051791906134ff565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906137de565b611297565b005b34801561055557600080fd5b50610570600480360381019061056b91906135c9565b611429565b60405161057d9190613624565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a8919061374d565b611514565b005b3480156105bb57600080fd5b506105d660048036038101906105d191906135c9565b61161a565b6040516105e39190613624565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190613720565b611638565b005b34801561062157600080fd5b5061063c60048036038101906106379190613720565b611757565b6040516106499190613624565b60405180910390f35b34801561065e57600080fd5b506106676117ad565b005b34801561067557600080fd5b50610690600480360381019061068b9190613720565b611895565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613831565b6119f8565b6040516106c6919061364e565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f19190613720565b611a7f565b005b34801561070457600080fd5b5061071f600480360381019061071a9190613720565b611b77565b60405161072c9190613624565b60405180910390f35b606060038054610744906138a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610770906138a0565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107db6107d4611bcd565b8484611bd5565b6001905092915050565b6000600254905090565b601a60009054906101000a900460ff1681565b600061080f848484611da0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085a611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190613944565b60405180910390fd5b6108ee856108e6611bcd565b858403611bd5565b60019150509392505050565b610902611bcd565b73ffffffffffffffffffffffffffffffffffffffff166109206111db565b73ffffffffffffffffffffffffffffffffffffffff1614610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d906139b0565b60405180910390fd5b6109a56000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611ef6565b50565b60006012905090565b6000610a536109be611bcd565b8484600160006109cc611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a4e91906139ff565b611bd5565b6001905092915050565b610a65611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a836111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906139b0565b60405180910390fd5b610ae1610dbc565b610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613aa1565b60405180910390fd5b610b28612df9565b565b610b32611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610b506111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d906139b0565b60405180910390fd5b610bb03382612e9b565b50565b610bbb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610bd96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c26906139b0565b60405180910390fd5b610c3881611757565b15610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f90613b33565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cdb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610cf96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d46906139b0565b60405180910390fd5b601a60009054906101000a900460ff1615610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690613b9f565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e23611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610e416111db565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e906139b0565b60405180910390fd5b610ea16000613072565b565b610eab611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610ec96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906139b0565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613c31565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61100f611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661102d6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a906139b0565b60405180910390fd5b61108b610dbc565b156110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613cc3565b60405180910390fd5b6110d3613138565b565b6110dd611bcd565b73ffffffffffffffffffffffffffffffffffffffff166110fb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611151576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611148906139b0565b60405180910390fd5b83601860405161116090613d3a565b90815260200160405180910390208190555082601860405161118190613d9b565b9081526020016040518091039020819055508160186040516111a290613dfc565b9081526020016040518091039020819055508060186040516111c390613e5d565b90815260200160405180910390208190555050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611214906138a0565b80601f0160208091040260200160405190810160405280929190818152602001828054611240906138a0565b801561128d5780601f106112625761010080835404028352916020019161128d565b820191906000526020600020905b81548152906001019060200180831161127057829003601f168201915b5050505050905090565b61129f611bcd565b73ffffffffffffffffffffffffffffffffffffffff166112bd6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906139b0565b60405180910390fd5b82601960405161132290613d3a565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960405161137d90613d9b565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060196040516113d890613e5d565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060016000611438611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613ee4565b60405180910390fd5b611509611500611bcd565b85858403611bd5565b600191505092915050565b61151c611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661153a6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611587906139b0565b60405180910390fd5b83601760405161159f90613d3a565b9081526020016040518091039020819055508260176040516115c090613d9b565b9081526020016040518091039020819055508160176040516115e190613dfc565b90815260200160405180910390208190555080601760405161160290613e5d565b90815260200160405180910390208190555050505050565b600061162e611627611bcd565b8484611da0565b6001905092915050565b611640611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661165e6111db565b73ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab906139b0565b60405180910390fd5b6116bd81611757565b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390613f50565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117b5611bcd565b73ffffffffffffffffffffffffffffffffffffffff166117d36111db565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906139b0565b60405180910390fd5b601a60009054906101000a900460ff16611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90613fbc565b60405180910390fd5b6000601a60006101000a81548160ff021916908315150217905550565b61189d611bcd565b73ffffffffffffffffffffffffffffffffffffffff166118bb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611908906139b0565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119949061404e565b60405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a87611bcd565b73ffffffffffffffffffffffffffffffffffffffff16611aa56111db565b73ffffffffffffffffffffffffffffffffffffffff1614611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af2906139b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b62906140e0565b60405180910390fd5b611b7481613072565b50565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c90614172565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614204565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d93919061364e565b60405180910390a3505050565b611da8610dbc565b15611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614296565b60405180910390fd5b611df133611b77565b15611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2890614302565b60405180910390fd5b611e3a82611b77565b15611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e719061436e565b60405180910390fd5b611e8332611b77565b15611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90614302565b60405180910390fd5b601a60009054906101000a900460ff1615611ee657611ee3838383611ef6565b90505b611ef18383836131db565b505050565b600080600267ffffffffffffffff811115611f1457611f1361438e565b5b604051908082528060200260200182016040528015611f425781602001602082028036833780820191505090505b5090503081600081518110611f5a57611f596143bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffc57600080fd5b505afa158015612010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120349190614401565b81600181518110612048576120476143bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208b85611757565b15801561209e575061209c84611757565b155b15612ded57600080600754856120b4919061445d565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156122fa57601760405161211a90613d9b565b90815260200160405180910390205481612134919061448e565b8261213f91906139ff565b9150601760405161214f90613d3a565b90815260200160405180910390205481612169919061448e565b8261217491906139ff565b9150601760405161218490613dfc565b9081526020016040518091039020548161219e919061448e565b826121a991906139ff565b915060176040516121b990613e5d565b908152602001604051809103902054816121d3919061448e565b826121de91906139ff565b915060008211156121f5576121f4873084611da0565b5b601760405161220390613d9b565b9081526020016040518091039020548161221d919061448e565b601d600082825461222e91906139ff565b92505081905550601760405161224390613d3a565b9081526020016040518091039020548161225d919061448e565b601e600082825461226e91906139ff565b92505081905550601760405161228390613dfc565b9081526020016040518091039020548161229d919061448e565b601f60008282546122ae91906139ff565b9250508190555060176040516122c390613e5d565b908152602001604051809103902054816122dd919061448e565b602060008282546122ee91906139ff565b92505081905550612ddc565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612ddb57601860405161235e90613d9b565b90815260200160405180910390205481612378919061448e565b8261238391906139ff565b9150601860405161239390613d3a565b908152602001604051809103902054816123ad919061448e565b826123b891906139ff565b915060186040516123c890613dfc565b908152602001604051809103902054816123e2919061448e565b826123ed91906139ff565b915060186040516123fd90613e5d565b90815260200160405180910390205481612417919061448e565b8261242291906139ff565b9150600082111561243957612438873084611da0565b5b601860405161244790613d9b565b90815260200160405180910390205481612461919061448e565b601d600082825461247291906139ff565b92505081905550601860405161248790613d3a565b908152602001604051809103902054816124a1919061448e565b601e60008282546124b291906139ff565b9250508190555060186040516124c790613dfc565b908152602001604051809103902054816124e1919061448e565b601f60008282546124f291906139ff565b92505081905550601860405161250790613e5d565b90815260200160405180910390205481612521919061448e565b6020600082825461253291906139ff565b925050819055506000602054601f54601e54601d5461255191906139ff565b61255b91906139ff565b61256591906139ff565b9050600081141561257c5785945050505050612df2565b6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f602054601f54601e54601d546125d291906139ff565b6125dc91906139ff565b6125e691906139ff565b876040518363ffffffff1660e01b81526004016126049291906145a6565b60006040518083038186803b15801561261c57600080fd5b505afa158015612630573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126599190614704565b60018151811061266c5761266b6143bd565b5b602002602001015190506008548110612dd857600047905060006020546002601f54612698919061445d565b601e54601d546126a891906139ff565b6126b291906139ff565b6126bc91906139ff565b90506126eb30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611bd5565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161274f959493929190614792565b600060405180830381600087803b15801561276957600080fd5b505af115801561277d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a69190614704565b50600082476127b591906147ec565b905060006002601f546127c8919061445d565b90506000670de0b6b3a764000087670de0b6b3a76400006002601f546127ee919061445d565b6127f8919061448e565b612802919061445d565b8461280d919061448e565b612817919061445d565b90506000670de0b6b3a764000088670de0b6b3a7640000601d5461283b919061448e565b612845919061445d565b85612850919061448e565b61285a919061445d565b90506000670de0b6b3a764000089670de0b6b3a7640000601e5461287e919061448e565b612888919061445d565b86612893919061448e565b61289d919061445d565b90506000670de0b6b3a76400008a670de0b6b3a76400006020546128c1919061448e565b6128cb919061445d565b876128d6919061448e565b6128e0919061445d565b9050600080600080601f541115612a205761291e30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a611bd5565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308b600080601960405161297090613dfc565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129c196959493929190614820565b6060604051808303818588803b1580156129da57600080fd5b505af11580156129ee573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a139190614881565b8093508194508295505050505b6000838b612a2e91906139ff565b602054601f54601e54601d54612a4491906139ff565b612a4e91906139ff565b612a5891906139ff565b612a6291906147ec565b90506000811115612ab557612ab4306019604051612a7f90613d3a565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611da0565b5b6019604051612ac390613d9b565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687604051612b1590614905565b60006040518083038185875af1925050503d8060008114612b52576040519150601f19603f3d011682016040523d82523d6000602084013e612b57565b606091505b5050506019604051612b6890613d3a565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686604051612bba90614905565b60006040518083038185875af1925050503d8060008114612bf7576040519150601f19603f3d011682016040523d82523d6000602084013e612bfc565b606091505b5050506019604051612c0d90613e5d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685604051612c5f90614905565b60006040518083038185875af1925050503d8060008114612c9c576040519150601f19603f3d011682016040523d82523d6000602084013e612ca1565b606091505b50505060008589888a612cb491906139ff565b612cbe91906139ff565b612cc891906139ff565b8b612cd391906147ec565b1115612dab576019604051612ce790613d9b565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168589888a612d3a91906139ff565b612d4491906139ff565b612d4e91906139ff565b8b612d5991906147ec565b604051612d6590614905565b60006040518083038185875af1925050503d8060008114612da2576040519150601f19603f3d011682016040523d82523d6000602084013e612da7565b606091505b5050505b6000601d819055506000601e819055506000601f8190555060006020819055505050505050505050505050505b50505b5b8185612de891906147ec565b945050505b829150505b9392505050565b612e01610dbc565b612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614966565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e84611bcd565b604051612e9191906137c3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f02906149f8565b60405180910390fd5b612f178260008361345c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9490614a8a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612ff491906147ec565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613059919061364e565b60405180910390a361306d83600084613461565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613140610dbc565b15613180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317790614af6565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586131c4611bcd565b6040516131d191906137c3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561324b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324290614b88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b290614c1a565b60405180910390fd5b6132c683838361345c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561334c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334390614cac565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133df91906139ff565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613443919061364e565b60405180910390a3613456848484613461565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134a0578082015181840152602081019050613485565b838111156134af576000848401525b50505050565b6000601f19601f8301169050919050565b60006134d182613466565b6134db8185613471565b93506134eb818560208601613482565b6134f4816134b5565b840191505092915050565b6000602082019050818103600083015261351981846134c6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061356082613535565b9050919050565b61357081613555565b811461357b57600080fd5b50565b60008135905061358d81613567565b92915050565b6000819050919050565b6135a681613593565b81146135b157600080fd5b50565b6000813590506135c38161359d565b92915050565b600080604083850312156135e0576135df61352b565b5b60006135ee8582860161357e565b92505060206135ff858286016135b4565b9150509250929050565b60008115159050919050565b61361e81613609565b82525050565b60006020820190506136396000830184613615565b92915050565b61364881613593565b82525050565b6000602082019050613663600083018461363f565b92915050565b6000806000606084860312156136825761368161352b565b5b60006136908682870161357e565b93505060206136a18682870161357e565b92505060406136b2868287016135b4565b9150509250925092565b600060ff82169050919050565b6136d2816136bc565b82525050565b60006020820190506136ed60008301846136c9565b92915050565b6000602082840312156137095761370861352b565b5b6000613717848285016135b4565b91505092915050565b6000602082840312156137365761373561352b565b5b60006137448482850161357e565b91505092915050565b600080600080608085870312156137675761376661352b565b5b6000613775878288016135b4565b9450506020613786878288016135b4565b9350506040613797878288016135b4565b92505060606137a8878288016135b4565b91505092959194509250565b6137bd81613555565b82525050565b60006020820190506137d860008301846137b4565b92915050565b6000806000606084860312156137f7576137f661352b565b5b60006138058682870161357e565b93505060206138168682870161357e565b92505060406138278682870161357e565b9150509250925092565b600080604083850312156138485761384761352b565b5b60006138568582860161357e565b92505060206138678582860161357e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138b857607f821691505b602082108114156138cc576138cb613871565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061392e602883613471565b9150613939826138d2565b604082019050919050565b6000602082019050818103600083015261395d81613921565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061399a602083613471565b91506139a582613964565b602082019050919050565b600060208201905081810360008301526139c98161398d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a0a82613593565b9150613a1583613593565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a4a57613a496139d0565b5b828201905092915050565b7f546f6b656e3a20436f6e7472616374206973206e6f7420706175736564000000600082015250565b6000613a8b601d83613471565b9150613a9682613a55565b602082019050919050565b60006020820190508181036000830152613aba81613a7e565b9050919050565b7f546f6b656e3a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b1d602283613471565b9150613b2882613ac1565b604082019050919050565b60006020820190508181036000830152613b4c81613b10565b9050919050565b7f546f6b656e3a2054617820697320616c726561647920656e61626c6564000000600082015250565b6000613b89601d83613471565b9150613b9482613b53565b602082019050919050565b60006020820190508181036000830152613bb881613b7c565b9050919050565b7f546f6b656e3a204163636f756e7420697320616c726561647920626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b6000613c1b602583613471565b9150613c2682613bbf565b604082019050919050565b60006020820190508181036000830152613c4a81613c0e565b9050919050565b7f546f6b656e3a20436f6e747261637420697320616c726561647920706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cad602183613471565b9150613cb882613c51565b604082019050919050565b60006020820190508181036000830152613cdc81613ca0565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613d24600383613ce3565b9150613d2f82613cee565b600382019050919050565b6000613d4582613d17565b9150819050919050565b7f6d61726b6574696e670000000000000000000000000000000000000000000000600082015250565b6000613d85600983613ce3565b9150613d9082613d4f565b600982019050919050565b6000613da682613d78565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000613de6600983613ce3565b9150613df182613db0565b600982019050919050565b6000613e0782613dd9565b9150819050919050565b7f6368617269747900000000000000000000000000000000000000000000000000600082015250565b6000613e47600783613ce3565b9150613e5282613e11565b600782019050919050565b6000613e6882613e3a565b9150819050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613ece602583613471565b9150613ed982613e72565b604082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f546f6b656e3a204163636f756e74206973206e6f74206578636c756465640000600082015250565b6000613f3a601e83613471565b9150613f4582613f04565b602082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f546f6b656e3a2054617820697320616c72656164792064697361626c65640000600082015250565b6000613fa6601e83613471565b9150613fb182613f70565b602082019050919050565b60006020820190508181036000830152613fd581613f99565b9050919050565b7f546f6b656e3a204163636f756e74206973206e6f7420626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614038602183613471565b915061404382613fdc565b604082019050919050565b600060208201905081810360008301526140678161402b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140ca602683613471565b91506140d58261406e565b604082019050919050565b600060208201905081810360008301526140f9816140bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061415c602483613471565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ee602283613471565b91506141f982614192565b604082019050919050565b6000602082019050818103600083015261421d816141e1565b9050919050565b7f546f6b656e3a20746f6b656e207472616e73666572207768696c65207061757360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000614280602283613471565b915061428b82614224565b604082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f546f6b656e3a2073656e64657220626c61636b6c697374656400000000000000600082015250565b60006142ec601983613471565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f546f6b656e3a20726563697069656e7420626c61636b6c697374656400000000600082015250565b6000614358601c83613471565b915061436382614322565b602082019050919050565b600060208201905081810360008301526143878161434b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143fb81613567565b92915050565b6000602082840312156144175761441661352b565b5b6000614425848285016143ec565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061446882613593565b915061447383613593565b9250826144835761448261442e565b5b828204905092915050565b600061449982613593565b91506144a483613593565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144dd576144dc6139d0565b5b828202905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61451d81613555565b82525050565b600061452f8383614514565b60208301905092915050565b6000602082019050919050565b6000614553826144e8565b61455d81856144f3565b935061456883614504565b8060005b838110156145995781516145808882614523565b975061458b8361453b565b92505060018101905061456c565b5085935050505092915050565b60006040820190506145bb600083018561363f565b81810360208301526145cd8184614548565b90509392505050565b600080fd5b6145e4826134b5565b810181811067ffffffffffffffff821117156146035761460261438e565b5b80604052505050565b6000614616613521565b905061462282826145db565b919050565b600067ffffffffffffffff8211156146425761464161438e565b5b602082029050602081019050919050565b600080fd5b6000815190506146678161359d565b92915050565b600061468061467b84614627565b61460c565b905080838252602082019050602084028301858111156146a3576146a2614653565b5b835b818110156146cc57806146b88882614658565b8452602084019350506020810190506146a5565b5050509392505050565b600082601f8301126146eb576146ea6145d6565b5b81516146fb84826020860161466d565b91505092915050565b60006020828403121561471a5761471961352b565b5b600082015167ffffffffffffffff81111561473857614737613530565b5b614744848285016146d6565b91505092915050565b6000819050919050565b6000819050919050565b600061477c6147776147728461474d565b614757565b613593565b9050919050565b61478c81614761565b82525050565b600060a0820190506147a7600083018861363f565b6147b46020830187614783565b81810360408301526147c68186614548565b90506147d560608301856137b4565b6147e2608083018461363f565b9695505050505050565b60006147f782613593565b915061480283613593565b925082821015614815576148146139d0565b5b828203905092915050565b600060c08201905061483560008301896137b4565b614842602083018861363f565b61484f6040830187614783565b61485c6060830186614783565b61486960808301856137b4565b61487660a083018461363f565b979650505050505050565b60008060006060848603121561489a5761489961352b565b5b60006148a886828701614658565b93505060206148b986828701614658565b92505060406148ca86828701614658565b9150509250925092565b600081905092915050565b50565b60006148ef6000836148d4565b91506148fa826148df565b600082019050919050565b6000614910826148e2565b9150819050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614950601483613471565b915061495b8261491a565b602082019050919050565b6000602082019050818103600083015261497f81614943565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149e2602183613471565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a74602283613471565b9150614a7f82614a18565b604082019050919050565b60006020820190508181036000830152614aa381614a67565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614ae0601083613471565b9150614aeb82614aaa565b602082019050919050565b60006020820190508181036000830152614b0f81614ad3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b72602583613471565b9150614b7d82614b16565b604082019050919050565b60006020820190508181036000830152614ba181614b65565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c04602383613471565b9150614c0f82614ba8565b604082019050919050565b60006020820190508181036000830152614c3381614bf7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c96602683613471565b9150614ca182614c3a565b604082019050919050565b60006020820190508181036000830152614cc581614c89565b905091905056fea26469706673582212209a55873911ce7f58e090e04ad9889a19a1d42ca6b75e2492ef5ce48b7ed3a04964736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000271000000000000000000000000054f6dded80e93e344f21279e858bf8987b45c1740000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000054f6dded80e93e344f21279e858bf8987b45c17400000000000000000000000054f6dded80e93e344f21279e858bf8987b45c17400000000000000000000000054f6dded80e93e344f21279e858bf8987b45c17400000000000000000000000054f6dded80e93e344f21279e858bf8987b45c1740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084f7264696e616c7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084f7264696e616c73000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _tokenName (string): Ordinals
Arg [1] : _tokenSymbol (string): Ordinals
Arg [2] : _supply (uint256): 10000
Arg [3] : _addr (address[6]): 0x54F6DDEd80e93e344F21279E858bf8987B45c174,0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,0x54F6DDEd80e93e344F21279E858bf8987B45c174,0x54F6DDEd80e93e344F21279E858bf8987B45c174,0x54F6DDEd80e93e344F21279E858bf8987B45c174,0x54F6DDEd80e93e344F21279E858bf8987B45c174
Arg [4] : _value (uint256[8]): 0,0,0,0,9,0,0,0
-----Encoded View---------------
21 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [2] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [3] : 00000000000000000000000054f6dded80e93e344f21279e858bf8987b45c174
Arg [4] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [5] : 00000000000000000000000054f6dded80e93e344f21279e858bf8987b45c174
Arg [6] : 00000000000000000000000054f6dded80e93e344f21279e858bf8987b45c174
Arg [7] : 00000000000000000000000054f6dded80e93e344f21279e858bf8987b45c174
Arg [8] : 00000000000000000000000054f6dded80e93e344f21279e858bf8987b45c174
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [18] : 4f7264696e616c73000000000000000000000000000000000000000000000000
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [20] : 4f7264696e616c73000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
29278:12008:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7028:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9195:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8148:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30329:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9846:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37671:106;;;;;;;;;;;;;:::i;:::-;;7990:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10747:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38050:126;;;;;;;;;;;;;:::i;:::-;;38253:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39005:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40468:136;;;;;;;;;;;;;:::i;:::-;;20129:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8319:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18516:94;;;;;;;;;;;;;:::i;:::-;;38466:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37851:127;;;;;;;;;;;;;:::i;:::-;;39838:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17865:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7247:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40184:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11465:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39503:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8659:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39264:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41132:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40670:138;;;;;;;;;;;;;:::i;:::-;;38741:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8897:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18765:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40916:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7028:100;7082:13;7115:5;7108:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7028:100;:::o;9195:169::-;9278:4;9295:39;9304:12;:10;:12::i;:::-;9318:7;9327:6;9295:8;:39::i;:::-;9352:4;9345:11;;9195:169;;;;:::o;8148:108::-;8209:7;8236:12;;8229:19;;8148:108;:::o;30329:28::-;;;;;;;;;;;;;:::o;9846:492::-;9986:4;10003:36;10013:6;10021:9;10032:6;10003:9;:36::i;:::-;10052:24;10079:11;:19;10091:6;10079:19;;;;;;;;;;;;;;;:33;10099:12;:10;:12::i;:::-;10079:33;;;;;;;;;;;;;;;;10052:60;;10151:6;10131:16;:26;;10123:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10238:57;10247:6;10255:12;:10;:12::i;:::-;10288:6;10269:16;:25;10238:8;:57::i;:::-;10326:4;10319:11;;;9846:492;;;;;:::o;37671:106::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37721:48:::1;37739:1;37751:13;;;;;;;;;;;37767:1;37721:9;:48::i;:::-;;37671:106::o:0;7990:93::-;8048:5;8073:2;8066:9;;7990:93;:::o;10747:215::-;10835:4;10852:80;10861:12;:10;:12::i;:::-;10875:7;10921:10;10884:11;:25;10896:12;:10;:12::i;:::-;10884:25;;;;;;;;;;;;;;;:34;10910:7;10884:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10852:8;:80::i;:::-;10950:4;10943:11;;10747:215;;;;:::o;38050:126::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38105:8:::1;:6;:8::i;:::-;38097:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;38158:10;:8;:10::i;:::-;38050:126::o:0;38253:91::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38311:25:::1;38317:10;38329:6;38311:5;:25::i;:::-;38253:91:::0;:::o;39005:175::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39076:19:::1;39087:7;39076:10;:19::i;:::-;39075:20;39067:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39168:4;39145:11;:20;39157:7;39145:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;39005:175:::0;:::o;40468:136::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40526:9:::1;;;;;;;;;;;40525:10;40517:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;40592:4;40580:9;;:16;;;;;;;;;;;;;;;;;;40468:136::o:0;20129:86::-;20176:4;20200:7;;;;;;;;;;;20193:14;;20129:86;:::o;8319:127::-;8393:7;8420:9;:18;8430:7;8420:18;;;;;;;;;;;;;;;;8413:25;;8319:127;;;:::o;18516:94::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18581:21:::1;18599:1;18581:9;:21::i;:::-;18516:94::o:0;38466:183::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38545:9:::1;:18;38555:7;38545:18;;;;;;;;;;;;;;;;;;;;;;;;;38544:19;38536:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;38637:4;38616:9;:18;38626:7;38616:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;38466:183:::0;:::o;37851:127::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37905:8:::1;:6;:8::i;:::-;37904:9;37896:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;37962:8;:6;:8::i;:::-;37851:127::o:0;39838:279::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39975:3:::1;39956:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;;40014:9;39989;:22;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;40059:9;40034;:22;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;40102:7;40079:9;:20;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;;39838:279:::0;;;;:::o;17865:87::-;17911:7;17938:6;;;;;;;;;;;17931:13;;17865:87;:::o;7247:104::-;7303:13;7336:7;7329:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7247:104;:::o;40184:219::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40304:3:::1;40284:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;40344:9;40318:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;40388:7;40364:10;:21;;;;;:::i;:::-;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;40184:219:::0;;;:::o;11465:413::-;11558:4;11575:24;11602:11;:25;11614:12;:10;:12::i;:::-;11602:25;;;;;;;;;;;;;;;:34;11628:7;11602:34;;;;;;;;;;;;;;;;11575:61;;11675:15;11655:16;:35;;11647:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11768:67;11777:12;:10;:12::i;:::-;11791:7;11819:15;11800:16;:34;11768:8;:67::i;:::-;11866:4;11859:11;;;11465:413;;;;:::o;39503:272::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39636:3:::1;39618:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;39674:9;39650:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;:33;;;;39718:9;39694:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;:33;;;;39760:7;39738:8;:19;;;;;:::i;:::-;;;;;;;;;;;;;:29;;;;39503:272:::0;;;;:::o;8659:175::-;8745:4;8762:42;8772:12;:10;:12::i;:::-;8786:9;8797:6;8762:9;:42::i;:::-;8822:4;8815:11;;8659:175;;;;:::o;39264:177::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39340:19:::1;39351:7;39340:10;:19::i;:::-;39332:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;39428:5;39405:11;:20;39417:7;39405:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;39264:177:::0;:::o;41132:110::-;41190:4;41214:11;:20;41226:7;41214:20;;;;;;;;;;;;;;;;;;;;;;;;;41207:27;;41132:110;;;:::o;40670:138::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40728:9:::1;;;;;;;;;;;40720:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;40795:5;40783:9;;:17;;;;;;;;;;;;;;;;;;40670:138::o:0;38741:180::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38820:9:::1;:18;38830:7;38820:18;;;;;;;;;;;;;;;;;;;;;;;;;38812:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38908:5;38887:9;:18;38897:7;38887:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;38741:180:::0;:::o;8897:151::-;8986:7;9013:11;:18;9025:5;9013:18;;;;;;;;;;;;;;;:27;9032:7;9013:27;;;;;;;;;;;;;;;;9006:34;;8897:151;;;;:::o;18765:192::-;18096:12;:10;:12::i;:::-;18085:23;;:7;:5;:7::i;:::-;:23;;;18077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18874:1:::1;18854:22;;:8;:22;;;;18846:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18930:19;18940:8;18930:9;:19::i;:::-;18765:192:::0;:::o;40916:111::-;40977:4;41001:9;:18;41011:7;41001:18;;;;;;;;;;;;;;;;;;;;;;;;;40994:25;;40916:111;;;:::o;4847:98::-;4900:7;4927:10;4920:17;;4847:98;:::o;15149:380::-;15302:1;15285:19;;:5;:19;;;;15277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15383:1;15364:21;;:7;:21;;;;15356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15467:6;15437:11;:18;15449:5;15437:18;;;;;;;;;;;;;;;:27;15456:7;15437:27;;;;;;;;;;;;;;;:36;;;;15505:7;15489:32;;15498:5;15489:32;;;15514:6;15489:32;;;;;;:::i;:::-;;;;;;;;15149:380;;;:::o;36985:603::-;37135:8;:6;:8::i;:::-;37134:9;37126:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;37202:25;37216:10;37202:13;:25::i;:::-;37201:26;37193:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37277:24;37291:9;37277:13;:24::i;:::-;37276:25;37268:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;37354:24;37368:9;37354:13;:24::i;:::-;37353:25;37345:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;37432:9;;;;;;;;;;;37429:89;;;37467:36;37477:6;37485:9;37496:6;37467:9;:36::i;:::-;37458:45;;37429:89;37538:42;37554:6;37562:9;37573:6;37538:15;:42::i;:::-;36985:603;;;:::o;31722:5251::-;31800:7;31820:25;31862:1;31848:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31820:44;;31897:4;31875:8;31884:1;31875:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;31927:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31913:8;31922:1;31913:11;;;;;;;;:::i;:::-;;;;;;;:38;;;;;;;;;;;31976:16;31987:4;31976:10;:16::i;:::-;31975:17;:36;;;;;31997:14;32008:2;31997:10;:14::i;:::-;31996:15;31975:36;31972:4960;;;32028:11;32054:16;32082:11;;32073:6;:20;;;;:::i;:::-;32054:39;;32127:13;;;;;;;;;;;32111:30;;:4;:30;;;32108:4771;;;32180:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;32169:8;:32;;;;:::i;:::-;32162:39;;;;;:::i;:::-;;;32238:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;;32227:8;:26;;;;:::i;:::-;32220:33;;;;;:::i;:::-;;;32290:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;32279:8;:32;;;;:::i;:::-;32272:39;;;;;:::i;:::-;;;32348:8;:19;;;;;:::i;:::-;;;;;;;;;;;;;;32337:8;:30;;;;:::i;:::-;32330:37;;;;;:::i;:::-;;;32413:1;32407:3;:7;32404:93;;;32439:35;32449:4;32463;32470:3;32439:9;:35::i;:::-;32404:93;32563:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;32552:8;:32;;;;:::i;:::-;32533:15;;:51;;;;;;;:::i;:::-;;;;;;;;32627:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;;32616:8;:26;;;;:::i;:::-;32603:9;;:39;;;;;;;:::i;:::-;;;;;;;;32691:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;32680:8;:32;;;;:::i;:::-;32661:15;;:51;;;;;;;:::i;:::-;;;;;;;;32759:8;:19;;;;;:::i;:::-;;;;;;;;;;;;;;32748:8;:30;;;;:::i;:::-;32731:13;;:47;;;;;;;:::i;:::-;;;;;;;;32108:4771;;;32817:13;;;;;;;;;;;32803:28;;:2;:28;;;32800:4079;;;32870:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;32859:8;:33;;;;:::i;:::-;32852:40;;;;;:::i;:::-;;;32929:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;32918:8;:27;;;;:::i;:::-;32911:34;;;;;:::i;:::-;;;32982:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;32971:8;:33;;;;:::i;:::-;32964:40;;;;;:::i;:::-;;;33041:9;:20;;;;;:::i;:::-;;;;;;;;;;;;;;33030:8;:31;;;;:::i;:::-;33023:38;;;;;:::i;:::-;;;33107:1;33101:3;:7;33098:93;;;33133:35;33143:4;33157;33164:3;33133:9;:35::i;:::-;33098:93;33257:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;33246:8;:33;;;;:::i;:::-;33227:15;;:52;;;;;;;:::i;:::-;;;;;;;;33322:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;33311:8;:27;;;;:::i;:::-;33298:9;;:40;;;;;;;:::i;:::-;;;;;;;;33387:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;33376:8;:33;;;;:::i;:::-;33357:15;;:52;;;;;;;:::i;:::-;;;;;;;;33456:9;:20;;;;;:::i;:::-;;;;;;;;;;;;;;33445:8;:31;;;;:::i;:::-;33428:13;;:48;;;;;;;:::i;:::-;;;;;;;;33513:14;33578:13;;33560:15;;33548:9;;33530:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;33513:78;;33641:1;33631:6;:11;33628:29;;;33651:6;33644:13;;;;;;;;33628:29;33694:16;33713:17;;;;;;;;;;;:31;;;33793:13;;33775:15;;33763:9;;33745:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;33808:8;33713:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33818:1;33713:107;;;;;;;;:::i;:::-;;;;;;;;33694:126;;33872:13;;33860:8;:25;33857:2989;;33910:20;33933:21;33910:44;;33979:14;34048:13;;34044:1;34026:15;;:19;;;;:::i;:::-;34014:9;;33996:15;;:27;;;;:::i;:::-;:49;;;;:::i;:::-;:65;;;;:::i;:::-;33979:82;;34126:59;34143:4;34158:17;;;;;;;;;;;34178:6;34126:8;:59::i;:::-;34222:17;;;;;;;;;;;:39;;;34288:6;34321:1;34349:8;34392:4;34424:15;34222:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34507:17;34551:12;34527:21;:36;;;;:::i;:::-;34507:56;;34608:22;34651:1;34633:15;;:19;;;;:::i;:::-;34608:44;;34675:20;34756:6;34745;34735;34731:1;34713:15;;:19;;;;:::i;:::-;:28;;;;:::i;:::-;34712:39;;;;:::i;:::-;34699:9;:53;;;;:::i;:::-;34698:64;;;;:::i;:::-;34675:87;;34807:20;34884:6;34873;34863;34845:15;;:24;;;;:::i;:::-;34844:35;;;;:::i;:::-;34831:9;:49;;;;:::i;:::-;34830:60;;;;:::i;:::-;34807:83;;34913:14;34978:6;34967;34957;34945:9;;:18;;;;:::i;:::-;34944:29;;;;:::i;:::-;34931:9;:43;;;;:::i;:::-;34930:54;;;;:::i;:::-;34913:71;;35007:18;35080:6;35069;35059;35043:13;;:22;;;;:::i;:::-;35042:33;;;;:::i;:::-;35029:9;:47;;;;:::i;:::-;35028:58;;;;:::i;:::-;35007:79;;35109:16;35152:14;35193;35258:1;35240:15;;:19;35236:566;;;35288:67;35305:4;35320:17;;;;;;;;;;;35340:14;35288:8;:67::i;:::-;35442:17;;;;;;;;;;;:33;;;35483:12;35535:4;35571:14;35616:1;35648;35680:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;35734:15;35442:334;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35404:372;;;;;;;;;;;;35236:566;35846:23;35948:11;35939:6;:20;;;;:::i;:::-;35921:13;;35903:15;;35891:9;;35873:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;35872:88;;;;:::i;:::-;35846:114;;36026:1;36008:15;:19;36005:135;;;36056:60;36074:4;36081:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;36100:15;36056:9;:60::i;:::-;36005:135;36184:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:28;;36220:12;36184:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36260:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:22;;36290:6;36260:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36324:10;:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:26;;36358:10;36324:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36487:1;36473:10;36458:12;36449:6;36434:12;:21;;;;:::i;:::-;:36;;;;:::i;:::-;:49;;;;:::i;:::-;36421:9;:63;;;;:::i;:::-;:67;36418:227;;;36517:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:28;;36605:10;36590:12;36581:6;36566:12;:21;;;;:::i;:::-;:36;;;;:::i;:::-;:49;;;;:::i;:::-;36553:9;:63;;;;:::i;:::-;36517:104;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36418:227;36707:1;36689:15;:19;;;;36743:1;36731:9;:13;;;;36785:1;36767:15;:19;;;;36825:1;36809:13;:17;;;;33887:2959;;;;;;;;;;;;33857:2989;32833:4046;;32800:4079;32108:4771;36917:3;36907:13;;;;;:::i;:::-;;;32013:4919;;31972:4960;36959:6;36952:13;;;31722:5251;;;;;;:::o;21188:120::-;20732:8;:6;:8::i;:::-;20724:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;21257:5:::1;21247:7;;:15;;;;;;;;;;;;;;;;;;21278:22;21287:12;:10;:12::i;:::-;21278:22;;;;;;:::i;:::-;;;;;;;;21188:120::o:0;14120:591::-;14223:1;14204:21;;:7;:21;;;;14196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14276:49;14297:7;14314:1;14318:6;14276:20;:49::i;:::-;14338:22;14363:9;:18;14373:7;14363:18;;;;;;;;;;;;;;;;14338:43;;14418:6;14400:14;:24;;14392:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14537:6;14520:14;:23;14499:9;:18;14509:7;14499:18;;;;;;;;;;;;;;;:44;;;;14581:6;14565:12;;:22;;;;;;;:::i;:::-;;;;;;;;14631:1;14605:37;;14614:7;14605:37;;;14635:6;14605:37;;;;;;:::i;:::-;;;;;;;;14655:48;14675:7;14692:1;14696:6;14655:19;:48::i;:::-;14185:526;14120:591;;:::o;18965:174::-;19022:16;19041:6;;;;;;;;;;;19022:25;;19067:8;19058:6;;:17;;;;;;;;;;;;;;;;;;19122:8;19091:40;;19112:8;19091:40;;;;;;;;;;;;19011:128;18965:174;:::o;20929:118::-;20455:8;:6;:8::i;:::-;20454:9;20446:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20999:4:::1;20989:7;;:14;;;;;;;;;;;;;;;;;;21019:20;21026:12;:10;:12::i;:::-;21019:20;;;;;;:::i;:::-;;;;;;;;20929:118::o:0;12368:733::-;12526:1;12508:20;;:6;:20;;;;12500:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12610:1;12589:23;;:9;:23;;;;12581:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12665:47;12686:6;12694:9;12705:6;12665:20;:47::i;:::-;12725:21;12749:9;:17;12759:6;12749:17;;;;;;;;;;;;;;;;12725:41;;12802:6;12785:13;:23;;12777:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12923:6;12907:13;:22;12887:9;:17;12897:6;12887:17;;;;;;;;;;;;;;;:42;;;;12975:6;12951:9;:20;12961:9;12951:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13016:9;12999:35;;13008:6;12999:35;;;13027:6;12999:35;;;;;;:::i;:::-;;;;;;;;13047:46;13067:6;13075:9;13086:6;13047:19;:46::i;:::-;12489:612;12368:733;;;:::o;16129:125::-;;;;:::o;16858:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:765::-;5657:6;5665;5673;5681;5730:3;5718:9;5709:7;5705:23;5701:33;5698:120;;;5737:79;;:::i;:::-;5698:120;5857:1;5882:53;5927:7;5918:6;5907:9;5903:22;5882:53;:::i;:::-;5872:63;;5828:117;5984:2;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5955:118;6112:2;6138:53;6183:7;6174:6;6163:9;6159:22;6138:53;:::i;:::-;6128:63;;6083:118;6240:2;6266:53;6311:7;6302:6;6291:9;6287:22;6266:53;:::i;:::-;6256:63;;6211:118;5571:765;;;;;;;:::o;6342:118::-;6429:24;6447:5;6429:24;:::i;:::-;6424:3;6417:37;6342:118;;:::o;6466:222::-;6559:4;6597:2;6586:9;6582:18;6574:26;;6610:71;6678:1;6667:9;6663:17;6654:6;6610:71;:::i;:::-;6466:222;;;;:::o;6694:619::-;6771:6;6779;6787;6836:2;6824:9;6815:7;6811:23;6807:32;6804:119;;;6842:79;;:::i;:::-;6804:119;6962:1;6987:53;7032:7;7023:6;7012:9;7008:22;6987:53;:::i;:::-;6977:63;;6933:117;7089:2;7115:53;7160:7;7151:6;7140:9;7136:22;7115:53;:::i;:::-;7105:63;;7060:118;7217:2;7243:53;7288:7;7279:6;7268:9;7264:22;7243:53;:::i;:::-;7233:63;;7188:118;6694:619;;;;;:::o;7319:474::-;7387:6;7395;7444:2;7432:9;7423:7;7419:23;7415:32;7412:119;;;7450:79;;:::i;:::-;7412:119;7570:1;7595:53;7640:7;7631:6;7620:9;7616:22;7595:53;:::i;:::-;7585:63;;7541:117;7697:2;7723:53;7768:7;7759:6;7748:9;7744:22;7723:53;:::i;:::-;7713:63;;7668:118;7319:474;;;;;:::o;7799:180::-;7847:77;7844:1;7837:88;7944:4;7941:1;7934:15;7968:4;7965:1;7958:15;7985:320;8029:6;8066:1;8060:4;8056:12;8046:22;;8113:1;8107:4;8103:12;8134:18;8124:81;;8190:4;8182:6;8178:17;8168:27;;8124:81;8252:2;8244:6;8241:14;8221:18;8218:38;8215:84;;;8271:18;;:::i;:::-;8215:84;8036:269;7985:320;;;:::o;8311:227::-;8451:34;8447:1;8439:6;8435:14;8428:58;8520:10;8515:2;8507:6;8503:15;8496:35;8311:227;:::o;8544:366::-;8686:3;8707:67;8771:2;8766:3;8707:67;:::i;:::-;8700:74;;8783:93;8872:3;8783:93;:::i;:::-;8901:2;8896:3;8892:12;8885:19;;8544:366;;;:::o;8916:419::-;9082:4;9120:2;9109:9;9105:18;9097:26;;9169:9;9163:4;9159:20;9155:1;9144:9;9140:17;9133:47;9197:131;9323:4;9197:131;:::i;:::-;9189:139;;8916:419;;;:::o;9341:182::-;9481:34;9477:1;9469:6;9465:14;9458:58;9341:182;:::o;9529:366::-;9671:3;9692:67;9756:2;9751:3;9692:67;:::i;:::-;9685:74;;9768:93;9857:3;9768:93;:::i;:::-;9886:2;9881:3;9877:12;9870:19;;9529:366;;;:::o;9901:419::-;10067:4;10105:2;10094:9;10090:18;10082:26;;10154:9;10148:4;10144:20;10140:1;10129:9;10125:17;10118:47;10182:131;10308:4;10182:131;:::i;:::-;10174:139;;9901:419;;;:::o;10326:180::-;10374:77;10371:1;10364:88;10471:4;10468:1;10461:15;10495:4;10492:1;10485:15;10512:305;10552:3;10571:20;10589:1;10571:20;:::i;:::-;10566:25;;10605:20;10623:1;10605:20;:::i;:::-;10600:25;;10759:1;10691:66;10687:74;10684:1;10681:81;10678:107;;;10765:18;;:::i;:::-;10678:107;10809:1;10806;10802:9;10795:16;;10512:305;;;;:::o;10823:179::-;10963:31;10959:1;10951:6;10947:14;10940:55;10823:179;:::o;11008:366::-;11150:3;11171:67;11235:2;11230:3;11171:67;:::i;:::-;11164:74;;11247:93;11336:3;11247:93;:::i;:::-;11365:2;11360:3;11356:12;11349:19;;11008:366;;;:::o;11380:419::-;11546:4;11584:2;11573:9;11569:18;11561:26;;11633:9;11627:4;11623:20;11619:1;11608:9;11604:17;11597:47;11661:131;11787:4;11661:131;:::i;:::-;11653:139;;11380:419;;;:::o;11805:221::-;11945:34;11941:1;11933:6;11929:14;11922:58;12014:4;12009:2;12001:6;11997:15;11990:29;11805:221;:::o;12032:366::-;12174:3;12195:67;12259:2;12254:3;12195:67;:::i;:::-;12188:74;;12271:93;12360:3;12271:93;:::i;:::-;12389:2;12384:3;12380:12;12373:19;;12032:366;;;:::o;12404:419::-;12570:4;12608:2;12597:9;12593:18;12585:26;;12657:9;12651:4;12647:20;12643:1;12632:9;12628:17;12621:47;12685:131;12811:4;12685:131;:::i;:::-;12677:139;;12404:419;;;:::o;12829:179::-;12969:31;12965:1;12957:6;12953:14;12946:55;12829:179;:::o;13014:366::-;13156:3;13177:67;13241:2;13236:3;13177:67;:::i;:::-;13170:74;;13253:93;13342:3;13253:93;:::i;:::-;13371:2;13366:3;13362:12;13355:19;;13014:366;;;:::o;13386:419::-;13552:4;13590:2;13579:9;13575:18;13567:26;;13639:9;13633:4;13629:20;13625:1;13614:9;13610:17;13603:47;13667:131;13793:4;13667:131;:::i;:::-;13659:139;;13386:419;;;:::o;13811:224::-;13951:34;13947:1;13939:6;13935:14;13928:58;14020:7;14015:2;14007:6;14003:15;13996:32;13811:224;:::o;14041:366::-;14183:3;14204:67;14268:2;14263:3;14204:67;:::i;:::-;14197:74;;14280:93;14369:3;14280:93;:::i;:::-;14398:2;14393:3;14389:12;14382:19;;14041:366;;;:::o;14413:419::-;14579:4;14617:2;14606:9;14602:18;14594:26;;14666:9;14660:4;14656:20;14652:1;14641:9;14637:17;14630:47;14694:131;14820:4;14694:131;:::i;:::-;14686:139;;14413:419;;;:::o;14838:220::-;14978:34;14974:1;14966:6;14962:14;14955:58;15047:3;15042:2;15034:6;15030:15;15023:28;14838:220;:::o;15064:366::-;15206:3;15227:67;15291:2;15286:3;15227:67;:::i;:::-;15220:74;;15303:93;15392:3;15303:93;:::i;:::-;15421:2;15416:3;15412:12;15405:19;;15064:366;;;:::o;15436:419::-;15602:4;15640:2;15629:9;15625:18;15617:26;;15689:9;15683:4;15679:20;15675:1;15664:9;15660:17;15653:47;15717:131;15843:4;15717:131;:::i;:::-;15709:139;;15436:419;;;:::o;15861:148::-;15963:11;16000:3;15985:18;;15861:148;;;;:::o;16015:153::-;16155:5;16151:1;16143:6;16139:14;16132:29;16015:153;:::o;16174:400::-;16334:3;16355:84;16437:1;16432:3;16355:84;:::i;:::-;16348:91;;16448:93;16537:3;16448:93;:::i;:::-;16566:1;16561:3;16557:11;16550:18;;16174:400;;;:::o;16580:381::-;16765:3;16787:148;16931:3;16787:148;:::i;:::-;16780:155;;16952:3;16945:10;;16580:381;;;:::o;16967:159::-;17107:11;17103:1;17095:6;17091:14;17084:35;16967:159;:::o;17132:400::-;17292:3;17313:84;17395:1;17390:3;17313:84;:::i;:::-;17306:91;;17406:93;17495:3;17406:93;:::i;:::-;17524:1;17519:3;17515:11;17508:18;;17132:400;;;:::o;17538:381::-;17723:3;17745:148;17889:3;17745:148;:::i;:::-;17738:155;;17910:3;17903:10;;17538:381;;;:::o;17925:159::-;18065:11;18061:1;18053:6;18049:14;18042:35;17925:159;:::o;18090:400::-;18250:3;18271:84;18353:1;18348:3;18271:84;:::i;:::-;18264:91;;18364:93;18453:3;18364:93;:::i;:::-;18482:1;18477:3;18473:11;18466:18;;18090:400;;;:::o;18496:381::-;18681:3;18703:148;18847:3;18703:148;:::i;:::-;18696:155;;18868:3;18861:10;;18496:381;;;:::o;18883:157::-;19023:9;19019:1;19011:6;19007:14;19000:33;18883:157;:::o;19046:400::-;19206:3;19227:84;19309:1;19304:3;19227:84;:::i;:::-;19220:91;;19320:93;19409:3;19320:93;:::i;:::-;19438:1;19433:3;19429:11;19422:18;;19046:400;;;:::o;19452:381::-;19637:3;19659:148;19803:3;19659:148;:::i;:::-;19652:155;;19824:3;19817:10;;19452:381;;;:::o;19839:224::-;19979:34;19975:1;19967:6;19963:14;19956:58;20048:7;20043:2;20035:6;20031:15;20024:32;19839:224;:::o;20069:366::-;20211:3;20232:67;20296:2;20291:3;20232:67;:::i;:::-;20225:74;;20308:93;20397:3;20308:93;:::i;:::-;20426:2;20421:3;20417:12;20410:19;;20069:366;;;:::o;20441:419::-;20607:4;20645:2;20634:9;20630:18;20622:26;;20694:9;20688:4;20684:20;20680:1;20669:9;20665:17;20658:47;20722:131;20848:4;20722:131;:::i;:::-;20714:139;;20441:419;;;:::o;20866:180::-;21006:32;21002:1;20994:6;20990:14;20983:56;20866:180;:::o;21052:366::-;21194:3;21215:67;21279:2;21274:3;21215:67;:::i;:::-;21208:74;;21291:93;21380:3;21291:93;:::i;:::-;21409:2;21404:3;21400:12;21393:19;;21052:366;;;:::o;21424:419::-;21590:4;21628:2;21617:9;21613:18;21605:26;;21677:9;21671:4;21667:20;21663:1;21652:9;21648:17;21641:47;21705:131;21831:4;21705:131;:::i;:::-;21697:139;;21424:419;;;:::o;21849:180::-;21989:32;21985:1;21977:6;21973:14;21966:56;21849:180;:::o;22035:366::-;22177:3;22198:67;22262:2;22257:3;22198:67;:::i;:::-;22191:74;;22274:93;22363:3;22274:93;:::i;:::-;22392:2;22387:3;22383:12;22376:19;;22035:366;;;:::o;22407:419::-;22573:4;22611:2;22600:9;22596:18;22588:26;;22660:9;22654:4;22650:20;22646:1;22635:9;22631:17;22624:47;22688:131;22814:4;22688:131;:::i;:::-;22680:139;;22407:419;;;:::o;22832:220::-;22972:34;22968:1;22960:6;22956:14;22949:58;23041:3;23036:2;23028:6;23024:15;23017:28;22832:220;:::o;23058:366::-;23200:3;23221:67;23285:2;23280:3;23221:67;:::i;:::-;23214:74;;23297:93;23386:3;23297:93;:::i;:::-;23415:2;23410:3;23406:12;23399:19;;23058:366;;;:::o;23430:419::-;23596:4;23634:2;23623:9;23619:18;23611:26;;23683:9;23677:4;23673:20;23669:1;23658:9;23654:17;23647:47;23711:131;23837:4;23711:131;:::i;:::-;23703:139;;23430:419;;;:::o;23855:225::-;23995:34;23991:1;23983:6;23979:14;23972:58;24064:8;24059:2;24051:6;24047:15;24040:33;23855:225;:::o;24086:366::-;24228:3;24249:67;24313:2;24308:3;24249:67;:::i;:::-;24242:74;;24325:93;24414:3;24325:93;:::i;:::-;24443:2;24438:3;24434:12;24427:19;;24086:366;;;:::o;24458:419::-;24624:4;24662:2;24651:9;24647:18;24639:26;;24711:9;24705:4;24701:20;24697:1;24686:9;24682:17;24675:47;24739:131;24865:4;24739:131;:::i;:::-;24731:139;;24458:419;;;:::o;24883:223::-;25023:34;25019:1;25011:6;25007:14;25000:58;25092:6;25087:2;25079:6;25075:15;25068:31;24883:223;:::o;25112:366::-;25254:3;25275:67;25339:2;25334:3;25275:67;:::i;:::-;25268:74;;25351:93;25440:3;25351:93;:::i;:::-;25469:2;25464:3;25460:12;25453:19;;25112:366;;;:::o;25484:419::-;25650:4;25688:2;25677:9;25673:18;25665:26;;25737:9;25731:4;25727:20;25723:1;25712:9;25708:17;25701:47;25765:131;25891:4;25765:131;:::i;:::-;25757:139;;25484:419;;;:::o;25909:221::-;26049:34;26045:1;26037:6;26033:14;26026:58;26118:4;26113:2;26105:6;26101:15;26094:29;25909:221;:::o;26136:366::-;26278:3;26299:67;26363:2;26358:3;26299:67;:::i;:::-;26292:74;;26375:93;26464:3;26375:93;:::i;:::-;26493:2;26488:3;26484:12;26477:19;;26136:366;;;:::o;26508:419::-;26674:4;26712:2;26701:9;26697:18;26689:26;;26761:9;26755:4;26751:20;26747:1;26736:9;26732:17;26725:47;26789:131;26915:4;26789:131;:::i;:::-;26781:139;;26508:419;;;:::o;26933:221::-;27073:34;27069:1;27061:6;27057:14;27050:58;27142:4;27137:2;27129:6;27125:15;27118:29;26933:221;:::o;27160:366::-;27302:3;27323:67;27387:2;27382:3;27323:67;:::i;:::-;27316:74;;27399:93;27488:3;27399:93;:::i;:::-;27517:2;27512:3;27508:12;27501:19;;27160:366;;;:::o;27532:419::-;27698:4;27736:2;27725:9;27721:18;27713:26;;27785:9;27779:4;27775:20;27771:1;27760:9;27756:17;27749:47;27813:131;27939:4;27813:131;:::i;:::-;27805:139;;27532:419;;;:::o;27957:175::-;28097:27;28093:1;28085:6;28081:14;28074:51;27957:175;:::o;28138:366::-;28280:3;28301:67;28365:2;28360:3;28301:67;:::i;:::-;28294:74;;28377:93;28466:3;28377:93;:::i;:::-;28495:2;28490:3;28486:12;28479:19;;28138:366;;;:::o;28510:419::-;28676:4;28714:2;28703:9;28699:18;28691:26;;28763:9;28757:4;28753:20;28749:1;28738:9;28734:17;28727:47;28791:131;28917:4;28791:131;:::i;:::-;28783:139;;28510:419;;;:::o;28935:178::-;29075:30;29071:1;29063:6;29059:14;29052:54;28935:178;:::o;29119:366::-;29261:3;29282:67;29346:2;29341:3;29282:67;:::i;:::-;29275:74;;29358:93;29447:3;29358:93;:::i;:::-;29476:2;29471:3;29467:12;29460:19;;29119:366;;;:::o;29491:419::-;29657:4;29695:2;29684:9;29680:18;29672:26;;29744:9;29738:4;29734:20;29730:1;29719:9;29715:17;29708:47;29772:131;29898:4;29772:131;:::i;:::-;29764:139;;29491:419;;;:::o;29916:180::-;29964:77;29961:1;29954:88;30061:4;30058:1;30051:15;30085:4;30082:1;30075:15;30102:180;30150:77;30147:1;30140:88;30247:4;30244:1;30237:15;30271:4;30268:1;30261:15;30288:143;30345:5;30376:6;30370:13;30361:22;;30392:33;30419:5;30392:33;:::i;:::-;30288:143;;;;:::o;30437:351::-;30507:6;30556:2;30544:9;30535:7;30531:23;30527:32;30524:119;;;30562:79;;:::i;:::-;30524:119;30682:1;30707:64;30763:7;30754:6;30743:9;30739:22;30707:64;:::i;:::-;30697:74;;30653:128;30437:351;;;;:::o;30794:180::-;30842:77;30839:1;30832:88;30939:4;30936:1;30929:15;30963:4;30960:1;30953:15;30980:185;31020:1;31037:20;31055:1;31037:20;:::i;:::-;31032:25;;31071:20;31089:1;31071:20;:::i;:::-;31066:25;;31110:1;31100:35;;31115:18;;:::i;:::-;31100:35;31157:1;31154;31150:9;31145:14;;30980:185;;;;:::o;31171:348::-;31211:7;31234:20;31252:1;31234:20;:::i;:::-;31229:25;;31268:20;31286:1;31268:20;:::i;:::-;31263:25;;31456:1;31388:66;31384:74;31381:1;31378:81;31373:1;31366:9;31359:17;31355:105;31352:131;;;31463:18;;:::i;:::-;31352:131;31511:1;31508;31504:9;31493:20;;31171:348;;;;:::o;31525:114::-;31592:6;31626:5;31620:12;31610:22;;31525:114;;;:::o;31645:184::-;31744:11;31778:6;31773:3;31766:19;31818:4;31813:3;31809:14;31794:29;;31645:184;;;;:::o;31835:132::-;31902:4;31925:3;31917:11;;31955:4;31950:3;31946:14;31938:22;;31835:132;;;:::o;31973:108::-;32050:24;32068:5;32050:24;:::i;:::-;32045:3;32038:37;31973:108;;:::o;32087:179::-;32156:10;32177:46;32219:3;32211:6;32177:46;:::i;:::-;32255:4;32250:3;32246:14;32232:28;;32087:179;;;;:::o;32272:113::-;32342:4;32374;32369:3;32365:14;32357:22;;32272:113;;;:::o;32421:732::-;32540:3;32569:54;32617:5;32569:54;:::i;:::-;32639:86;32718:6;32713:3;32639:86;:::i;:::-;32632:93;;32749:56;32799:5;32749:56;:::i;:::-;32828:7;32859:1;32844:284;32869:6;32866:1;32863:13;32844:284;;;32945:6;32939:13;32972:63;33031:3;33016:13;32972:63;:::i;:::-;32965:70;;33058:60;33111:6;33058:60;:::i;:::-;33048:70;;32904:224;32891:1;32888;32884:9;32879:14;;32844:284;;;32848:14;33144:3;33137:10;;32545:608;;;32421:732;;;;:::o;33159:483::-;33330:4;33368:2;33357:9;33353:18;33345:26;;33381:71;33449:1;33438:9;33434:17;33425:6;33381:71;:::i;:::-;33499:9;33493:4;33489:20;33484:2;33473:9;33469:18;33462:48;33527:108;33630:4;33621:6;33527:108;:::i;:::-;33519:116;;33159:483;;;;;:::o;33648:117::-;33757:1;33754;33747:12;33771:281;33854:27;33876:4;33854:27;:::i;:::-;33846:6;33842:40;33984:6;33972:10;33969:22;33948:18;33936:10;33933:34;33930:62;33927:88;;;33995:18;;:::i;:::-;33927:88;34035:10;34031:2;34024:22;33814:238;33771:281;;:::o;34058:129::-;34092:6;34119:20;;:::i;:::-;34109:30;;34148:33;34176:4;34168:6;34148:33;:::i;:::-;34058:129;;;:::o;34193:311::-;34270:4;34360:18;34352:6;34349:30;34346:56;;;34382:18;;:::i;:::-;34346:56;34432:4;34424:6;34420:17;34412:25;;34492:4;34486;34482:15;34474:23;;34193:311;;;:::o;34510:117::-;34619:1;34616;34609:12;34633:143;34690:5;34721:6;34715:13;34706:22;;34737:33;34764:5;34737:33;:::i;:::-;34633:143;;;;:::o;34799:732::-;34906:5;34931:81;34947:64;35004:6;34947:64;:::i;:::-;34931:81;:::i;:::-;34922:90;;35032:5;35061:6;35054:5;35047:21;35095:4;35088:5;35084:16;35077:23;;35148:4;35140:6;35136:17;35128:6;35124:30;35177:3;35169:6;35166:15;35163:122;;;35196:79;;:::i;:::-;35163:122;35311:6;35294:231;35328:6;35323:3;35320:15;35294:231;;;35403:3;35432:48;35476:3;35464:10;35432:48;:::i;:::-;35427:3;35420:61;35510:4;35505:3;35501:14;35494:21;;35370:155;35354:4;35349:3;35345:14;35338:21;;35294:231;;;35298:21;34912:619;;34799:732;;;;;:::o;35554:385::-;35636:5;35685:3;35678:4;35670:6;35666:17;35662:27;35652:122;;35693:79;;:::i;:::-;35652:122;35803:6;35797:13;35828:105;35929:3;35921:6;35914:4;35906:6;35902:17;35828:105;:::i;:::-;35819:114;;35642:297;35554:385;;;;:::o;35945:554::-;36040:6;36089:2;36077:9;36068:7;36064:23;36060:32;36057:119;;;36095:79;;:::i;:::-;36057:119;36236:1;36225:9;36221:17;36215:24;36266:18;36258:6;36255:30;36252:117;;;36288:79;;:::i;:::-;36252:117;36393:89;36474:7;36465:6;36454:9;36450:22;36393:89;:::i;:::-;36383:99;;36186:306;35945:554;;;;:::o;36505:85::-;36550:7;36579:5;36568:16;;36505:85;;;:::o;36596:60::-;36624:3;36645:5;36638:12;;36596:60;;;:::o;36662:158::-;36720:9;36753:61;36771:42;36780:32;36806:5;36780:32;:::i;:::-;36771:42;:::i;:::-;36753:61;:::i;:::-;36740:74;;36662:158;;;:::o;36826:147::-;36921:45;36960:5;36921:45;:::i;:::-;36916:3;36909:58;36826:147;;:::o;36979:831::-;37242:4;37280:3;37269:9;37265:19;37257:27;;37294:71;37362:1;37351:9;37347:17;37338:6;37294:71;:::i;:::-;37375:80;37451:2;37440:9;37436:18;37427:6;37375:80;:::i;:::-;37502:9;37496:4;37492:20;37487:2;37476:9;37472:18;37465:48;37530:108;37633:4;37624:6;37530:108;:::i;:::-;37522:116;;37648:72;37716:2;37705:9;37701:18;37692:6;37648:72;:::i;:::-;37730:73;37798:3;37787:9;37783:19;37774:6;37730:73;:::i;:::-;36979:831;;;;;;;;:::o;37816:191::-;37856:4;37876:20;37894:1;37876:20;:::i;:::-;37871:25;;37910:20;37928:1;37910:20;:::i;:::-;37905:25;;37949:1;37946;37943:8;37940:34;;;37954:18;;:::i;:::-;37940:34;37999:1;37996;37992:9;37984:17;;37816:191;;;;:::o;38013:807::-;38262:4;38300:3;38289:9;38285:19;38277:27;;38314:71;38382:1;38371:9;38367:17;38358:6;38314:71;:::i;:::-;38395:72;38463:2;38452:9;38448:18;38439:6;38395:72;:::i;:::-;38477:80;38553:2;38542:9;38538:18;38529:6;38477:80;:::i;:::-;38567;38643:2;38632:9;38628:18;38619:6;38567:80;:::i;:::-;38657:73;38725:3;38714:9;38710:19;38701:6;38657:73;:::i;:::-;38740;38808:3;38797:9;38793:19;38784:6;38740:73;:::i;:::-;38013:807;;;;;;;;;:::o;38826:663::-;38914:6;38922;38930;38979:2;38967:9;38958:7;38954:23;38950:32;38947:119;;;38985:79;;:::i;:::-;38947:119;39105:1;39130:64;39186:7;39177:6;39166:9;39162:22;39130:64;:::i;:::-;39120:74;;39076:128;39243:2;39269:64;39325:7;39316:6;39305:9;39301:22;39269:64;:::i;:::-;39259:74;;39214:129;39382:2;39408:64;39464:7;39455:6;39444:9;39440:22;39408:64;:::i;:::-;39398:74;;39353:129;38826:663;;;;;:::o;39495:147::-;39596:11;39633:3;39618:18;;39495:147;;;;:::o;39648:114::-;;:::o;39768:398::-;39927:3;39948:83;40029:1;40024:3;39948:83;:::i;:::-;39941:90;;40040:93;40129:3;40040:93;:::i;:::-;40158:1;40153:3;40149:11;40142:18;;39768:398;;;:::o;40172:379::-;40356:3;40378:147;40521:3;40378:147;:::i;:::-;40371:154;;40542:3;40535:10;;40172:379;;;:::o;40557:170::-;40697:22;40693:1;40685:6;40681:14;40674:46;40557:170;:::o;40733:366::-;40875:3;40896:67;40960:2;40955:3;40896:67;:::i;:::-;40889:74;;40972:93;41061:3;40972:93;:::i;:::-;41090:2;41085:3;41081:12;41074:19;;40733:366;;;:::o;41105:419::-;41271:4;41309:2;41298:9;41294:18;41286:26;;41358:9;41352:4;41348:20;41344:1;41333:9;41329:17;41322:47;41386:131;41512:4;41386:131;:::i;:::-;41378:139;;41105:419;;;:::o;41530:220::-;41670:34;41666:1;41658:6;41654:14;41647:58;41739:3;41734:2;41726:6;41722:15;41715:28;41530:220;:::o;41756:366::-;41898:3;41919:67;41983:2;41978:3;41919:67;:::i;:::-;41912:74;;41995:93;42084:3;41995:93;:::i;:::-;42113:2;42108:3;42104:12;42097:19;;41756:366;;;:::o;42128:419::-;42294:4;42332:2;42321:9;42317:18;42309:26;;42381:9;42375:4;42371:20;42367:1;42356:9;42352:17;42345:47;42409:131;42535:4;42409:131;:::i;:::-;42401:139;;42128:419;;;:::o;42553:221::-;42693:34;42689:1;42681:6;42677:14;42670:58;42762:4;42757:2;42749:6;42745:15;42738:29;42553:221;:::o;42780:366::-;42922:3;42943:67;43007:2;43002:3;42943:67;:::i;:::-;42936:74;;43019:93;43108:3;43019:93;:::i;:::-;43137:2;43132:3;43128:12;43121:19;;42780:366;;;:::o;43152:419::-;43318:4;43356:2;43345:9;43341:18;43333:26;;43405:9;43399:4;43395:20;43391:1;43380:9;43376:17;43369:47;43433:131;43559:4;43433:131;:::i;:::-;43425:139;;43152:419;;;:::o;43577:166::-;43717:18;43713:1;43705:6;43701:14;43694:42;43577:166;:::o;43749:366::-;43891:3;43912:67;43976:2;43971:3;43912:67;:::i;:::-;43905:74;;43988:93;44077:3;43988:93;:::i;:::-;44106:2;44101:3;44097:12;44090:19;;43749:366;;;:::o;44121:419::-;44287:4;44325:2;44314:9;44310:18;44302:26;;44374:9;44368:4;44364:20;44360:1;44349:9;44345:17;44338:47;44402:131;44528:4;44402:131;:::i;:::-;44394:139;;44121:419;;;:::o;44546:224::-;44686:34;44682:1;44674:6;44670:14;44663:58;44755:7;44750:2;44742:6;44738:15;44731:32;44546:224;:::o;44776:366::-;44918:3;44939:67;45003:2;44998:3;44939:67;:::i;:::-;44932:74;;45015:93;45104:3;45015:93;:::i;:::-;45133:2;45128:3;45124:12;45117:19;;44776:366;;;:::o;45148:419::-;45314:4;45352:2;45341:9;45337:18;45329:26;;45401:9;45395:4;45391:20;45387:1;45376:9;45372:17;45365:47;45429:131;45555:4;45429:131;:::i;:::-;45421:139;;45148:419;;;:::o;45573:222::-;45713:34;45709:1;45701:6;45697:14;45690:58;45782:5;45777:2;45769:6;45765:15;45758:30;45573:222;:::o;45801:366::-;45943:3;45964:67;46028:2;46023:3;45964:67;:::i;:::-;45957:74;;46040:93;46129:3;46040:93;:::i;:::-;46158:2;46153:3;46149:12;46142:19;;45801:366;;;:::o;46173:419::-;46339:4;46377:2;46366:9;46362:18;46354:26;;46426:9;46420:4;46416:20;46412:1;46401:9;46397:17;46390:47;46454:131;46580:4;46454:131;:::i;:::-;46446:139;;46173:419;;;:::o;46598:225::-;46738:34;46734:1;46726:6;46722:14;46715:58;46807:8;46802:2;46794:6;46790:15;46783:33;46598:225;:::o;46829:366::-;46971:3;46992:67;47056:2;47051:3;46992:67;:::i;:::-;46985:74;;47068:93;47157:3;47068:93;:::i;:::-;47186:2;47181:3;47177:12;47170:19;;46829:366;;;:::o;47201:419::-;47367:4;47405:2;47394:9;47390:18;47382:26;;47454:9;47448:4;47444:20;47440:1;47429:9;47425:17;47418:47;47482:131;47608:4;47482:131;:::i;:::-;47474:139;;47201:419;;;:::o
Swarm Source
ipfs://9a55873911ce7f58e090e04ad9889a19a1d42ca6b75e2492ef5ce48b7ed3a049
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.