More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 259 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19039526 | 316 days ago | IN | 0 ETH | 0.00051243 | ||||
Approve | 18577458 | 381 days ago | IN | 0 ETH | 0.00074018 | ||||
Approve | 18451055 | 398 days ago | IN | 0 ETH | 0.00039536 | ||||
Approve | 17861840 | 481 days ago | IN | 0 ETH | 0.00037057 | ||||
Approve | 16850756 | 623 days ago | IN | 0 ETH | 0.00158227 | ||||
Approve | 16732112 | 640 days ago | IN | 0 ETH | 0.00051045 | ||||
Approve | 16699651 | 644 days ago | IN | 0 ETH | 0.00165631 | ||||
Approve | 16638553 | 653 days ago | IN | 0 ETH | 0.00101336 | ||||
Recover Eth In C... | 16351489 | 693 days ago | IN | 0 ETH | 0.00045073 | ||||
Transfer | 16351470 | 693 days ago | IN | 0 ETH | 0.00124054 | ||||
Transfer | 16351373 | 693 days ago | IN | 0 ETH | 0.00092556 | ||||
Transfer | 16351353 | 693 days ago | IN | 0 ETH | 0.00110705 | ||||
Transfer | 16351345 | 693 days ago | IN | 0 ETH | 0.00103883 | ||||
Transfer | 16351339 | 693 days ago | IN | 0 ETH | 0.00093723 | ||||
Transfer | 16351330 | 693 days ago | IN | 0 ETH | 0.00086719 | ||||
Transfer | 16351322 | 693 days ago | IN | 0 ETH | 0.00098157 | ||||
Transfer | 16351313 | 693 days ago | IN | 0 ETH | 0.00090662 | ||||
Transfer | 16351304 | 693 days ago | IN | 0 ETH | 0.00105731 | ||||
Transfer | 16351299 | 693 days ago | IN | 0 ETH | 0.00108517 | ||||
Transfer | 16351292 | 693 days ago | IN | 0 ETH | 0.00104236 | ||||
Transfer | 16351288 | 693 days ago | IN | 0 ETH | 0.00067641 | ||||
Transfer | 16351270 | 693 days ago | IN | 0 ETH | 0.00123902 | ||||
Transfer | 16351259 | 693 days ago | IN | 0 ETH | 0.00141446 | ||||
Approve | 16330682 | 696 days ago | IN | 0 ETH | 0.00152997 | ||||
Approve | 16307503 | 699 days ago | IN | 0 ETH | 0.00069346 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16351489 | 693 days ago | 0.01476058 ETH | ||||
16198325 | 715 days ago | 0.00008913 ETH | ||||
16198325 | 715 days ago | 0.01467144 ETH | ||||
16198325 | 715 days ago | 0.00978096 ETH | ||||
16198325 | 715 days ago | 0.02934288 ETH | ||||
16198325 | 715 days ago | 0.02934288 ETH | ||||
16198325 | 715 days ago | 0.08304081 ETH | ||||
16153462 | 721 days ago | 0.00007724 ETH | ||||
16153462 | 721 days ago | 0.01469156 ETH | ||||
16153462 | 721 days ago | 0.00979437 ETH | ||||
16153462 | 721 days ago | 0.02938312 ETH | ||||
16153462 | 721 days ago | 0.02938312 ETH | ||||
16153462 | 721 days ago | 0.08316597 ETH | ||||
16131965 | 724 days ago | 0.00005919 ETH | ||||
16131965 | 724 days ago | 0.01471856 ETH | ||||
16131965 | 724 days ago | 0.00981237 ETH | ||||
16131965 | 724 days ago | 0.02943712 ETH | ||||
16131965 | 724 days ago | 0.02943712 ETH | ||||
16131965 | 724 days ago | 0.08334191 ETH | ||||
16102004 | 728 days ago | 0.00005079 ETH | ||||
16102004 | 728 days ago | 0.01473104 ETH | ||||
16102004 | 728 days ago | 0.00982069 ETH | ||||
16102004 | 728 days ago | 0.02946209 ETH | ||||
16102004 | 728 days ago | 0.02946209 ETH | ||||
16102004 | 728 days ago | 0.08342339 ETH |
Loading...
Loading
Contract Name:
Xmas
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-15 */ pragma solidity ^0.8.17; // SPDX-License-Identifier: Unlicensed interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } 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); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { //function _msgSender() internal view virtual returns (address payable) { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly {codehash := extcodehash(account)} return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success,) = recipient.call{value : amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value : weiValue}(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 9; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @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 {} } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address token0, address token1) external view returns (address); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH(address token,uint amountTokenDesired,uint amountTokenMin,uint amountETHMin,address to,uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); } contract Xmas is ERC20, Ownable { using SafeMath for uint256; using Address for address; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } event RandomNumberChosen(uint256); IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public marketPair; mapping(address => bool) private _isExcludedFromFee; uint256 private _totalSupply = 100_000_000_000_000 * 10 ** 9; uint256 public _maxWalletAmount = 1_500_000_000_000 * 10 ** 9; uint256 public buyFee = 98; uint256 public sellFee = 98; bool inSwapAndLiquify; uint256 public ethPriceToSwap = 100000000000000000; address private _santaSac = 0x8A3306FdFa44fAbCA27eF11F915294a0eC9ef59c; address private _team = 0x114eE7F6432d49477Eb10054912fD9C94A3E3230; address private _charity = 0x89c25aCAFd69E9305634Ffe713966df9E2152c84; uint256 public _santaSacAmount = 30; uint256 public _teamAmount = 30; uint256 public _charityAmount = 10; uint256 public _lpShareAmount = 15; //the other half will be ETH address public deployer; uint256 public lastChosenRandomNumber = 0; constructor() ERC20("XMAS", "XMA$") { _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; deployer = owner(); marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _mint(msg.sender, _totalSupply); } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner(); if(from != owner() && to != owner()) { if(takeFees) { taxAmount = amount.mul(buyFee).div(100); if (from != marketPair && to == marketPair) { taxAmount = amount.mul(sellFee).div(100); uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > 0) { uint256 tokenAmount = getTokenPrice(); if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) { swapTokensForEth(tokenAmount); } } } } uint256 amountToHolder = amount.sub(taxAmount); uint256 holderBalance = balanceOf(to).add(amountToHolder); if (from == marketPair) { require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit"); } if (from != marketPair && to != marketPair) { require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit"); } if(taxAmount > 0) { super._transfer(from, address(this), taxAmount); } super._transfer(from, to, amountToHolder); } else { super._transfer(from, to, amount); } } function manualSwap() external { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > 0) { if (!inSwapAndLiquify) { swapTokensForEth(contractTokenBalance); } } } function chooseRandomNumber() external { uint256 range = 10000; uint randomnumber = uint(keccak256(abi.encodePacked(block.timestamp))) % range; lastChosenRandomNumber = randomnumber; emit RandomNumberChosen(randomnumber); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth uint256 lpTokens = tokenAmount.mul(_lpShareAmount).div(100); uint256 tokenSwapAmount = tokenAmount.sub(lpTokens); address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenSwapAmount, 0, path, address(this), block.timestamp ); uint256 balance = address(this).balance; uint256 santaSac = balance.mul(_santaSacAmount).div(100); uint256 team = balance.mul(_teamAmount).div(100); uint256 charity = balance.mul(_charityAmount).div(100); uint256 liquidityEth = balance.mul(_lpShareAmount).div(100); payable(_santaSac).transfer(santaSac); payable(_team).transfer(team); payable(_charity).transfer(charity); addLiquidity(lpTokens, liquidityEth); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deployer, block.timestamp ); } function getTokenPrice() public view returns (uint256) { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1]; } function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner { addRemoveFee(addresses, isExcludeFromFee); } function addRemoveFee(address[] calldata addresses, bool flag) private { for (uint256 i = 0; i < addresses.length; i++) { address addr = addresses[i]; _isExcludedFromFee[addr] = flag; } } function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner { ethPriceToSwap = ethPriceToSwap_; } function setWalletAddresses(address santaSac, address team, address charity) external onlyOwner { _santaSac = santaSac; _team = team; _charity = charity; } function setShare(uint256 santaSac, uint256 team, uint256 charity, uint256 lpShare) external onlyOwner { _santaSacAmount = santaSac; _teamAmount = team; _charityAmount = charity; _lpShareAmount = lpShare; } function setFees(uint256 buy, uint256 sell) external onlyOwner { buyFee = buy; sellFee = sell; } function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner { _maxWalletAmount = maxWalletAmount * 10 ** 9; } receive() external payable {} function recoverEthInContract() external { uint256 ethBalance = address(this).balance; payable(deployer).transfer(ethBalance); } function recoverERC20Tokens(address contractAddress) external { IERC20 erc20Token = IERC20(contractAddress); uint256 balance = erc20Token.balanceOf(address(this)); erc20Token.transfer(deployer, balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"RandomNumberChosen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_charityAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpShareAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_santaSacAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chooseRandomNumber","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":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastChosenRandomNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"recoverERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEthInContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"santaSac","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"},{"internalType":"uint256","name":"lpShare","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"santaSac","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"charity","type":"address"}],"name":"setWalletAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069152d02c7e14af6800000600955685150ae84a8cdf00000600a556062600b556062600c5567016345785d8a0000600e55738a3306fdfa44fabca27ef11f915294a0ec9ef59c600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073114ee7f6432d49477eb10054912fd9c94a3e3230601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507389c25acafd69e9305634ffe713966df9e2152c84601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e601255601e601355600a601455600f6015556000601755348015620001af57600080fd5b506040518060400160405280600481526020017f584d4153000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f584d41240000000000000000000000000000000000000000000000000000000081525081600390816200022d919062000a33565b5080600490816200023f919062000a33565b5050506000620002546200060560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600160086000620003096200060d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003c26200060d60201b60201c565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000470573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000496919062000b84565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000546919062000b84565b6040518363ffffffff1660e01b81526004016200056592919062000bc7565b6020604051808303816000875af115801562000585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ab919062000b84565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005ff336009546200063760201b60201c565b62000d0f565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006a09062000c55565b60405180910390fd5b620006bd60008383620007af60201b60201c565b8060026000828254620006d1919062000ca6565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000728919062000ca6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200078f919062000cf2565b60405180910390a3620007ab60008383620007b460201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200083b57607f821691505b602082108103620008515762000850620007f3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008bb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200087c565b620008c786836200087c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009146200090e6200090884620008df565b620008e9565b620008df565b9050919050565b6000819050919050565b6200093083620008f3565b620009486200093f826200091b565b84845462000889565b825550505050565b600090565b6200095f62000950565b6200096c81848462000925565b505050565b5b8181101562000994576200098860008262000955565b60018101905062000972565b5050565b601f821115620009e357620009ad8162000857565b620009b8846200086c565b81016020851015620009c8578190505b620009e0620009d7856200086c565b83018262000971565b50505b505050565b600082821c905092915050565b600062000a0860001984600802620009e8565b1980831691505092915050565b600062000a238383620009f5565b9150826002028217905092915050565b62000a3e82620007b9565b67ffffffffffffffff81111562000a5a5762000a59620007c4565b5b62000a66825462000822565b62000a7382828562000998565b600060209050601f83116001811462000aab576000841562000a96578287015190505b62000aa2858262000a15565b86555062000b12565b601f19841662000abb8662000857565b60005b8281101562000ae55784890151825560018201915060208501945060208101905062000abe565b8683101562000b05578489015162000b01601f891682620009f5565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b4c8262000b1f565b9050919050565b62000b5e8162000b3f565b811462000b6a57600080fd5b50565b60008151905062000b7e8162000b53565b92915050565b60006020828403121562000b9d5762000b9c62000b1a565b5b600062000bad8482850162000b6d565b91505092915050565b62000bc18162000b3f565b82525050565b600060408201905062000bde600083018562000bb6565b62000bed602083018462000bb6565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c3d601f8362000bf4565b915062000c4a8262000c05565b602082019050919050565b6000602082019050818103600083015262000c708162000c2e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cb382620008df565b915062000cc083620008df565b925082820190508082111562000cdb5762000cda62000c77565b5b92915050565b62000cec81620008df565b82525050565b600060208201905062000d09600083018462000ce1565b92915050565b61405a8062000d1f6000396000f3fe60806040526004361061021e5760003560e01c806354a5df1f11610123578063a457c2d7116100ab578063dd62ed3e1161006f578063dd62ed3e146107ae578063dde3b986146107eb578063e9ac0e5914610816578063f2fde38b1461082d578063fb6287d21461085657610225565b8063a457c2d7146106b7578063a9059cbb146106f4578063b2abbbc414610731578063cb48b73c1461075a578063d5f394881461078357610225565b806370a08231116100f257806370a08231146105e4578063715018a61461062157806384afff9b146106385780638da5cb5b1461066157806395d89b411461068c57610225565b806354a5df1f1461054c578063560ed6c014610577578063622dda96146105a25780636c0a24eb146105b957610225565b80632b14ca56116101a6578063441d801f11610175578063441d801f1461048b57806347062402146104b45780634b94f50e146104df57806350faa48f1461050a57806351bc3c851461053557610225565b80632b14ca56146103cd578063313ce567146103f857806339509351146104235780633c963cd81461046057610225565b80631694505e116101ed5780631694505e146102e657806318160ddd1461031157806323b872dd1461033c57806327a14fc21461037957806327c981ae146103a257610225565b806306fdde031461022a57806308c4debe14610255578063095ea7b3146102805780630b78f9c0146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61087f565b60405161024c9190612ce5565b60405180910390f35b34801561026157600080fd5b5061026a610911565b6040516102779190612d20565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190612dd9565b610917565b6040516102b49190612e34565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190612e4f565b61093a565b005b3480156102f257600080fd5b506102fb6109e3565b6040516103089190612eee565b60405180910390f35b34801561031d57600080fd5b50610326610a09565b6040516103339190612d20565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190612f09565b610a13565b6040516103709190612e34565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190612f5c565b610a42565b005b3480156103ae57600080fd5b506103b7610af2565b6040516103c49190612d20565b60405180910390f35b3480156103d957600080fd5b506103e2610af8565b6040516103ef9190612d20565b60405180910390f35b34801561040457600080fd5b5061040d610afe565b60405161041a9190612fa5565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190612dd9565b610b07565b6040516104579190612e34565b60405180910390f35b34801561046c57600080fd5b50610475610b3e565b6040516104829190612d20565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190613051565b610b44565b005b3480156104c057600080fd5b506104c9610beb565b6040516104d69190612d20565b60405180910390f35b3480156104eb57600080fd5b506104f4610bf1565b6040516105019190612d20565b60405180910390f35b34801561051657600080fd5b5061051f610e34565b60405161052c91906130c0565b60405180910390f35b34801561054157600080fd5b5061054a610e5a565b005b34801561055857600080fd5b50610561610e92565b60405161056e9190612d20565b60405180910390f35b34801561058357600080fd5b5061058c610e98565b6040516105999190612d20565b60405180910390f35b3480156105ae57600080fd5b506105b7610e9e565b005b3480156105c557600080fd5b506105ce610f20565b6040516105db9190612d20565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906130db565b610f26565b6040516106189190612d20565b60405180910390f35b34801561062d57600080fd5b50610636610f6e565b005b34801561064457600080fd5b5061065f600480360381019061065a91906130db565b6110c6565b005b34801561066d57600080fd5b506106766111ef565b60405161068391906130c0565b60405180910390f35b34801561069857600080fd5b506106a1611219565b6040516106ae9190612ce5565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612dd9565b6112ab565b6040516106eb9190612e34565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190612dd9565b611322565b6040516107289190612e34565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f5c565b611345565b005b34801561076657600080fd5b50610781600480360381019061077c9190613108565b6113e6565b005b34801561078f57600080fd5b5061079861149f565b6040516107a591906130c0565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d0919061316f565b6114c5565b6040516107e29190612d20565b60405180910390f35b3480156107f757600080fd5b5061080061154c565b60405161080d9190612d20565b60405180910390f35b34801561082257600080fd5b5061082b611552565b005b34801561083957600080fd5b50610854600480360381019061084f91906130db565b6115c3565b005b34801561086257600080fd5b5061087d600480360381019061087891906131af565b611789565b005b60606003805461088e90613231565b80601f01602080910402602001604051908101604052809291908181526020018280546108ba90613231565b80156109075780601f106108dc57610100808354040283529160200191610907565b820191906000526020600020905b8154815290600101906020018083116108ea57829003601f168201915b5050505050905090565b60155481565b6000806109226118e8565b905061092f8185856118f0565b600191505092915050565b6109426118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c8906132ae565b60405180910390fd5b81600b8190555080600c819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080610a1e6118e8565b9050610a2b858285611ab9565b610a36858585611b45565b60019150509392505050565b610a4a6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906132ae565b60405180910390fd5b633b9aca0081610ae991906132fd565b600a8190555050565b60125481565b600c5481565b60006009905090565b600080610b126118e8565b9050610b33818585610b2485896114c5565b610b2e919061333f565b6118f0565b600191505092915050565b60145481565b610b4c6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd2906132ae565b60405180910390fd5b610be6838383612167565b505050565b600b5481565b600080600267ffffffffffffffff811115610c0f57610c0e613373565b5b604051908082528060200260200182016040528015610c3d5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd191906133b7565b81600081518110610ce557610ce46133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610d3457610d336133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600e54836040518363ffffffff1660e01b8152600401610dcd9291906134d1565b600060405180830381865afa158015610dea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e139190613625565b600181518110610e2657610e256133e4565b5b602002602001015191505090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e6530610f26565b90506000811115610e8f57600d60009054906101000a900460ff16610e8e57610e8d81612212565b5b5b50565b600e5481565b60175481565b6000612710905060008142604051602001610eb9919061368f565b6040516020818303038152906040528051906020012060001c610edc91906136d9565b9050806017819055507fb2e131358e599e271f5996d83ffb4961be7fc5db93fc763575f3cce20be4a3cc81604051610f149190612d20565b60405180910390a15050565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f766118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc906132ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110691906130c0565b602060405180830381865afa158015611123573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611147919061370a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111a6929190613737565b6020604051808303816000875af11580156111c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e99190613775565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461122890613231565b80601f016020809104026020016040519081016040528092919081815260200182805461125490613231565b80156112a15780601f10611276576101008083540402835291602001916112a1565b820191906000526020600020905b81548152906001019060200180831161128457829003601f168201915b5050505050905090565b6000806112b66118e8565b905060006112c482866114c5565b905083811015611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130090613814565b60405180910390fd5b61131682868684036118f0565b60019250505092915050565b60008061132d6118e8565b905061133a818585611b45565b600191505092915050565b61134d6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d3906132ae565b60405180910390fd5b80600e8190555050565b6113ee6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611474906132ae565b60405180910390fd5b8360128190555082601381905550816014819055508060158190555050505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115bf573d6000803e3d6000fd5b5050565b6115cb6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906132ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c0906138a6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117916118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611817906132ae565b60405180910390fd5b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613938565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906139ca565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611aac9190612d20565b60405180910390a3505050565b6000611ac584846114c5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b3f5781811015611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890613a36565b60405180910390fd5b611b3e84848484036118f0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90613ac8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90613b5a565b60405180910390fd5b60008111611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d90613bec565b60405180910390fd5b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d0d5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4c5750611d1c6111ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8b5750611d5b6111ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050611d956111ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611e035750611dd36111ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612154578015611f6557611e366064611e28600b548661269990919063ffffffff16565b61271390919063ffffffff16565b9150600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ee35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611f6457611f106064611f02600c548661269990919063ffffffff16565b61271390919063ffffffff16565b91506000611f1d30610f26565b90506000811115611f62576000611f32610bf1565b9050808210158015611f515750600d60009054906101000a900460ff16155b15611f6057611f5f81612212565b5b505b505b5b6000611f7a838561275d90919063ffffffff16565b90506000611f9982611f8b88610f26565b6127a790919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361203657600a54811115612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c90613c7e565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156120e25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561212d57600a5481111561212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390613c7e565b60405180910390fd5b5b600084111561214257612141873086612805565b5b61214d878784612805565b5050612160565b61215f858585612805565b5b5050505050565b60005b8383905081101561220c57600084848381811061218a576121896133e4565b5b905060200201602081019061219f91906130db565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061220490613c9e565b91505061216a565b50505050565b600061223c606461222e6015548561269990919063ffffffff16565b61271390919063ffffffff16565b90506000612253828461275d90919063ffffffff16565b90506000600267ffffffffffffffff81111561227257612271613373565b5b6040519080825280602002602001820160405280156122a05781602001602082028036833780820191505090505b50905030816000815181106122b8576122b76133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238391906133b7565b81600181518110612397576123966133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123fe30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866118f0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612462959493929190613d21565b600060405180830381600087803b15801561247c57600080fd5b505af1158015612490573d6000803e3d6000fd5b50505050600047905060006124c360646124b56012548561269990919063ffffffff16565b61271390919063ffffffff16565b905060006124ef60646124e16013548661269990919063ffffffff16565b61271390919063ffffffff16565b9050600061251b606461250d6014548761269990919063ffffffff16565b61271390919063ffffffff16565b9050600061254760646125396015548861269990919063ffffffff16565b61271390919063ffffffff16565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501580156125b1573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561261a573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612683573d6000803e3d6000fd5b5061268e8882612a84565b505050505050505050565b60008083036126ab576000905061270d565b600082846126b991906132fd565b90508284826126c89190613d7b565b14612708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ff90613e1e565b60405180910390fd5b809150505b92915050565b600061275583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b84565b905092915050565b600061279f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612be7565b905092915050565b60008082846127b6919061333f565b9050838110156127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290613e8a565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286b90613ac8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90613b5a565b60405180910390fd5b6128ee838383612c4b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296b90613f1c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a07919061333f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6b9190612d20565b60405180910390a3612a7e848484612c50565b50505050565b612ab130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118f0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b3a96959493929190613f3c565b60606040518083038185885af1158015612b58573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b7d9190613f9d565b5050505050565b60008083118290612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc29190612ce5565b60405180910390fd5b5060008385612bda9190613d7b565b9050809150509392505050565b6000838311158290612c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c269190612ce5565b60405180910390fd5b5060008385612c3e9190613ff0565b9050809150509392505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c8f578082015181840152602081019050612c74565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cb782612c55565b612cc18185612c60565b9350612cd1818560208601612c71565b612cda81612c9b565b840191505092915050565b60006020820190508181036000830152612cff8184612cac565b905092915050565b6000819050919050565b612d1a81612d07565b82525050565b6000602082019050612d356000830184612d11565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d7a82612d4f565b9050919050565b612d8a81612d6f565b8114612d9557600080fd5b50565b600081359050612da781612d81565b92915050565b612db681612d07565b8114612dc157600080fd5b50565b600081359050612dd381612dad565b92915050565b60008060408385031215612df057612def612d45565b5b6000612dfe85828601612d98565b9250506020612e0f85828601612dc4565b9150509250929050565b60008115159050919050565b612e2e81612e19565b82525050565b6000602082019050612e496000830184612e25565b92915050565b60008060408385031215612e6657612e65612d45565b5b6000612e7485828601612dc4565b9250506020612e8585828601612dc4565b9150509250929050565b6000819050919050565b6000612eb4612eaf612eaa84612d4f565b612e8f565b612d4f565b9050919050565b6000612ec682612e99565b9050919050565b6000612ed882612ebb565b9050919050565b612ee881612ecd565b82525050565b6000602082019050612f036000830184612edf565b92915050565b600080600060608486031215612f2257612f21612d45565b5b6000612f3086828701612d98565b9350506020612f4186828701612d98565b9250506040612f5286828701612dc4565b9150509250925092565b600060208284031215612f7257612f71612d45565b5b6000612f8084828501612dc4565b91505092915050565b600060ff82169050919050565b612f9f81612f89565b82525050565b6000602082019050612fba6000830184612f96565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612fe557612fe4612fc0565b5b8235905067ffffffffffffffff81111561300257613001612fc5565b5b60208301915083602082028301111561301e5761301d612fca565b5b9250929050565b61302e81612e19565b811461303957600080fd5b50565b60008135905061304b81613025565b92915050565b60008060006040848603121561306a57613069612d45565b5b600084013567ffffffffffffffff81111561308857613087612d4a565b5b61309486828701612fcf565b935093505060206130a78682870161303c565b9150509250925092565b6130ba81612d6f565b82525050565b60006020820190506130d560008301846130b1565b92915050565b6000602082840312156130f1576130f0612d45565b5b60006130ff84828501612d98565b91505092915050565b6000806000806080858703121561312257613121612d45565b5b600061313087828801612dc4565b945050602061314187828801612dc4565b935050604061315287828801612dc4565b925050606061316387828801612dc4565b91505092959194509250565b6000806040838503121561318657613185612d45565b5b600061319485828601612d98565b92505060206131a585828601612d98565b9150509250929050565b6000806000606084860312156131c8576131c7612d45565b5b60006131d686828701612d98565b93505060206131e786828701612d98565b92505060406131f886828701612d98565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061324957607f821691505b60208210810361325c5761325b613202565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613298602083612c60565b91506132a382613262565b602082019050919050565b600060208201905081810360008301526132c78161328b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330882612d07565b915061331383612d07565b925082820261332181612d07565b91508282048414831517613338576133376132ce565b5b5092915050565b600061334a82612d07565b915061335583612d07565b925082820190508082111561336d5761336c6132ce565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506133b181612d81565b92915050565b6000602082840312156133cd576133cc612d45565b5b60006133db848285016133a2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61344881612d6f565b82525050565b600061345a838361343f565b60208301905092915050565b6000602082019050919050565b600061347e82613413565b613488818561341e565b93506134938361342f565b8060005b838110156134c45781516134ab888261344e565b97506134b683613466565b925050600181019050613497565b5085935050505092915050565b60006040820190506134e66000830185612d11565b81810360208301526134f88184613473565b90509392505050565b61350a82612c9b565b810181811067ffffffffffffffff8211171561352957613528613373565b5b80604052505050565b600061353c612d3b565b90506135488282613501565b919050565b600067ffffffffffffffff82111561356857613567613373565b5b602082029050602081019050919050565b60008151905061358881612dad565b92915050565b60006135a161359c8461354d565b613532565b905080838252602082019050602084028301858111156135c4576135c3612fca565b5b835b818110156135ed57806135d98882613579565b8452602084019350506020810190506135c6565b5050509392505050565b600082601f83011261360c5761360b612fc0565b5b815161361c84826020860161358e565b91505092915050565b60006020828403121561363b5761363a612d45565b5b600082015167ffffffffffffffff81111561365957613658612d4a565b5b613665848285016135f7565b91505092915050565b6000819050919050565b61368961368482612d07565b61366e565b82525050565b600061369b8284613678565b60208201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136e482612d07565b91506136ef83612d07565b9250826136ff576136fe6136aa565b5b828206905092915050565b6000602082840312156137205761371f612d45565b5b600061372e84828501613579565b91505092915050565b600060408201905061374c60008301856130b1565b6137596020830184612d11565b9392505050565b60008151905061376f81613025565b92915050565b60006020828403121561378b5761378a612d45565b5b600061379984828501613760565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137fe602583612c60565b9150613809826137a2565b604082019050919050565b6000602082019050818103600083015261382d816137f1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613890602683612c60565b915061389b82613834565b604082019050919050565b600060208201905081810360008301526138bf81613883565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613922602483612c60565b915061392d826138c6565b604082019050919050565b6000602082019050818103600083015261395181613915565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139b4602283612c60565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613a20601d83612c60565b9150613a2b826139ea565b602082019050919050565b60006020820190508181036000830152613a4f81613a13565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ab2602583612c60565b9150613abd82613a56565b604082019050919050565b60006020820190508181036000830152613ae181613aa5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b44602383612c60565b9150613b4f82613ae8565b604082019050919050565b60006020820190508181036000830152613b7381613b37565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bd6602983612c60565b9150613be182613b7a565b604082019050919050565b60006020820190508181036000830152613c0581613bc9565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613c68602583612c60565b9150613c7382613c0c565b604082019050919050565b60006020820190508181036000830152613c9781613c5b565b9050919050565b6000613ca982612d07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cdb57613cda6132ce565b5b600182019050919050565b6000819050919050565b6000613d0b613d06613d0184613ce6565b612e8f565b612d07565b9050919050565b613d1b81613cf0565b82525050565b600060a082019050613d366000830188612d11565b613d436020830187613d12565b8181036040830152613d558186613473565b9050613d6460608301856130b1565b613d716080830184612d11565b9695505050505050565b6000613d8682612d07565b9150613d9183612d07565b925082613da157613da06136aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e08602183612c60565b9150613e1382613dac565b604082019050919050565b60006020820190508181036000830152613e3781613dfb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e74601b83612c60565b9150613e7f82613e3e565b602082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f06602683612c60565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b600060c082019050613f5160008301896130b1565b613f5e6020830188612d11565b613f6b6040830187613d12565b613f786060830186613d12565b613f8560808301856130b1565b613f9260a0830184612d11565b979650505050505050565b600080600060608486031215613fb657613fb5612d45565b5b6000613fc486828701613579565b9350506020613fd586828701613579565b9250506040613fe686828701613579565b9150509250925092565b6000613ffb82612d07565b915061400683612d07565b925082820390508181111561401e5761401d6132ce565b5b9291505056fea2646970667358221220670b5a4a0acd89eb0cc5c8a2f419e509f6fbd77d66bf6e01953ed4ca2fe3069764736f6c63430008110033
Deployed Bytecode
0x60806040526004361061021e5760003560e01c806354a5df1f11610123578063a457c2d7116100ab578063dd62ed3e1161006f578063dd62ed3e146107ae578063dde3b986146107eb578063e9ac0e5914610816578063f2fde38b1461082d578063fb6287d21461085657610225565b8063a457c2d7146106b7578063a9059cbb146106f4578063b2abbbc414610731578063cb48b73c1461075a578063d5f394881461078357610225565b806370a08231116100f257806370a08231146105e4578063715018a61461062157806384afff9b146106385780638da5cb5b1461066157806395d89b411461068c57610225565b806354a5df1f1461054c578063560ed6c014610577578063622dda96146105a25780636c0a24eb146105b957610225565b80632b14ca56116101a6578063441d801f11610175578063441d801f1461048b57806347062402146104b45780634b94f50e146104df57806350faa48f1461050a57806351bc3c851461053557610225565b80632b14ca56146103cd578063313ce567146103f857806339509351146104235780633c963cd81461046057610225565b80631694505e116101ed5780631694505e146102e657806318160ddd1461031157806323b872dd1461033c57806327a14fc21461037957806327c981ae146103a257610225565b806306fdde031461022a57806308c4debe14610255578063095ea7b3146102805780630b78f9c0146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61087f565b60405161024c9190612ce5565b60405180910390f35b34801561026157600080fd5b5061026a610911565b6040516102779190612d20565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190612dd9565b610917565b6040516102b49190612e34565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190612e4f565b61093a565b005b3480156102f257600080fd5b506102fb6109e3565b6040516103089190612eee565b60405180910390f35b34801561031d57600080fd5b50610326610a09565b6040516103339190612d20565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190612f09565b610a13565b6040516103709190612e34565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190612f5c565b610a42565b005b3480156103ae57600080fd5b506103b7610af2565b6040516103c49190612d20565b60405180910390f35b3480156103d957600080fd5b506103e2610af8565b6040516103ef9190612d20565b60405180910390f35b34801561040457600080fd5b5061040d610afe565b60405161041a9190612fa5565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190612dd9565b610b07565b6040516104579190612e34565b60405180910390f35b34801561046c57600080fd5b50610475610b3e565b6040516104829190612d20565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190613051565b610b44565b005b3480156104c057600080fd5b506104c9610beb565b6040516104d69190612d20565b60405180910390f35b3480156104eb57600080fd5b506104f4610bf1565b6040516105019190612d20565b60405180910390f35b34801561051657600080fd5b5061051f610e34565b60405161052c91906130c0565b60405180910390f35b34801561054157600080fd5b5061054a610e5a565b005b34801561055857600080fd5b50610561610e92565b60405161056e9190612d20565b60405180910390f35b34801561058357600080fd5b5061058c610e98565b6040516105999190612d20565b60405180910390f35b3480156105ae57600080fd5b506105b7610e9e565b005b3480156105c557600080fd5b506105ce610f20565b6040516105db9190612d20565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906130db565b610f26565b6040516106189190612d20565b60405180910390f35b34801561062d57600080fd5b50610636610f6e565b005b34801561064457600080fd5b5061065f600480360381019061065a91906130db565b6110c6565b005b34801561066d57600080fd5b506106766111ef565b60405161068391906130c0565b60405180910390f35b34801561069857600080fd5b506106a1611219565b6040516106ae9190612ce5565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612dd9565b6112ab565b6040516106eb9190612e34565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190612dd9565b611322565b6040516107289190612e34565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f5c565b611345565b005b34801561076657600080fd5b50610781600480360381019061077c9190613108565b6113e6565b005b34801561078f57600080fd5b5061079861149f565b6040516107a591906130c0565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d0919061316f565b6114c5565b6040516107e29190612d20565b60405180910390f35b3480156107f757600080fd5b5061080061154c565b60405161080d9190612d20565b60405180910390f35b34801561082257600080fd5b5061082b611552565b005b34801561083957600080fd5b50610854600480360381019061084f91906130db565b6115c3565b005b34801561086257600080fd5b5061087d600480360381019061087891906131af565b611789565b005b60606003805461088e90613231565b80601f01602080910402602001604051908101604052809291908181526020018280546108ba90613231565b80156109075780601f106108dc57610100808354040283529160200191610907565b820191906000526020600020905b8154815290600101906020018083116108ea57829003601f168201915b5050505050905090565b60155481565b6000806109226118e8565b905061092f8185856118f0565b600191505092915050565b6109426118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c8906132ae565b60405180910390fd5b81600b8190555080600c819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080610a1e6118e8565b9050610a2b858285611ab9565b610a36858585611b45565b60019150509392505050565b610a4a6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906132ae565b60405180910390fd5b633b9aca0081610ae991906132fd565b600a8190555050565b60125481565b600c5481565b60006009905090565b600080610b126118e8565b9050610b33818585610b2485896114c5565b610b2e919061333f565b6118f0565b600191505092915050565b60145481565b610b4c6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd2906132ae565b60405180910390fd5b610be6838383612167565b505050565b600b5481565b600080600267ffffffffffffffff811115610c0f57610c0e613373565b5b604051908082528060200260200182016040528015610c3d5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd191906133b7565b81600081518110610ce557610ce46133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610d3457610d336133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600e54836040518363ffffffff1660e01b8152600401610dcd9291906134d1565b600060405180830381865afa158015610dea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e139190613625565b600181518110610e2657610e256133e4565b5b602002602001015191505090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e6530610f26565b90506000811115610e8f57600d60009054906101000a900460ff16610e8e57610e8d81612212565b5b5b50565b600e5481565b60175481565b6000612710905060008142604051602001610eb9919061368f565b6040516020818303038152906040528051906020012060001c610edc91906136d9565b9050806017819055507fb2e131358e599e271f5996d83ffb4961be7fc5db93fc763575f3cce20be4a3cc81604051610f149190612d20565b60405180910390a15050565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f766118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc906132ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110691906130c0565b602060405180830381865afa158015611123573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611147919061370a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111a6929190613737565b6020604051808303816000875af11580156111c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e99190613775565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461122890613231565b80601f016020809104026020016040519081016040528092919081815260200182805461125490613231565b80156112a15780601f10611276576101008083540402835291602001916112a1565b820191906000526020600020905b81548152906001019060200180831161128457829003601f168201915b5050505050905090565b6000806112b66118e8565b905060006112c482866114c5565b905083811015611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130090613814565b60405180910390fd5b61131682868684036118f0565b60019250505092915050565b60008061132d6118e8565b905061133a818585611b45565b600191505092915050565b61134d6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d3906132ae565b60405180910390fd5b80600e8190555050565b6113ee6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611474906132ae565b60405180910390fd5b8360128190555082601381905550816014819055508060158190555050505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115bf573d6000803e3d6000fd5b5050565b6115cb6118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906132ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c0906138a6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117916118e8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611817906132ae565b60405180910390fd5b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613938565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906139ca565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611aac9190612d20565b60405180910390a3505050565b6000611ac584846114c5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b3f5781811015611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890613a36565b60405180910390fd5b611b3e84848484036118f0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90613ac8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90613b5a565b60405180910390fd5b60008111611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d90613bec565b60405180910390fd5b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d0d5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4c5750611d1c6111ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8b5750611d5b6111ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050611d956111ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611e035750611dd36111ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612154578015611f6557611e366064611e28600b548661269990919063ffffffff16565b61271390919063ffffffff16565b9150600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ee35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611f6457611f106064611f02600c548661269990919063ffffffff16565b61271390919063ffffffff16565b91506000611f1d30610f26565b90506000811115611f62576000611f32610bf1565b9050808210158015611f515750600d60009054906101000a900460ff16155b15611f6057611f5f81612212565b5b505b505b5b6000611f7a838561275d90919063ffffffff16565b90506000611f9982611f8b88610f26565b6127a790919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361203657600a54811115612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c90613c7e565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156120e25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561212d57600a5481111561212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390613c7e565b60405180910390fd5b5b600084111561214257612141873086612805565b5b61214d878784612805565b5050612160565b61215f858585612805565b5b5050505050565b60005b8383905081101561220c57600084848381811061218a576121896133e4565b5b905060200201602081019061219f91906130db565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061220490613c9e565b91505061216a565b50505050565b600061223c606461222e6015548561269990919063ffffffff16565b61271390919063ffffffff16565b90506000612253828461275d90919063ffffffff16565b90506000600267ffffffffffffffff81111561227257612271613373565b5b6040519080825280602002602001820160405280156122a05781602001602082028036833780820191505090505b50905030816000815181106122b8576122b76133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238391906133b7565b81600181518110612397576123966133e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123fe30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866118f0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612462959493929190613d21565b600060405180830381600087803b15801561247c57600080fd5b505af1158015612490573d6000803e3d6000fd5b50505050600047905060006124c360646124b56012548561269990919063ffffffff16565b61271390919063ffffffff16565b905060006124ef60646124e16013548661269990919063ffffffff16565b61271390919063ffffffff16565b9050600061251b606461250d6014548761269990919063ffffffff16565b61271390919063ffffffff16565b9050600061254760646125396015548861269990919063ffffffff16565b61271390919063ffffffff16565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501580156125b1573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561261a573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612683573d6000803e3d6000fd5b5061268e8882612a84565b505050505050505050565b60008083036126ab576000905061270d565b600082846126b991906132fd565b90508284826126c89190613d7b565b14612708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ff90613e1e565b60405180910390fd5b809150505b92915050565b600061275583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b84565b905092915050565b600061279f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612be7565b905092915050565b60008082846127b6919061333f565b9050838110156127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290613e8a565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286b90613ac8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90613b5a565b60405180910390fd5b6128ee838383612c4b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296b90613f1c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a07919061333f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6b9190612d20565b60405180910390a3612a7e848484612c50565b50505050565b612ab130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118f0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b3a96959493929190613f3c565b60606040518083038185885af1158015612b58573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b7d9190613f9d565b5050505050565b60008083118290612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc29190612ce5565b60405180910390fd5b5060008385612bda9190613d7b565b9050809150509392505050565b6000838311158290612c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c269190612ce5565b60405180910390fd5b5060008385612c3e9190613ff0565b9050809150509392505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c8f578082015181840152602081019050612c74565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cb782612c55565b612cc18185612c60565b9350612cd1818560208601612c71565b612cda81612c9b565b840191505092915050565b60006020820190508181036000830152612cff8184612cac565b905092915050565b6000819050919050565b612d1a81612d07565b82525050565b6000602082019050612d356000830184612d11565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d7a82612d4f565b9050919050565b612d8a81612d6f565b8114612d9557600080fd5b50565b600081359050612da781612d81565b92915050565b612db681612d07565b8114612dc157600080fd5b50565b600081359050612dd381612dad565b92915050565b60008060408385031215612df057612def612d45565b5b6000612dfe85828601612d98565b9250506020612e0f85828601612dc4565b9150509250929050565b60008115159050919050565b612e2e81612e19565b82525050565b6000602082019050612e496000830184612e25565b92915050565b60008060408385031215612e6657612e65612d45565b5b6000612e7485828601612dc4565b9250506020612e8585828601612dc4565b9150509250929050565b6000819050919050565b6000612eb4612eaf612eaa84612d4f565b612e8f565b612d4f565b9050919050565b6000612ec682612e99565b9050919050565b6000612ed882612ebb565b9050919050565b612ee881612ecd565b82525050565b6000602082019050612f036000830184612edf565b92915050565b600080600060608486031215612f2257612f21612d45565b5b6000612f3086828701612d98565b9350506020612f4186828701612d98565b9250506040612f5286828701612dc4565b9150509250925092565b600060208284031215612f7257612f71612d45565b5b6000612f8084828501612dc4565b91505092915050565b600060ff82169050919050565b612f9f81612f89565b82525050565b6000602082019050612fba6000830184612f96565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612fe557612fe4612fc0565b5b8235905067ffffffffffffffff81111561300257613001612fc5565b5b60208301915083602082028301111561301e5761301d612fca565b5b9250929050565b61302e81612e19565b811461303957600080fd5b50565b60008135905061304b81613025565b92915050565b60008060006040848603121561306a57613069612d45565b5b600084013567ffffffffffffffff81111561308857613087612d4a565b5b61309486828701612fcf565b935093505060206130a78682870161303c565b9150509250925092565b6130ba81612d6f565b82525050565b60006020820190506130d560008301846130b1565b92915050565b6000602082840312156130f1576130f0612d45565b5b60006130ff84828501612d98565b91505092915050565b6000806000806080858703121561312257613121612d45565b5b600061313087828801612dc4565b945050602061314187828801612dc4565b935050604061315287828801612dc4565b925050606061316387828801612dc4565b91505092959194509250565b6000806040838503121561318657613185612d45565b5b600061319485828601612d98565b92505060206131a585828601612d98565b9150509250929050565b6000806000606084860312156131c8576131c7612d45565b5b60006131d686828701612d98565b93505060206131e786828701612d98565b92505060406131f886828701612d98565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061324957607f821691505b60208210810361325c5761325b613202565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613298602083612c60565b91506132a382613262565b602082019050919050565b600060208201905081810360008301526132c78161328b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330882612d07565b915061331383612d07565b925082820261332181612d07565b91508282048414831517613338576133376132ce565b5b5092915050565b600061334a82612d07565b915061335583612d07565b925082820190508082111561336d5761336c6132ce565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506133b181612d81565b92915050565b6000602082840312156133cd576133cc612d45565b5b60006133db848285016133a2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61344881612d6f565b82525050565b600061345a838361343f565b60208301905092915050565b6000602082019050919050565b600061347e82613413565b613488818561341e565b93506134938361342f565b8060005b838110156134c45781516134ab888261344e565b97506134b683613466565b925050600181019050613497565b5085935050505092915050565b60006040820190506134e66000830185612d11565b81810360208301526134f88184613473565b90509392505050565b61350a82612c9b565b810181811067ffffffffffffffff8211171561352957613528613373565b5b80604052505050565b600061353c612d3b565b90506135488282613501565b919050565b600067ffffffffffffffff82111561356857613567613373565b5b602082029050602081019050919050565b60008151905061358881612dad565b92915050565b60006135a161359c8461354d565b613532565b905080838252602082019050602084028301858111156135c4576135c3612fca565b5b835b818110156135ed57806135d98882613579565b8452602084019350506020810190506135c6565b5050509392505050565b600082601f83011261360c5761360b612fc0565b5b815161361c84826020860161358e565b91505092915050565b60006020828403121561363b5761363a612d45565b5b600082015167ffffffffffffffff81111561365957613658612d4a565b5b613665848285016135f7565b91505092915050565b6000819050919050565b61368961368482612d07565b61366e565b82525050565b600061369b8284613678565b60208201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136e482612d07565b91506136ef83612d07565b9250826136ff576136fe6136aa565b5b828206905092915050565b6000602082840312156137205761371f612d45565b5b600061372e84828501613579565b91505092915050565b600060408201905061374c60008301856130b1565b6137596020830184612d11565b9392505050565b60008151905061376f81613025565b92915050565b60006020828403121561378b5761378a612d45565b5b600061379984828501613760565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137fe602583612c60565b9150613809826137a2565b604082019050919050565b6000602082019050818103600083015261382d816137f1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613890602683612c60565b915061389b82613834565b604082019050919050565b600060208201905081810360008301526138bf81613883565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613922602483612c60565b915061392d826138c6565b604082019050919050565b6000602082019050818103600083015261395181613915565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139b4602283612c60565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613a20601d83612c60565b9150613a2b826139ea565b602082019050919050565b60006020820190508181036000830152613a4f81613a13565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ab2602583612c60565b9150613abd82613a56565b604082019050919050565b60006020820190508181036000830152613ae181613aa5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b44602383612c60565b9150613b4f82613ae8565b604082019050919050565b60006020820190508181036000830152613b7381613b37565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bd6602983612c60565b9150613be182613b7a565b604082019050919050565b60006020820190508181036000830152613c0581613bc9565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613c68602583612c60565b9150613c7382613c0c565b604082019050919050565b60006020820190508181036000830152613c9781613c5b565b9050919050565b6000613ca982612d07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cdb57613cda6132ce565b5b600182019050919050565b6000819050919050565b6000613d0b613d06613d0184613ce6565b612e8f565b612d07565b9050919050565b613d1b81613cf0565b82525050565b600060a082019050613d366000830188612d11565b613d436020830187613d12565b8181036040830152613d558186613473565b9050613d6460608301856130b1565b613d716080830184612d11565b9695505050505050565b6000613d8682612d07565b9150613d9183612d07565b925082613da157613da06136aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e08602183612c60565b9150613e1382613dac565b604082019050919050565b60006020820190508181036000830152613e3781613dfb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e74601b83612c60565b9150613e7f82613e3e565b602082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f06602683612c60565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b600060c082019050613f5160008301896130b1565b613f5e6020830188612d11565b613f6b6040830187613d12565b613f786060830186613d12565b613f8560808301856130b1565b613f9260a0830184612d11565b979650505050505050565b600080600060608486031215613fb657613fb5612d45565b5b6000613fc486828701613579565b9350506020613fd586828701613579565b9250506040613fe686828701613579565b9150509250925092565b6000613ffb82612d07565b915061400683612d07565b925082820390508181111561401e5761401d6132ce565b5b9291505056fea2646970667358221220670b5a4a0acd89eb0cc5c8a2f419e509f6fbd77d66bf6e01953ed4ca2fe3069764736f6c63430008110033
Deployed Bytecode Sourcemap
19805:7680:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8119:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20872:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10469:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26777:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20033:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9238:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11250:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26904:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20751:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20405:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11954:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20831:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25784:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20372:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25512:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20146:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23234:267;;;;;;;;;;;;;:::i;:::-;;20467:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20972:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23509:264;;;;;;;;;;;;;:::i;:::-;;20303:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9409:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6932:148;;;;;;;;;;;;;:::i;:::-;;27243:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6718:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8338:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12695:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9742:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26197:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26522:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20942:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9998:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20793:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27084:151;;;;;;;;;;;;;:::i;:::-;;7088:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26327:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8119:100;8173:13;8206:5;8199:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8119:100;:::o;20872:34::-;;;;:::o;10469:201::-;10552:4;10569:13;10585:12;:10;:12::i;:::-;10569:28;;10608:32;10617:5;10624:7;10633:6;10608:8;:32::i;:::-;10658:4;10651:11;;;10469:201;;;;:::o;26777:119::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26860:3:::1;26851:6;:12;;;;26884:4;26874:7;:14;;;;26777:119:::0;;:::o;20033:106::-;;;;;;;;;;;;;:::o;9238:108::-;9299:7;9326:12;;9319:19;;9238:108;:::o;11250:295::-;11381:4;11398:15;11416:12;:10;:12::i;:::-;11398:30;;11439:38;11455:4;11461:7;11470:6;11439:15;:38::i;:::-;11488:27;11498:4;11504:2;11508:6;11488:9;:27::i;:::-;11533:4;11526:11;;;11250:295;;;;;:::o;26904:135::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27024:7:::1;27006:15;:25;;;;:::i;:::-;26987:16;:44;;;;26904:135:::0;:::o;20751:35::-;;;;:::o;20405:27::-;;;;:::o;9081:92::-;9139:5;9164:1;9157:8;;9081:92;:::o;11954:238::-;12042:4;12059:13;12075:12;:10;:12::i;:::-;12059:28;;12098:64;12107:5;12114:7;12151:10;12123:25;12133:5;12140:7;12123:9;:25::i;:::-;:38;;;;:::i;:::-;12098:8;:64::i;:::-;12180:4;12173:11;;;11954:238;;;;:::o;20831:34::-;;;;:::o;25784:161::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25896:41:::1;25909:9;;25920:16;25896:12;:41::i;:::-;25784:161:::0;;;:::o;20372:26::-;;;;:::o;25512:264::-;25558:7;25579:21;25617:1;25603:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25579:40;;25640:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25630:4;25635:1;25630:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25691:4;25673;25678:1;25673:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25714:15;;;;;;;;;;;:29;;;25744:14;;25760:4;25714:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25766:1;25714:54;;;;;;;;:::i;:::-;;;;;;;;25707:61;;;25512:264;:::o;20146:25::-;;;;;;;;;;;;;:::o;23234:267::-;23276:28;23307:24;23325:4;23307:9;:24::i;:::-;23276:55;;23369:1;23346:20;:24;23342:152;;;23392:16;;;;;;;;;;;23387:96;;23429:38;23446:20;23429:16;:38::i;:::-;23387:96;23342:152;23265:236;23234:267::o;20467:50::-;;;;:::o;20972:41::-;;;;:::o;23509:264::-;23559:13;23575:5;23559:21;;23591:17;23664:5;23643:15;23626:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;23616:44;;;;;;23611:50;;:58;;;;:::i;:::-;23591:78;;23705:12;23680:22;:37;;;;23733:32;23752:12;23733:32;;;;;;:::i;:::-;;;;;;;;23548:225;;23509:264::o;20303:62::-;;;;:::o;9409:127::-;9483:7;9510:9;:18;9520:7;9510:18;;;;;;;;;;;;;;;;9503:25;;9409:127;;;:::o;6932:148::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7039:1:::1;7002:40;;7023:6;;;;;;;;;;;7002:40;;;;;;;;;;;;7070:1;7053:6;;:19;;;;;;;;;;;;;;;;;;6932:148::o:0;27243:237::-;27316:17;27343:15;27316:43;;27370:15;27388:10;:20;;;27417:4;27388:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27370:53;;27434:10;:19;;;27454:8;;;;;;;;;;;27464:7;27434:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27305:175;;27243:237;:::o;6718:79::-;6756:7;6783:6;;;;;;;;;;;6776:13;;6718:79;:::o;8338:104::-;8394:13;8427:7;8420:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8338:104;:::o;12695:436::-;12788:4;12805:13;12821:12;:10;:12::i;:::-;12805:28;;12844:24;12871:25;12881:5;12888:7;12871:9;:25::i;:::-;12844:52;;12935:15;12915:16;:35;;12907:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13028:60;13037:5;13044:7;13072:15;13053:16;:34;13028:8;:60::i;:::-;13119:4;13112:11;;;;12695:436;;;;:::o;9742:193::-;9821:4;9838:13;9854:12;:10;:12::i;:::-;9838:28;;9877;9887:5;9894:2;9898:6;9877:9;:28::i;:::-;9923:4;9916:11;;;9742:193;;;;:::o;26197:122::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26296:15:::1;26279:14;:32;;;;26197:122:::0;:::o;26522:247::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26654:8:::1;26636:15;:26;;;;26687:4;26673:11;:18;;;;26719:7;26702:14;:24;;;;26754:7;26737:14;:24;;;;26522:247:::0;;;;:::o;20942:23::-;;;;;;;;;;;;;:::o;9998:151::-;10087:7;10114:11;:18;10126:5;10114:18;;;;;;;;;;;;;;;:27;10133:7;10114:27;;;;;;;;;;;;;;;;10107:34;;9998:151;;;;:::o;20793:31::-;;;;:::o;27084:151::-;27136:18;27157:21;27136:42;;27197:8;;;;;;;;;;;27189:26;;:38;27216:10;27189:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27125:110;27084:151::o;7088:244::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7197:1:::1;7177:22;;:8;:22;;::::0;7169:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7287:8;7258:38;;7279:6;;;;;;;;;;;7258:38;;;;;;;;;;;;7316:8;7307:6;;:17;;;;;;;;;;;;;;;;;;7088:244:::0;:::o;26327:187::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26446:8:::1;26434:9;;:20;;;;;;;;;;;;;;;;;;26473:4;26465:5;;:12;;;;;;;;;;;;;;;;;;26499:7;26488:8;;:18;;;;;;;;;;;;;;;;;;26327:187:::0;;;:::o;3060:98::-;3113:7;3140:10;3133:17;;3060:98;:::o;16320:380::-;16473:1;16456:19;;:5;:19;;;16448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16554:1;16535:21;;:7;:21;;;16527:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16638:6;16608:11;:18;16620:5;16608:18;;;;;;;;;;;;;;;:27;16627:7;16608:27;;;;;;;;;;;;;;;:36;;;;16676:7;16660:32;;16669:5;16660:32;;;16685:6;16660:32;;;;;;:::i;:::-;;;;;;;;16320:380;;;:::o;16991:453::-;17126:24;17153:25;17163:5;17170:7;17153:9;:25::i;:::-;17126:52;;17213:17;17193:16;:37;17189:248;;17275:6;17255:16;:26;;17247:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17359:51;17368:5;17375:7;17403:6;17384:16;:25;17359:8;:51::i;:::-;17189:248;17115:329;16991:453;;;:::o;21363:1861::-;21477:1;21461:18;;:4;:18;;;21453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21554:1;21540:16;;:2;:16;;;21532:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21624:1;21615:6;:10;21607:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21682:17;21714:13;21731:18;:24;21750:4;21731:24;;;;;;;;;;;;;;;;;;;;;;;;;21730:25;:52;;;;;21760:18;:22;21779:2;21760:22;;;;;;;;;;;;;;;;;;;;;;;;;21759:23;21730:52;:71;;;;;21794:7;:5;:7::i;:::-;21786:15;;:4;:15;;;;21730:71;:88;;;;;21811:7;:5;:7::i;:::-;21805:13;;:2;:13;;;;21730:88;21714:104;;21839:7;:5;:7::i;:::-;21831:15;;:4;:15;;;;:32;;;;;21856:7;:5;:7::i;:::-;21850:13;;:2;:13;;;;21831:32;21828:1389;;;21883:8;21880:626;;;21924:27;21947:3;21924:18;21935:6;;21924;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21912:39;;21982:10;;;;;;;;;;;21974:18;;:4;:18;;;;:38;;;;;22002:10;;;;;;;;;;;21996:16;;:2;:16;;;21974:38;21970:521;;;22049:28;22073:3;22049:19;22060:7;;22049:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;22037:40;;22100:28;22131:24;22149:4;22131:9;:24::i;:::-;22100:55;;22205:1;22182:20;:24;22178:294;;;22235:19;22257:15;:13;:15::i;:::-;22235:37;;22327:11;22303:20;:35;;:56;;;;;22343:16;;;;;;;;;;;22342:17;22303:56;22299:150;;;22392:29;22409:11;22392:16;:29::i;:::-;22299:150;22208:264;22178:294;22014:477;21970:521;21880:626;22520:22;22545:21;22556:9;22545:6;:10;;:21;;;;:::i;:::-;22520:46;;22581:21;22605:33;22623:14;22605:13;22615:2;22605:9;:13::i;:::-;:17;;:33;;;;:::i;:::-;22581:57;;22665:10;;;;;;;;;;;22657:18;;:4;:18;;;22653:142;;22721:16;;22704:13;:33;;22696:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22653:142;22821:10;;;;;;;;;;;22813:18;;:4;:18;;;;:38;;;;;22841:10;;;;;;;;;;;22835:16;;:2;:16;;;;22813:38;22809:162;;;22897:16;;22880:13;:33;;22872:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22809:162;23000:1;22988:9;:13;22985:100;;;23022:47;23038:4;23052;23059:9;23022:15;:47::i;:::-;22985:100;23098:41;23114:4;23120:2;23124:14;23098:15;:41::i;:::-;21865:1286;;21828:1389;;;23172:33;23188:4;23194:2;23198:6;23172:15;:33::i;:::-;21828:1389;21442:1782;;21363:1861;;;:::o;25953:236::-;26040:9;26035:147;26059:9;;:16;;26055:1;:20;26035:147;;;26097:12;26112:9;;26122:1;26112:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;26097:27;;26166:4;26139:18;:24;26158:4;26139:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;26082:100;26077:3;;;;;:::i;:::-;;;;26035:147;;;;25953:236;;;:::o;23780:1202::-;23906:16;23925:40;23961:3;23925:31;23941:14;;23925:11;:15;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;23906:59;;23976:23;24002:25;24018:8;24002:11;:15;;:25;;;;:::i;:::-;23976:51;;24038:21;24076:1;24062:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24038:40;;24107:4;24089;24094:1;24089:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24133:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24123:4;24128:1;24123:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24166:62;24183:4;24198:15;;;;;;;;;;;24216:11;24166:8;:62::i;:::-;24265:15;;;;;;;;;;;:66;;;24346:15;24376:1;24393:4;24420;24440:15;24265:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24487:15;24505:21;24487:39;;24537:16;24556:37;24589:3;24556:28;24568:15;;24556:7;:11;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;24537:56;;24604:12;24619:33;24648:3;24619:24;24631:11;;24619:7;:11;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24604:48;;24663:15;24681:36;24713:3;24681:27;24693:14;;24681:7;:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;24663:54;;24728:20;24751:36;24783:3;24751:27;24763:14;;24751:7;:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;24728:59;;24806:9;;;;;;;;;;;24798:27;;:37;24826:8;24798:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24856:5;;;;;;;;;;;24848:23;;:29;24872:4;24848:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24898:8;;;;;;;;;;;24890:26;;:35;24917:7;24890:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24938:36;24951:8;24961:12;24938;:36::i;:::-;23835:1147;;;;;;;;23780:1202;:::o;1732:471::-;1790:7;2040:1;2035;:6;2031:47;;2065:1;2058:8;;;;2031:47;2090:9;2106:1;2102;:5;;;;:::i;:::-;2090:17;;2135:1;2130;2126;:5;;;;:::i;:::-;:10;2118:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2194:1;2187:8;;;1732:471;;;;;:::o;2211:132::-;2269:7;2296:39;2300:1;2303;2296:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2289:46;;2211:132;;;;:::o;1388:136::-;1446:7;1473:43;1477:1;1480;1473:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1466:50;;1388:136;;;;:::o;1199:181::-;1257:7;1277:9;1293:1;1289;:5;;;;:::i;:::-;1277:17;;1318:1;1313;:6;;1305:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1371:1;1364:8;;;1199:181;;;;:::o;13601:671::-;13748:1;13732:18;;:4;:18;;;13724:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13825:1;13811:16;;:2;:16;;;13803:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13880:38;13901:4;13907:2;13911:6;13880:20;:38::i;:::-;13931:19;13953:9;:15;13963:4;13953:15;;;;;;;;;;;;;;;;13931:37;;14002:6;13987:11;:21;;13979:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14119:6;14105:11;:20;14087:9;:15;14097:4;14087:15;;;;;;;;;;;;;;;:38;;;;14164:6;14147:9;:13;14157:2;14147:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14203:2;14188:26;;14197:4;14188:26;;;14207:6;14188:26;;;;;;:::i;:::-;;;;;;;;14227:37;14247:4;14253:2;14257:6;14227:19;:37::i;:::-;13713:559;13601:671;;;:::o;24990:514::-;25138:62;25155:4;25170:15;;;;;;;;;;;25188:11;25138:8;:62::i;:::-;25243:15;;;;;;;;;;;:31;;;25282:9;25315:4;25335:11;25361:1;25404;25447:8;;;;;;;;;;;25470:15;25243:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24990:514;;:::o;2351:278::-;2437:7;2469:1;2465;:5;2472:12;2457:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2496:9;2512:1;2508;:5;;;;:::i;:::-;2496:17;;2620:1;2613:8;;;2351:278;;;;;:::o;1532:192::-;1618:7;1651:1;1646;:6;;1654:12;1638:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:9;1694:1;1690;:5;;;;:::i;:::-;1678:17;;1715:1;1708:8;;;1532:192;;;;;:::o;18044:125::-;;;;:::o;18773: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:474::-;3866:6;3874;3923:2;3911:9;3902:7;3898:23;3894:32;3891:119;;;3929:79;;:::i;:::-;3891:119;4049:1;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4020:117;4176:2;4202:53;4247:7;4238:6;4227:9;4223:22;4202:53;:::i;:::-;4192:63;;4147:118;3798:474;;;;;:::o;4278:60::-;4306:3;4327:5;4320:12;;4278:60;;;:::o;4344:142::-;4394:9;4427:53;4445:34;4454:24;4472:5;4454:24;:::i;:::-;4445:34;:::i;:::-;4427:53;:::i;:::-;4414:66;;4344:142;;;:::o;4492:126::-;4542:9;4575:37;4606:5;4575:37;:::i;:::-;4562:50;;4492:126;;;:::o;4624:153::-;4701:9;4734:37;4765:5;4734:37;:::i;:::-;4721:50;;4624:153;;;:::o;4783:185::-;4897:64;4955:5;4897:64;:::i;:::-;4892:3;4885:77;4783:185;;:::o;4974:276::-;5094:4;5132:2;5121:9;5117:18;5109:26;;5145:98;5240:1;5229:9;5225:17;5216:6;5145:98;:::i;:::-;4974:276;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:329::-;5940:6;5989:2;5977:9;5968:7;5964:23;5960:32;5957:119;;;5995:79;;:::i;:::-;5957:119;6115:1;6140:53;6185:7;6176:6;6165:9;6161:22;6140:53;:::i;:::-;6130:63;;6086:117;5881:329;;;;:::o;6216:86::-;6251:7;6291:4;6284:5;6280:16;6269:27;;6216:86;;;:::o;6308:112::-;6391:22;6407:5;6391:22;:::i;:::-;6386:3;6379:35;6308:112;;:::o;6426:214::-;6515:4;6553:2;6542:9;6538:18;6530:26;;6566:67;6630:1;6619:9;6615:17;6606:6;6566:67;:::i;:::-;6426:214;;;;:::o;6646:117::-;6755:1;6752;6745:12;6769:117;6878:1;6875;6868:12;6892:117;7001:1;6998;6991:12;7032:568;7105:8;7115:6;7165:3;7158:4;7150:6;7146:17;7142:27;7132:122;;7173:79;;:::i;:::-;7132:122;7286:6;7273:20;7263:30;;7316:18;7308:6;7305:30;7302:117;;;7338:79;;:::i;:::-;7302:117;7452:4;7444:6;7440:17;7428:29;;7506:3;7498:4;7490:6;7486:17;7476:8;7472:32;7469:41;7466:128;;;7513:79;;:::i;:::-;7466:128;7032:568;;;;;:::o;7606:116::-;7676:21;7691:5;7676:21;:::i;:::-;7669:5;7666:32;7656:60;;7712:1;7709;7702:12;7656:60;7606:116;:::o;7728:133::-;7771:5;7809:6;7796:20;7787:29;;7825:30;7849:5;7825:30;:::i;:::-;7728:133;;;;:::o;7867:698::-;7959:6;7967;7975;8024:2;8012:9;8003:7;7999:23;7995:32;7992:119;;;8030:79;;:::i;:::-;7992:119;8178:1;8167:9;8163:17;8150:31;8208:18;8200:6;8197:30;8194:117;;;8230:79;;:::i;:::-;8194:117;8343:80;8415:7;8406:6;8395:9;8391:22;8343:80;:::i;:::-;8325:98;;;;8121:312;8472:2;8498:50;8540:7;8531:6;8520:9;8516:22;8498:50;:::i;:::-;8488:60;;8443:115;7867:698;;;;;:::o;8571:118::-;8658:24;8676:5;8658:24;:::i;:::-;8653:3;8646:37;8571:118;;:::o;8695:222::-;8788:4;8826:2;8815:9;8811:18;8803:26;;8839:71;8907:1;8896:9;8892:17;8883:6;8839:71;:::i;:::-;8695:222;;;;:::o;8923:329::-;8982:6;9031:2;9019:9;9010:7;9006:23;9002:32;8999:119;;;9037:79;;:::i;:::-;8999:119;9157:1;9182:53;9227:7;9218:6;9207:9;9203:22;9182:53;:::i;:::-;9172:63;;9128:117;8923:329;;;;:::o;9258:765::-;9344:6;9352;9360;9368;9417:3;9405:9;9396:7;9392:23;9388:33;9385:120;;;9424:79;;:::i;:::-;9385:120;9544:1;9569:53;9614:7;9605:6;9594:9;9590:22;9569:53;:::i;:::-;9559:63;;9515:117;9671:2;9697:53;9742:7;9733:6;9722:9;9718:22;9697:53;:::i;:::-;9687:63;;9642:118;9799:2;9825:53;9870:7;9861:6;9850:9;9846:22;9825:53;:::i;:::-;9815:63;;9770:118;9927:2;9953:53;9998:7;9989:6;9978:9;9974:22;9953:53;:::i;:::-;9943:63;;9898:118;9258:765;;;;;;;:::o;10029:474::-;10097:6;10105;10154:2;10142:9;10133:7;10129:23;10125:32;10122:119;;;10160:79;;:::i;:::-;10122:119;10280:1;10305:53;10350:7;10341:6;10330:9;10326:22;10305:53;:::i;:::-;10295:63;;10251:117;10407:2;10433:53;10478:7;10469:6;10458:9;10454:22;10433:53;:::i;:::-;10423:63;;10378:118;10029:474;;;;;:::o;10509:619::-;10586:6;10594;10602;10651:2;10639:9;10630:7;10626:23;10622:32;10619:119;;;10657:79;;:::i;:::-;10619:119;10777:1;10802:53;10847:7;10838:6;10827:9;10823:22;10802:53;:::i;:::-;10792:63;;10748:117;10904:2;10930:53;10975:7;10966:6;10955:9;10951:22;10930:53;:::i;:::-;10920:63;;10875:118;11032:2;11058:53;11103:7;11094:6;11083:9;11079:22;11058:53;:::i;:::-;11048:63;;11003:118;10509:619;;;;;:::o;11134:180::-;11182:77;11179:1;11172:88;11279:4;11276:1;11269:15;11303:4;11300:1;11293:15;11320:320;11364:6;11401:1;11395:4;11391:12;11381:22;;11448:1;11442:4;11438:12;11469:18;11459:81;;11525:4;11517:6;11513:17;11503:27;;11459:81;11587:2;11579:6;11576:14;11556:18;11553:38;11550:84;;11606:18;;:::i;:::-;11550:84;11371:269;11320:320;;;:::o;11646:182::-;11786:34;11782:1;11774:6;11770:14;11763:58;11646:182;:::o;11834:366::-;11976:3;11997:67;12061:2;12056:3;11997:67;:::i;:::-;11990:74;;12073:93;12162:3;12073:93;:::i;:::-;12191:2;12186:3;12182:12;12175:19;;11834:366;;;:::o;12206:419::-;12372:4;12410:2;12399:9;12395:18;12387:26;;12459:9;12453:4;12449:20;12445:1;12434:9;12430:17;12423:47;12487:131;12613:4;12487:131;:::i;:::-;12479:139;;12206:419;;;:::o;12631:180::-;12679:77;12676:1;12669:88;12776:4;12773:1;12766:15;12800:4;12797:1;12790:15;12817:410;12857:7;12880:20;12898:1;12880:20;:::i;:::-;12875:25;;12914:20;12932:1;12914:20;:::i;:::-;12909:25;;12969:1;12966;12962:9;12991:30;13009:11;12991:30;:::i;:::-;12980:41;;13170:1;13161:7;13157:15;13154:1;13151:22;13131:1;13124:9;13104:83;13081:139;;13200:18;;:::i;:::-;13081:139;12865:362;12817:410;;;;:::o;13233:191::-;13273:3;13292:20;13310:1;13292:20;:::i;:::-;13287:25;;13326:20;13344:1;13326:20;:::i;:::-;13321:25;;13369:1;13366;13362:9;13355:16;;13390:3;13387:1;13384:10;13381:36;;;13397:18;;:::i;:::-;13381:36;13233:191;;;;:::o;13430:180::-;13478:77;13475:1;13468:88;13575:4;13572:1;13565:15;13599:4;13596:1;13589:15;13616:143;13673:5;13704:6;13698:13;13689:22;;13720:33;13747:5;13720:33;:::i;:::-;13616:143;;;;:::o;13765:351::-;13835:6;13884:2;13872:9;13863:7;13859:23;13855:32;13852:119;;;13890:79;;:::i;:::-;13852:119;14010:1;14035:64;14091:7;14082:6;14071:9;14067:22;14035:64;:::i;:::-;14025:74;;13981:128;13765:351;;;;:::o;14122:180::-;14170:77;14167:1;14160:88;14267:4;14264:1;14257:15;14291:4;14288:1;14281:15;14308:114;14375:6;14409:5;14403:12;14393:22;;14308:114;;;:::o;14428:184::-;14527:11;14561:6;14556:3;14549:19;14601:4;14596:3;14592:14;14577:29;;14428:184;;;;:::o;14618:132::-;14685:4;14708:3;14700:11;;14738:4;14733:3;14729:14;14721:22;;14618:132;;;:::o;14756:108::-;14833:24;14851:5;14833:24;:::i;:::-;14828:3;14821:37;14756:108;;:::o;14870:179::-;14939:10;14960:46;15002:3;14994:6;14960:46;:::i;:::-;15038:4;15033:3;15029:14;15015:28;;14870:179;;;;:::o;15055:113::-;15125:4;15157;15152:3;15148:14;15140:22;;15055:113;;;:::o;15204:732::-;15323:3;15352:54;15400:5;15352:54;:::i;:::-;15422:86;15501:6;15496:3;15422:86;:::i;:::-;15415:93;;15532:56;15582:5;15532:56;:::i;:::-;15611:7;15642:1;15627:284;15652:6;15649:1;15646:13;15627:284;;;15728:6;15722:13;15755:63;15814:3;15799:13;15755:63;:::i;:::-;15748:70;;15841:60;15894:6;15841:60;:::i;:::-;15831:70;;15687:224;15674:1;15671;15667:9;15662:14;;15627:284;;;15631:14;15927:3;15920:10;;15328:608;;;15204:732;;;;:::o;15942:483::-;16113:4;16151:2;16140:9;16136:18;16128:26;;16164:71;16232:1;16221:9;16217:17;16208:6;16164:71;:::i;:::-;16282:9;16276:4;16272:20;16267:2;16256:9;16252:18;16245:48;16310:108;16413:4;16404:6;16310:108;:::i;:::-;16302:116;;15942:483;;;;;:::o;16431:281::-;16514:27;16536:4;16514:27;:::i;:::-;16506:6;16502:40;16644:6;16632:10;16629:22;16608:18;16596:10;16593:34;16590:62;16587:88;;;16655:18;;:::i;:::-;16587:88;16695:10;16691:2;16684:22;16474:238;16431:281;;:::o;16718:129::-;16752:6;16779:20;;:::i;:::-;16769:30;;16808:33;16836:4;16828:6;16808:33;:::i;:::-;16718:129;;;:::o;16853:311::-;16930:4;17020:18;17012:6;17009:30;17006:56;;;17042:18;;:::i;:::-;17006:56;17092:4;17084:6;17080:17;17072:25;;17152:4;17146;17142:15;17134:23;;16853:311;;;:::o;17170:143::-;17227:5;17258:6;17252:13;17243:22;;17274:33;17301:5;17274:33;:::i;:::-;17170:143;;;;:::o;17336:732::-;17443:5;17468:81;17484:64;17541:6;17484:64;:::i;:::-;17468:81;:::i;:::-;17459:90;;17569:5;17598:6;17591:5;17584:21;17632:4;17625:5;17621:16;17614:23;;17685:4;17677:6;17673:17;17665:6;17661:30;17714:3;17706:6;17703:15;17700:122;;;17733:79;;:::i;:::-;17700:122;17848:6;17831:231;17865:6;17860:3;17857:15;17831:231;;;17940:3;17969:48;18013:3;18001:10;17969:48;:::i;:::-;17964:3;17957:61;18047:4;18042:3;18038:14;18031:21;;17907:155;17891:4;17886:3;17882:14;17875:21;;17831:231;;;17835:21;17449:619;;17336:732;;;;;:::o;18091:385::-;18173:5;18222:3;18215:4;18207:6;18203:17;18199:27;18189:122;;18230:79;;:::i;:::-;18189:122;18340:6;18334:13;18365:105;18466:3;18458:6;18451:4;18443:6;18439:17;18365:105;:::i;:::-;18356:114;;18179:297;18091:385;;;;:::o;18482:554::-;18577:6;18626:2;18614:9;18605:7;18601:23;18597:32;18594:119;;;18632:79;;:::i;:::-;18594:119;18773:1;18762:9;18758:17;18752:24;18803:18;18795:6;18792:30;18789:117;;;18825:79;;:::i;:::-;18789:117;18930:89;19011:7;19002:6;18991:9;18987:22;18930:89;:::i;:::-;18920:99;;18723:306;18482:554;;;;:::o;19042:79::-;19081:7;19110:5;19099:16;;19042:79;;;:::o;19127:157::-;19232:45;19252:24;19270:5;19252:24;:::i;:::-;19232:45;:::i;:::-;19227:3;19220:58;19127:157;;:::o;19290:256::-;19402:3;19417:75;19488:3;19479:6;19417:75;:::i;:::-;19517:2;19512:3;19508:12;19501:19;;19537:3;19530:10;;19290:256;;;;:::o;19552:180::-;19600:77;19597:1;19590:88;19697:4;19694:1;19687:15;19721:4;19718:1;19711:15;19738:176;19770:1;19787:20;19805:1;19787:20;:::i;:::-;19782:25;;19821:20;19839:1;19821:20;:::i;:::-;19816:25;;19860:1;19850:35;;19865:18;;:::i;:::-;19850:35;19906:1;19903;19899:9;19894:14;;19738:176;;;;:::o;19920:351::-;19990:6;20039:2;20027:9;20018:7;20014:23;20010:32;20007:119;;;20045:79;;:::i;:::-;20007:119;20165:1;20190:64;20246:7;20237:6;20226:9;20222:22;20190:64;:::i;:::-;20180:74;;20136:128;19920:351;;;;:::o;20277:332::-;20398:4;20436:2;20425:9;20421:18;20413:26;;20449:71;20517:1;20506:9;20502:17;20493:6;20449:71;:::i;:::-;20530:72;20598:2;20587:9;20583:18;20574:6;20530:72;:::i;:::-;20277:332;;;;;:::o;20615:137::-;20669:5;20700:6;20694:13;20685:22;;20716:30;20740:5;20716:30;:::i;:::-;20615:137;;;;:::o;20758:345::-;20825:6;20874:2;20862:9;20853:7;20849:23;20845:32;20842:119;;;20880:79;;:::i;:::-;20842:119;21000:1;21025:61;21078:7;21069:6;21058:9;21054:22;21025:61;:::i;:::-;21015:71;;20971:125;20758:345;;;;:::o;21109:224::-;21249:34;21245:1;21237:6;21233:14;21226:58;21318:7;21313:2;21305:6;21301:15;21294:32;21109:224;:::o;21339:366::-;21481:3;21502:67;21566:2;21561:3;21502:67;:::i;:::-;21495:74;;21578:93;21667:3;21578:93;:::i;:::-;21696:2;21691:3;21687:12;21680:19;;21339:366;;;:::o;21711:419::-;21877:4;21915:2;21904:9;21900:18;21892:26;;21964:9;21958:4;21954:20;21950:1;21939:9;21935:17;21928:47;21992:131;22118:4;21992:131;:::i;:::-;21984:139;;21711:419;;;:::o;22136:225::-;22276:34;22272:1;22264:6;22260:14;22253:58;22345:8;22340:2;22332:6;22328:15;22321:33;22136:225;:::o;22367:366::-;22509:3;22530:67;22594:2;22589:3;22530:67;:::i;:::-;22523:74;;22606:93;22695:3;22606:93;:::i;:::-;22724:2;22719:3;22715:12;22708:19;;22367:366;;;:::o;22739:419::-;22905:4;22943:2;22932:9;22928:18;22920:26;;22992:9;22986:4;22982:20;22978:1;22967:9;22963:17;22956:47;23020:131;23146:4;23020:131;:::i;:::-;23012:139;;22739:419;;;:::o;23164:223::-;23304:34;23300:1;23292:6;23288:14;23281:58;23373:6;23368:2;23360:6;23356:15;23349:31;23164:223;:::o;23393:366::-;23535:3;23556:67;23620:2;23615:3;23556:67;:::i;:::-;23549:74;;23632:93;23721:3;23632:93;:::i;:::-;23750:2;23745:3;23741:12;23734:19;;23393:366;;;:::o;23765:419::-;23931:4;23969:2;23958:9;23954:18;23946:26;;24018:9;24012:4;24008:20;24004:1;23993:9;23989:17;23982:47;24046:131;24172:4;24046:131;:::i;:::-;24038:139;;23765:419;;;:::o;24190:221::-;24330:34;24326:1;24318:6;24314:14;24307:58;24399:4;24394:2;24386:6;24382:15;24375:29;24190:221;:::o;24417:366::-;24559:3;24580:67;24644:2;24639:3;24580:67;:::i;:::-;24573:74;;24656:93;24745:3;24656:93;:::i;:::-;24774:2;24769:3;24765:12;24758:19;;24417:366;;;:::o;24789:419::-;24955:4;24993:2;24982:9;24978:18;24970:26;;25042:9;25036:4;25032:20;25028:1;25017:9;25013:17;25006:47;25070:131;25196:4;25070:131;:::i;:::-;25062:139;;24789:419;;;:::o;25214:179::-;25354:31;25350:1;25342:6;25338:14;25331:55;25214:179;:::o;25399:366::-;25541:3;25562:67;25626:2;25621:3;25562:67;:::i;:::-;25555:74;;25638:93;25727:3;25638:93;:::i;:::-;25756:2;25751:3;25747:12;25740:19;;25399:366;;;:::o;25771:419::-;25937:4;25975:2;25964:9;25960:18;25952:26;;26024:9;26018:4;26014:20;26010:1;25999:9;25995:17;25988:47;26052:131;26178:4;26052:131;:::i;:::-;26044:139;;25771:419;;;:::o;26196:224::-;26336:34;26332:1;26324:6;26320:14;26313:58;26405:7;26400:2;26392:6;26388:15;26381:32;26196:224;:::o;26426:366::-;26568:3;26589:67;26653:2;26648:3;26589:67;:::i;:::-;26582:74;;26665:93;26754:3;26665:93;:::i;:::-;26783:2;26778:3;26774:12;26767:19;;26426:366;;;:::o;26798:419::-;26964:4;27002:2;26991:9;26987:18;26979:26;;27051:9;27045:4;27041:20;27037:1;27026:9;27022:17;27015:47;27079:131;27205:4;27079:131;:::i;:::-;27071:139;;26798:419;;;:::o;27223:222::-;27363:34;27359:1;27351:6;27347:14;27340:58;27432:5;27427:2;27419:6;27415:15;27408:30;27223:222;:::o;27451:366::-;27593:3;27614:67;27678:2;27673:3;27614:67;:::i;:::-;27607:74;;27690:93;27779:3;27690:93;:::i;:::-;27808:2;27803:3;27799:12;27792:19;;27451:366;;;:::o;27823:419::-;27989:4;28027:2;28016:9;28012:18;28004:26;;28076:9;28070:4;28066:20;28062:1;28051:9;28047:17;28040:47;28104:131;28230:4;28104:131;:::i;:::-;28096:139;;27823:419;;;:::o;28248:228::-;28388:34;28384:1;28376:6;28372:14;28365:58;28457:11;28452:2;28444:6;28440:15;28433:36;28248:228;:::o;28482:366::-;28624:3;28645:67;28709:2;28704:3;28645:67;:::i;:::-;28638:74;;28721:93;28810:3;28721:93;:::i;:::-;28839:2;28834:3;28830:12;28823:19;;28482:366;;;:::o;28854:419::-;29020:4;29058:2;29047:9;29043:18;29035:26;;29107:9;29101:4;29097:20;29093:1;29082:9;29078:17;29071:47;29135:131;29261:4;29135:131;:::i;:::-;29127:139;;28854:419;;;:::o;29279:224::-;29419:34;29415:1;29407:6;29403:14;29396:58;29488:7;29483:2;29475:6;29471:15;29464:32;29279:224;:::o;29509:366::-;29651:3;29672:67;29736:2;29731:3;29672:67;:::i;:::-;29665:74;;29748:93;29837:3;29748:93;:::i;:::-;29866:2;29861:3;29857:12;29850:19;;29509:366;;;:::o;29881:419::-;30047:4;30085:2;30074:9;30070:18;30062:26;;30134:9;30128:4;30124:20;30120:1;30109:9;30105:17;30098:47;30162:131;30288:4;30162:131;:::i;:::-;30154:139;;29881:419;;;:::o;30306:233::-;30345:3;30368:24;30386:5;30368:24;:::i;:::-;30359:33;;30414:66;30407:5;30404:77;30401:103;;30484:18;;:::i;:::-;30401:103;30531:1;30524:5;30520:13;30513:20;;30306:233;;;:::o;30545:85::-;30590:7;30619:5;30608:16;;30545:85;;;:::o;30636:158::-;30694:9;30727:61;30745:42;30754:32;30780:5;30754:32;:::i;:::-;30745:42;:::i;:::-;30727:61;:::i;:::-;30714:74;;30636:158;;;:::o;30800:147::-;30895:45;30934:5;30895:45;:::i;:::-;30890:3;30883:58;30800:147;;:::o;30953:831::-;31216:4;31254:3;31243:9;31239:19;31231:27;;31268:71;31336:1;31325:9;31321:17;31312:6;31268:71;:::i;:::-;31349:80;31425:2;31414:9;31410:18;31401:6;31349:80;:::i;:::-;31476:9;31470:4;31466:20;31461:2;31450:9;31446:18;31439:48;31504:108;31607:4;31598:6;31504:108;:::i;:::-;31496:116;;31622:72;31690:2;31679:9;31675:18;31666:6;31622:72;:::i;:::-;31704:73;31772:3;31761:9;31757:19;31748:6;31704:73;:::i;:::-;30953:831;;;;;;;;:::o;31790:185::-;31830:1;31847:20;31865:1;31847:20;:::i;:::-;31842:25;;31881:20;31899:1;31881:20;:::i;:::-;31876:25;;31920:1;31910:35;;31925:18;;:::i;:::-;31910:35;31967:1;31964;31960:9;31955:14;;31790:185;;;;:::o;31981:220::-;32121:34;32117:1;32109:6;32105:14;32098:58;32190:3;32185:2;32177:6;32173:15;32166:28;31981:220;:::o;32207:366::-;32349:3;32370:67;32434:2;32429:3;32370:67;:::i;:::-;32363:74;;32446:93;32535:3;32446:93;:::i;:::-;32564:2;32559:3;32555:12;32548:19;;32207:366;;;:::o;32579:419::-;32745:4;32783:2;32772:9;32768:18;32760:26;;32832:9;32826:4;32822:20;32818:1;32807:9;32803:17;32796:47;32860:131;32986:4;32860:131;:::i;:::-;32852:139;;32579:419;;;:::o;33004:177::-;33144:29;33140:1;33132:6;33128:14;33121:53;33004:177;:::o;33187:366::-;33329:3;33350:67;33414:2;33409:3;33350:67;:::i;:::-;33343:74;;33426:93;33515:3;33426:93;:::i;:::-;33544:2;33539:3;33535:12;33528:19;;33187:366;;;:::o;33559:419::-;33725:4;33763:2;33752:9;33748:18;33740:26;;33812:9;33806:4;33802:20;33798:1;33787:9;33783:17;33776:47;33840:131;33966:4;33840:131;:::i;:::-;33832:139;;33559:419;;;:::o;33984:225::-;34124:34;34120:1;34112:6;34108:14;34101:58;34193:8;34188:2;34180:6;34176:15;34169:33;33984:225;:::o;34215:366::-;34357:3;34378:67;34442:2;34437:3;34378:67;:::i;:::-;34371:74;;34454:93;34543:3;34454:93;:::i;:::-;34572:2;34567:3;34563:12;34556:19;;34215:366;;;:::o;34587:419::-;34753:4;34791:2;34780:9;34776:18;34768:26;;34840:9;34834:4;34830:20;34826:1;34815:9;34811:17;34804:47;34868:131;34994:4;34868:131;:::i;:::-;34860:139;;34587:419;;;:::o;35012:807::-;35261:4;35299:3;35288:9;35284:19;35276:27;;35313:71;35381:1;35370:9;35366:17;35357:6;35313:71;:::i;:::-;35394:72;35462:2;35451:9;35447:18;35438:6;35394:72;:::i;:::-;35476:80;35552:2;35541:9;35537:18;35528:6;35476:80;:::i;:::-;35566;35642:2;35631:9;35627:18;35618:6;35566:80;:::i;:::-;35656:73;35724:3;35713:9;35709:19;35700:6;35656:73;:::i;:::-;35739;35807:3;35796:9;35792:19;35783:6;35739:73;:::i;:::-;35012:807;;;;;;;;;:::o;35825:663::-;35913:6;35921;35929;35978:2;35966:9;35957:7;35953:23;35949:32;35946:119;;;35984:79;;:::i;:::-;35946:119;36104:1;36129:64;36185:7;36176:6;36165:9;36161:22;36129:64;:::i;:::-;36119:74;;36075:128;36242:2;36268:64;36324:7;36315:6;36304:9;36300:22;36268:64;:::i;:::-;36258:74;;36213:129;36381:2;36407:64;36463:7;36454:6;36443:9;36439:22;36407:64;:::i;:::-;36397:74;;36352:129;35825:663;;;;;:::o;36494:194::-;36534:4;36554:20;36572:1;36554:20;:::i;:::-;36549:25;;36588:20;36606:1;36588:20;:::i;:::-;36583:25;;36632:1;36629;36625:9;36617:17;;36656:1;36650:4;36647:11;36644:37;;;36661:18;;:::i;:::-;36644:37;36494:194;;;;:::o
Swarm Source
ipfs://670b5a4a0acd89eb0cc5c8a2f419e509f6fbd77d66bf6e01953ed4ca2fe30697
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.