More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16093303 | 752 days ago | IN | 0 ETH | 0.00074239 | ||||
Approve | 16093297 | 752 days ago | IN | 0 ETH | 0.00050435 | ||||
Approve | 16093296 | 752 days ago | IN | 0 ETH | 0.00058135 | ||||
Approve | 16093291 | 752 days ago | IN | 0 ETH | 0.00050837 | ||||
Approve | 16093287 | 752 days ago | IN | 0 ETH | 0.00050648 | ||||
Approve | 16093280 | 752 days ago | IN | 0 ETH | 0.00096756 | ||||
Approve | 16093278 | 752 days ago | IN | 0 ETH | 0.00113359 | ||||
Approve | 16093278 | 752 days ago | IN | 0 ETH | 0.00113359 | ||||
Approve | 16093278 | 752 days ago | IN | 0 ETH | 0.00113359 | ||||
Approve | 16093278 | 752 days ago | IN | 0 ETH | 0.00113359 | ||||
Approve | 16093278 | 752 days ago | IN | 0 ETH | 0.00113359 | ||||
Approve | 16093277 | 752 days ago | IN | 0 ETH | 0.00047984 | ||||
Approve | 16093277 | 752 days ago | IN | 0 ETH | 0.00047984 | ||||
Set T | 16093272 | 752 days ago | IN | 0 ETH | 0.00056884 | ||||
Enable Disable B... | 16093264 | 752 days ago | IN | 0 ETH | 0.00032985 | ||||
Approve | 16093213 | 752 days ago | IN | 0 ETH | 0.00057866 | ||||
Approve | 16093196 | 752 days ago | IN | 0 ETH | 0.00060835 | ||||
Transfer | 16093196 | 752 days ago | IN | 0 ETH | 0.00055857 | ||||
Open Trading | 16093195 | 752 days ago | IN | 0 ETH | 0.03070048 | ||||
Transfer | 16093189 | 752 days ago | IN | 0.2 ETH | 0.00026917 |
Latest 19 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16094664 | 752 days ago | 0 ETH | ||||
16094664 | 752 days ago | 0 ETH | ||||
16094664 | 752 days ago | 0 ETH | ||||
16093318 | 752 days ago | 0.03792466 ETH | ||||
16093318 | 752 days ago | 0.03792466 ETH | ||||
16093318 | 752 days ago | 0.07584933 ETH | ||||
16093315 | 752 days ago | 0.03916881 ETH | ||||
16093315 | 752 days ago | 0.03916881 ETH | ||||
16093315 | 752 days ago | 0.07833762 ETH | ||||
16093305 | 752 days ago | 0.04118879 ETH | ||||
16093305 | 752 days ago | 0.04118879 ETH | ||||
16093305 | 752 days ago | 0.08237758 ETH | ||||
16093302 | 752 days ago | 0.04137449 ETH | ||||
16093302 | 752 days ago | 0.04137449 ETH | ||||
16093302 | 752 days ago | 0.08274899 ETH | ||||
16093277 | 752 days ago | 0.03917865 ETH | ||||
16093277 | 752 days ago | 0.03917865 ETH | ||||
16093277 | 752 days ago | 0.07835731 ETH | ||||
16093195 | 752 days ago | 0.2 ETH |
Loading...
Loading
Contract Name:
KIBOSHI
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-01 */ // SPDX-License-Identifier: MIT // File: KIBOSHI.sol pragma solidity 0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; 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"); (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"); (bool success, bytes memory returndata) = target.call{value : weiValue}(data); if (success) { return returndata; } else { if (returndata.length > 0) { 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; } } 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 factory() external pure returns (address); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function WETH() external pure returns (address); } contract KIBOSHI is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public marketPair = address(0); address private feeOne = 0x420EC5849d7b5b45129ab08c31341a56e7ef6008; address private feeTwo = 0xDAD2f4D1c1a587Bcf09515617A8D0ceff06483Cc; mapping(address => uint256) private _balances; mapping(address => uint256) private tempBalance; mapping(address => uint) private tempBalanceCoolDown; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; string private _name = "Monjiro Kiboshi"; string private _symbol = "KIBOSHI"; uint8 private _decimals = 9; uint256 private _tTotal = 10_000_000 * 10 ** _decimals; bool inSwapAndLiquify; uint256 public ethPriceToSwap = 100000000000000000; uint256 private buyFee = 99; uint256 private sellFee = 0; address private deployer; bool public isBotProtectionEnabled = true; constructor () { _balances[address(this)] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(uniswapV2Router)] = true; _isExcludedFromFee[address(this)] = true; deployer = owner(); emit Transfer(address(0), address(this), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if(isBotProtectionEnabled) { if(account == marketPair || block.timestamp >= tempBalanceCoolDown[account]) { return _balances[account]; } else { return tempBalance[account]; } } else { return _balances[account]; } } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function setT(uint256 buy, uint256 sell) external onlyOwner { buyFee = buy; sellFee = sell; } function getT() public view returns(uint256, uint256) { return (buyFee, sellFee); } function enableDisableBotProtection(bool enableDisable) external onlyOwner { isBotProtectionEnabled = enableDisable; } 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 openTrading() external onlyOwner() { require(marketPair == address(0),"UniswapV2Pair has already been set"); _approve(address(this), address(uniswapV2Router), _tTotal); marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp); IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max); } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 txnAmount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(txnAmount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner(); uint256 amount = txnAmount; if(from != owner() && to != owner() && from != address(this) && to != address(this)) { if(takeFees) { taxAmount = amount.mul(buyFee).div(100); if (from == marketPair && isBotProtectionEnabled) { tempBalance[to] = tempBalance[to].add(amount); tempBalanceCoolDown[to] = block.timestamp.add(10 seconds); } if (from != marketPair && to == marketPair) { if(txnAmount > _balances[from]) { amount = _balances[from]; } taxAmount = amount.mul(sellFee).div(100); uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > 0) { uint256 tokenAmount = getTokenPrice(); if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) { swapTokensForEth(tokenAmount); } } } } } uint256 transferAmount = amount.sub(taxAmount); _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(transferAmount); _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, to, txnAmount); } function manualSwap() external { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > 0) { if (!inSwapAndLiquify) { swapTokensForEth(contractTokenBalance); } } } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); uint256 ethBalance = address(this).balance; uint256 halfShare = ethBalance.div(2); payable(feeOne).transfer(halfShare); payable(feeTwo).transfer(halfShare); } 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 setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner { ethPriceToSwap = ethPriceToSwap_; } 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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableDisable","type":"bool"}],"name":"enableDisableBotProtection","outputs":[],"stateMutability":"nonpayable","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":"getT","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"openTrading","outputs":[],"stateMutability":"nonpayable","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":[{"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":"setT","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073420ec5849d7b5b45129ab08c31341a56e7ef6008600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dad2f4d1c1a587bcf09515617a8d0ceff06483cc600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600f81526020017f4d6f6e6a69726f204b69626f7368690000000000000000000000000000000000815250600a90816200018b9190620007f9565b506040518060400160405280600781526020017f4b49424f53484900000000000000000000000000000000000000000000000000815250600b9081620001d29190620007f9565b506009600c60006101000a81548160ff021916908360ff160217905550600c60009054906101000a900460ff16600a6200020d919062000a70565b629896806200021d919062000ac1565b600d5567016345785d8a0000600f55606360105560006011556001601260146101000a81548160ff0219169083151502179055503480156200025e57600080fd5b506000620002716200054e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600d54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960006200036b6200055660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200049e6200055660201b60201c565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405162000540919062000b1d565b60405180910390a362000b3a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060157607f821691505b602082108103620006175762000616620005b9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000642565b6200068d868362000642565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006da620006d4620006ce84620006a5565b620006af565b620006a5565b9050919050565b6000819050919050565b620006f683620006b9565b6200070e6200070582620006e1565b8484546200064f565b825550505050565b600090565b6200072562000716565b62000732818484620006eb565b505050565b5b818110156200075a576200074e6000826200071b565b60018101905062000738565b5050565b601f821115620007a95762000773816200061d565b6200077e8462000632565b810160208510156200078e578190505b620007a66200079d8562000632565b83018262000737565b50505b505050565b600082821c905092915050565b6000620007ce60001984600802620007ae565b1980831691505092915050565b6000620007e98383620007bb565b9150826002028217905092915050565b62000804826200057f565b67ffffffffffffffff81111562000820576200081f6200058a565b5b6200082c8254620005e8565b620008398282856200075e565b600060209050601f8311600181146200087157600084156200085c578287015190505b620008688582620007db565b865550620008d8565b601f19841662000881866200061d565b60005b82811015620008ab5784890151825560018201915060208501945060208101905062000884565b86831015620008cb5784890151620008c7601f891682620007bb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200096e57808604811115620009465762000945620008e0565b5b6001851615620009565780820291505b808102905062000966856200090f565b945062000926565b94509492505050565b60008262000989576001905062000a5c565b8162000999576000905062000a5c565b8160018114620009b25760028114620009bd57620009f3565b600191505062000a5c565b60ff841115620009d257620009d1620008e0565b5b8360020a915084821115620009ec57620009eb620008e0565b5b5062000a5c565b5060208310610133831016604e8410600b841016171562000a2d5782820a90508381111562000a275762000a26620008e0565b5b62000a5c565b62000a3c84848460016200091c565b9250905081840481111562000a565762000a55620008e0565b5b81810290505b9392505050565b600060ff82169050919050565b600062000a7d82620006a5565b915062000a8a8362000a63565b925062000ab97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000977565b905092915050565b600062000ace82620006a5565b915062000adb83620006a5565b925082820262000aeb81620006a5565b9150828204841483151762000b055762000b04620008e0565b5b5092915050565b62000b1781620006a5565b82525050565b600060208201905062000b34600083018462000b0c565b92915050565b613f1f8062000b4a6000396000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063a6769c7111610095578063d0a6bc0f11610064578063d0a6bc0f14610640578063dd62ed3e14610669578063e9ac0e59146106a6578063f2fde38b146106bd576101cd565b8063a6769c711461059a578063a9059cbb146105c3578063b2abbbc414610600578063c9567bf914610629576101cd565b80638da5cb5b116100d15780638da5cb5b146104dc57806395d89b4114610507578063a2ae74f414610532578063a457c2d71461055d576101cd565b806370a082311461045f578063715018a61461049c57806384afff9b146104b3576101cd565b8063395093511161016457806350faa48f1161013e57806350faa48f146103b557806351bc3c85146103e05780635342acb4146103f757806354a5df1f14610434576101cd565b80633950935114610324578063441d801f146103615780634b94f50e1461038a576101cd565b806318160ddd116101a057806318160ddd1461026557806322554f341461029057806323b872dd146102bc578063313ce567146102f9576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106e6565b6040516101f49190612d95565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612e5f565b610778565b6040516102319190612eba565b60405180910390f35b34801561024657600080fd5b5061024f610796565b60405161025c9190612f34565b60405180910390f35b34801561027157600080fd5b5061027a6107bc565b6040516102879190612f5e565b60405180910390f35b34801561029c57600080fd5b506102a56107c6565b6040516102b3929190612f79565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190612fa2565b6107d7565b6040516102f09190612eba565b60405180910390f35b34801561030557600080fd5b5061030e6108b0565b60405161031b9190613011565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612e5f565b6108c7565b6040516103589190612eba565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906130bd565b61097a565b005b34801561039657600080fd5b5061039f610a1f565b6040516103ac9190612f5e565b60405180910390f35b3480156103c157600080fd5b506103ca610c62565b6040516103d7919061312c565b60405180910390f35b3480156103ec57600080fd5b506103f5610c88565b005b34801561040357600080fd5b5061041e60048036038101906104199190613147565b610cc0565b60405161042b9190612eba565b60405180910390f35b34801561044057600080fd5b50610449610d16565b6040516104569190612f5e565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613147565b610d1c565b6040516104939190612f5e565b60405180910390f35b3480156104a857600080fd5b506104b1610ea9565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190613147565b610ffc565b005b3480156104e857600080fd5b506104f1611125565b6040516104fe919061312c565b60405180910390f35b34801561051357600080fd5b5061051c61114e565b6040516105299190612d95565b60405180910390f35b34801561053e57600080fd5b506105476111e0565b6040516105549190612eba565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190612e5f565b6111f3565b6040516105919190612eba565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613174565b6112c0565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190612e5f565b611372565b6040516105f79190612eba565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906131a1565b611390565b005b34801561063557600080fd5b5061063e61142f565b005b34801561064c57600080fd5b50610667600480360381019061066291906131ce565b611903565b005b34801561067557600080fd5b50610690600480360381019061068b919061320e565b6119aa565b60405161069d9190612f5e565b60405180910390f35b3480156106b257600080fd5b506106bb611a31565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613147565b611aa2565b005b6060600a80546106f59061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061327d565b801561076e5780601f106107435761010080835404028352916020019161076e565b820191906000526020600020905b81548152906001019060200180831161075157829003601f168201915b5050505050905090565b600061078c610785611c63565b8484611c6b565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b600080601054601154915091509091565b60006107e4848484611e34565b6108a5846107f0611c63565b6108a085604051806060016040528060288152602001613e9d60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610856611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b600190509392505050565b6000600c60009054906101000a900460ff16905090565b60006109706108d4611c63565b8461096b85600860006108e5611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b611c6b565b6001905092915050565b610982611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a06906132fa565b60405180910390fd5b610a1a8383836127b5565b505050565b600080600267ffffffffffffffff811115610a3d57610a3c61331a565b5b604051908082528060200260200182016040528015610a6b5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff919061335e565b81600081518110610b1357610b1261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610b6257610b6161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600f54836040518363ffffffff1660e01b8152600401610bfb929190613478565b600060405180830381865afa158015610c18573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4191906135cc565b600181518110610c5457610c5361338b565b5b602002602001015191505090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c9330610d1c565b90506000811115610cbd57600e60009054906101000a900460ff16610cbc57610cbb81612860565b5b5b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000601260149054906101000a900460ff1615610e6157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610dce5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210155b15610e1a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b610eb1611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103c919061312c565b602060405180830381865afa158015611059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107d9190613615565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110dc929190613642565b6020604051808303816000875af11580156110fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190613680565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461115d9061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546111899061327d565b80156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b601260149054906101000a900460ff1681565b60006112b6611200611c63565b846112b185604051806060016040528060258152602001613ec5602591396008600061122a611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b6001905092915050565b6112c8611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906132fa565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b600061138661137f611c63565b8484611e34565b6001905092915050565b611398611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906132fa565b60405180910390fd5b80600f8190555050565b611437611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061371f565b60405180910390fd5b61158430600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611615919061335e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c2919061335e565b6040518363ffffffff1660e01b81526004016116df92919061373f565b6020604051808303816000875af11580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611722919061335e565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306117ab30610d1c565b6000806117b6611125565b426040518863ffffffff1660e01b81526004016117d8969594939291906137a3565b60606040518083038185885af11580156117f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061181b9190613804565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118bd929190613642565b6020604051808303816000875af11580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190613680565b50565b61190b611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906132fa565b60405180910390fd5b81601081905550806011819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a9e573d6000803e3d6000fd5b5050565b611aaa611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d906138c9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd19061395b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d40906139ed565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e279190612f5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613a7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0990613b11565b60405180910390fd5b60008111611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613ba3565b60405180910390fd5b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ffc5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561203b575061200b611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561207a575061204a611125565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050612089611125565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156120f757506120c7611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561212f57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561216757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124af5781156124ae5761219a606461218c60105484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122055750601260149054906101000a900460ff165b156122f75761225c81600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122b3600a4261275790919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123a25750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156124ad57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111561243157600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b612459606461244b60115484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600061246630610d1c565b905060008111156124ab57600061247b610a1f565b905080821015801561249a5750600e60009054906101000a900460ff16155b156124a9576124a881612860565b5b505b505b5b5b60006124c48483612c5890919063ffffffff16565b905061251882600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5890919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ad81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264284600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516126e29190612f5e565b60405180910390a350505050505050565b600083831115829061273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329190612d95565b60405180910390fd5b506000838561274a9190613bf2565b9050809150509392505050565b60008082846127669190613c26565b9050838110156127ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a290613ca6565b60405180910390fd5b8091505092915050565b60005b8383905081101561285a5760008484838181106127d8576127d761338b565b5b90506020020160208101906127ed9190613147565b905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061285290613cc6565b9150506127b8565b50505050565b6000600267ffffffffffffffff81111561287d5761287c61331a565b5b6040519080825280602002602001820160405280156128ab5781602001602082028036833780820191505090505b50905030816000815181106128c3576128c261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561296a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298e919061335e565b816001815181106129a2576129a161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a6d959493929190613d0e565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b5050505060004790506000612aba600283612c0e90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b24573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b8d573d6000803e3d6000fd5b5050505050565b6000808303612ba65760009050612c08565b60008284612bb49190613d68565b9050828482612bc39190613dd9565b14612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa90613e7c565b60405180910390fd5b809150505b92915050565b6000612c5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ca2565b905092915050565b6000612c9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126f3565b905092915050565b60008083118290612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce09190612d95565b60405180910390fd5b5060008385612cf89190613dd9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3f578082015181840152602081019050612d24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6782612d05565b612d718185612d10565b9350612d81818560208601612d21565b612d8a81612d4b565b840191505092915050565b60006020820190508181036000830152612daf8184612d5c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612df682612dcb565b9050919050565b612e0681612deb565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b6000819050919050565b612e3c81612e29565b8114612e4757600080fd5b50565b600081359050612e5981612e33565b92915050565b60008060408385031215612e7657612e75612dc1565b5b6000612e8485828601612e14565b9250506020612e9585828601612e4a565b9150509250929050565b60008115159050919050565b612eb481612e9f565b82525050565b6000602082019050612ecf6000830184612eab565b92915050565b6000819050919050565b6000612efa612ef5612ef084612dcb565b612ed5565b612dcb565b9050919050565b6000612f0c82612edf565b9050919050565b6000612f1e82612f01565b9050919050565b612f2e81612f13565b82525050565b6000602082019050612f496000830184612f25565b92915050565b612f5881612e29565b82525050565b6000602082019050612f736000830184612f4f565b92915050565b6000604082019050612f8e6000830185612f4f565b612f9b6020830184612f4f565b9392505050565b600080600060608486031215612fbb57612fba612dc1565b5b6000612fc986828701612e14565b9350506020612fda86828701612e14565b9250506040612feb86828701612e4a565b9150509250925092565b600060ff82169050919050565b61300b81612ff5565b82525050565b60006020820190506130266000830184613002565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130515761305061302c565b5b8235905067ffffffffffffffff81111561306e5761306d613031565b5b60208301915083602082028301111561308a57613089613036565b5b9250929050565b61309a81612e9f565b81146130a557600080fd5b50565b6000813590506130b781613091565b92915050565b6000806000604084860312156130d6576130d5612dc1565b5b600084013567ffffffffffffffff8111156130f4576130f3612dc6565b5b6131008682870161303b565b93509350506020613113868287016130a8565b9150509250925092565b61312681612deb565b82525050565b6000602082019050613141600083018461311d565b92915050565b60006020828403121561315d5761315c612dc1565b5b600061316b84828501612e14565b91505092915050565b60006020828403121561318a57613189612dc1565b5b6000613198848285016130a8565b91505092915050565b6000602082840312156131b7576131b6612dc1565b5b60006131c584828501612e4a565b91505092915050565b600080604083850312156131e5576131e4612dc1565b5b60006131f385828601612e4a565b925050602061320485828601612e4a565b9150509250929050565b6000806040838503121561322557613224612dc1565b5b600061323385828601612e14565b925050602061324485828601612e14565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061329557607f821691505b6020821081036132a8576132a761324e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e4602083612d10565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061335881612dfd565b92915050565b60006020828403121561337457613373612dc1565b5b600061338284828501613349565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133ef81612deb565b82525050565b600061340183836133e6565b60208301905092915050565b6000602082019050919050565b6000613425826133ba565b61342f81856133c5565b935061343a836133d6565b8060005b8381101561346b57815161345288826133f5565b975061345d8361340d565b92505060018101905061343e565b5085935050505092915050565b600060408201905061348d6000830185612f4f565b818103602083015261349f818461341a565b90509392505050565b6134b182612d4b565b810181811067ffffffffffffffff821117156134d0576134cf61331a565b5b80604052505050565b60006134e3612db7565b90506134ef82826134a8565b919050565b600067ffffffffffffffff82111561350f5761350e61331a565b5b602082029050602081019050919050565b60008151905061352f81612e33565b92915050565b6000613548613543846134f4565b6134d9565b9050808382526020820190506020840283018581111561356b5761356a613036565b5b835b8181101561359457806135808882613520565b84526020840193505060208101905061356d565b5050509392505050565b600082601f8301126135b3576135b261302c565b5b81516135c3848260208601613535565b91505092915050565b6000602082840312156135e2576135e1612dc1565b5b600082015167ffffffffffffffff811115613600576135ff612dc6565b5b61360c8482850161359e565b91505092915050565b60006020828403121561362b5761362a612dc1565b5b600061363984828501613520565b91505092915050565b6000604082019050613657600083018561311d565b6136646020830184612f4f565b9392505050565b60008151905061367a81613091565b92915050565b60006020828403121561369657613695612dc1565b5b60006136a48482850161366b565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613709602283612d10565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b6000604082019050613754600083018561311d565b613761602083018461311d565b9392505050565b6000819050919050565b600061378d61378861378384613768565b612ed5565b612e29565b9050919050565b61379d81613772565b82525050565b600060c0820190506137b8600083018961311d565b6137c56020830188612f4f565b6137d26040830187613794565b6137df6060830186613794565b6137ec608083018561311d565b6137f960a0830184612f4f565b979650505050505050565b60008060006060848603121561381d5761381c612dc1565b5b600061382b86828701613520565b935050602061383c86828701613520565b925050604061384d86828701613520565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138b3602683612d10565b91506138be82613857565b604082019050919050565b600060208201905081810360008301526138e2816138a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613945602483612d10565b9150613950826138e9565b604082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139d7602283612d10565b91506139e28261397b565b604082019050919050565b60006020820190508181036000830152613a06816139ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a69602583612d10565b9150613a7482613a0d565b604082019050919050565b60006020820190508181036000830152613a9881613a5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613afb602383612d10565b9150613b0682613a9f565b604082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b8d602983612d10565b9150613b9882613b31565b604082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bfd82612e29565b9150613c0883612e29565b9250828203905081811115613c2057613c1f613bc3565b5b92915050565b6000613c3182612e29565b9150613c3c83612e29565b9250828201905080821115613c5457613c53613bc3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c90601b83612d10565b9150613c9b82613c5a565b602082019050919050565b60006020820190508181036000830152613cbf81613c83565b9050919050565b6000613cd182612e29565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0357613d02613bc3565b5b600182019050919050565b600060a082019050613d236000830188612f4f565b613d306020830187613794565b8181036040830152613d42818661341a565b9050613d51606083018561311d565b613d5e6080830184612f4f565b9695505050505050565b6000613d7382612e29565b9150613d7e83612e29565b9250828202613d8c81612e29565b91508282048414831517613da357613da2613bc3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de482612e29565b9150613def83612e29565b925082613dff57613dfe613daa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e66602183612d10565b9150613e7182613e0a565b604082019050919050565b60006020820190508181036000830152613e9581613e59565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b963ba9babb976a127aeb838033bdb62258edf93d45114d13f7d58096c101d5264736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101c65760003560e01c806370a08231116100f7578063a6769c7111610095578063d0a6bc0f11610064578063d0a6bc0f14610640578063dd62ed3e14610669578063e9ac0e59146106a6578063f2fde38b146106bd576101cd565b8063a6769c711461059a578063a9059cbb146105c3578063b2abbbc414610600578063c9567bf914610629576101cd565b80638da5cb5b116100d15780638da5cb5b146104dc57806395d89b4114610507578063a2ae74f414610532578063a457c2d71461055d576101cd565b806370a082311461045f578063715018a61461049c57806384afff9b146104b3576101cd565b8063395093511161016457806350faa48f1161013e57806350faa48f146103b557806351bc3c85146103e05780635342acb4146103f757806354a5df1f14610434576101cd565b80633950935114610324578063441d801f146103615780634b94f50e1461038a576101cd565b806318160ddd116101a057806318160ddd1461026557806322554f341461029057806323b872dd146102bc578063313ce567146102f9576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106e6565b6040516101f49190612d95565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612e5f565b610778565b6040516102319190612eba565b60405180910390f35b34801561024657600080fd5b5061024f610796565b60405161025c9190612f34565b60405180910390f35b34801561027157600080fd5b5061027a6107bc565b6040516102879190612f5e565b60405180910390f35b34801561029c57600080fd5b506102a56107c6565b6040516102b3929190612f79565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190612fa2565b6107d7565b6040516102f09190612eba565b60405180910390f35b34801561030557600080fd5b5061030e6108b0565b60405161031b9190613011565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612e5f565b6108c7565b6040516103589190612eba565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906130bd565b61097a565b005b34801561039657600080fd5b5061039f610a1f565b6040516103ac9190612f5e565b60405180910390f35b3480156103c157600080fd5b506103ca610c62565b6040516103d7919061312c565b60405180910390f35b3480156103ec57600080fd5b506103f5610c88565b005b34801561040357600080fd5b5061041e60048036038101906104199190613147565b610cc0565b60405161042b9190612eba565b60405180910390f35b34801561044057600080fd5b50610449610d16565b6040516104569190612f5e565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613147565b610d1c565b6040516104939190612f5e565b60405180910390f35b3480156104a857600080fd5b506104b1610ea9565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190613147565b610ffc565b005b3480156104e857600080fd5b506104f1611125565b6040516104fe919061312c565b60405180910390f35b34801561051357600080fd5b5061051c61114e565b6040516105299190612d95565b60405180910390f35b34801561053e57600080fd5b506105476111e0565b6040516105549190612eba565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190612e5f565b6111f3565b6040516105919190612eba565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613174565b6112c0565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190612e5f565b611372565b6040516105f79190612eba565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906131a1565b611390565b005b34801561063557600080fd5b5061063e61142f565b005b34801561064c57600080fd5b50610667600480360381019061066291906131ce565b611903565b005b34801561067557600080fd5b50610690600480360381019061068b919061320e565b6119aa565b60405161069d9190612f5e565b60405180910390f35b3480156106b257600080fd5b506106bb611a31565b005b3480156106c957600080fd5b506106e460048036038101906106df9190613147565b611aa2565b005b6060600a80546106f59061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061327d565b801561076e5780601f106107435761010080835404028352916020019161076e565b820191906000526020600020905b81548152906001019060200180831161075157829003601f168201915b5050505050905090565b600061078c610785611c63565b8484611c6b565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b600080601054601154915091509091565b60006107e4848484611e34565b6108a5846107f0611c63565b6108a085604051806060016040528060288152602001613e9d60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610856611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b600190509392505050565b6000600c60009054906101000a900460ff16905090565b60006109706108d4611c63565b8461096b85600860006108e5611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b611c6b565b6001905092915050565b610982611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a06906132fa565b60405180910390fd5b610a1a8383836127b5565b505050565b600080600267ffffffffffffffff811115610a3d57610a3c61331a565b5b604051908082528060200260200182016040528015610a6b5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff919061335e565b81600081518110610b1357610b1261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610b6257610b6161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600f54836040518363ffffffff1660e01b8152600401610bfb929190613478565b600060405180830381865afa158015610c18573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4191906135cc565b600181518110610c5457610c5361338b565b5b602002602001015191505090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c9330610d1c565b90506000811115610cbd57600e60009054906101000a900460ff16610cbc57610cbb81612860565b5b5b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000601260149054906101000a900460ff1615610e6157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610dce5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210155b15610e1a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ea4565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b610eb1611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103c919061312c565b602060405180830381865afa158015611059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107d9190613615565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110dc929190613642565b6020604051808303816000875af11580156110fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190613680565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461115d9061327d565b80601f01602080910402602001604051908101604052809291908181526020018280546111899061327d565b80156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b601260149054906101000a900460ff1681565b60006112b6611200611c63565b846112b185604051806060016040528060258152602001613ec5602591396008600061122a611c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f39092919063ffffffff16565b611c6b565b6001905092915050565b6112c8611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c906132fa565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b600061138661137f611c63565b8484611e34565b6001905092915050565b611398611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906132fa565b60405180910390fd5b80600f8190555050565b611437611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061371f565b60405180910390fd5b61158430600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611615919061335e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c2919061335e565b6040518363ffffffff1660e01b81526004016116df92919061373f565b6020604051808303816000875af11580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611722919061335e565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306117ab30610d1c565b6000806117b6611125565b426040518863ffffffff1660e01b81526004016117d8969594939291906137a3565b60606040518083038185885af11580156117f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061181b9190613804565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118bd929190613642565b6020604051808303816000875af11580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190613680565b50565b61190b611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906132fa565b60405180910390fd5b81601081905550806011819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a9e573d6000803e3d6000fd5b5050565b611aaa611c63565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906132fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d906138c9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd19061395b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d40906139ed565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e279190612f5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613a7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0990613b11565b60405180910390fd5b60008111611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613ba3565b60405180910390fd5b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ffc5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561203b575061200b611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561207a575061204a611125565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050612089611125565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156120f757506120c7611125565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561212f57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561216757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124af5781156124ae5761219a606461218c60105484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122055750601260149054906101000a900460ff165b156122f75761225c81600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122b3600a4261275790919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123a25750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156124ad57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111561243157600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b612459606461244b60115484612b9490919063ffffffff16565b612c0e90919063ffffffff16565b9250600061246630610d1c565b905060008111156124ab57600061247b610a1f565b905080821015801561249a5750600e60009054906101000a900460ff16155b156124a9576124a881612860565b5b505b505b5b5b60006124c48483612c5890919063ffffffff16565b905061251882600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5890919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ad81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264284600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516126e29190612f5e565b60405180910390a350505050505050565b600083831115829061273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329190612d95565b60405180910390fd5b506000838561274a9190613bf2565b9050809150509392505050565b60008082846127669190613c26565b9050838110156127ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a290613ca6565b60405180910390fd5b8091505092915050565b60005b8383905081101561285a5760008484838181106127d8576127d761338b565b5b90506020020160208101906127ed9190613147565b905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061285290613cc6565b9150506127b8565b50505050565b6000600267ffffffffffffffff81111561287d5761287c61331a565b5b6040519080825280602002602001820160405280156128ab5781602001602082028036833780820191505090505b50905030816000815181106128c3576128c261338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561296a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298e919061335e565b816001815181106129a2576129a161338b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c6b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a6d959493929190613d0e565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b5050505060004790506000612aba600283612c0e90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b24573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b8d573d6000803e3d6000fd5b5050505050565b6000808303612ba65760009050612c08565b60008284612bb49190613d68565b9050828482612bc39190613dd9565b14612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa90613e7c565b60405180910390fd5b809150505b92915050565b6000612c5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ca2565b905092915050565b6000612c9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126f3565b905092915050565b60008083118290612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce09190612d95565b60405180910390fd5b5060008385612cf89190613dd9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3f578082015181840152602081019050612d24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6782612d05565b612d718185612d10565b9350612d81818560208601612d21565b612d8a81612d4b565b840191505092915050565b60006020820190508181036000830152612daf8184612d5c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612df682612dcb565b9050919050565b612e0681612deb565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b6000819050919050565b612e3c81612e29565b8114612e4757600080fd5b50565b600081359050612e5981612e33565b92915050565b60008060408385031215612e7657612e75612dc1565b5b6000612e8485828601612e14565b9250506020612e9585828601612e4a565b9150509250929050565b60008115159050919050565b612eb481612e9f565b82525050565b6000602082019050612ecf6000830184612eab565b92915050565b6000819050919050565b6000612efa612ef5612ef084612dcb565b612ed5565b612dcb565b9050919050565b6000612f0c82612edf565b9050919050565b6000612f1e82612f01565b9050919050565b612f2e81612f13565b82525050565b6000602082019050612f496000830184612f25565b92915050565b612f5881612e29565b82525050565b6000602082019050612f736000830184612f4f565b92915050565b6000604082019050612f8e6000830185612f4f565b612f9b6020830184612f4f565b9392505050565b600080600060608486031215612fbb57612fba612dc1565b5b6000612fc986828701612e14565b9350506020612fda86828701612e14565b9250506040612feb86828701612e4a565b9150509250925092565b600060ff82169050919050565b61300b81612ff5565b82525050565b60006020820190506130266000830184613002565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130515761305061302c565b5b8235905067ffffffffffffffff81111561306e5761306d613031565b5b60208301915083602082028301111561308a57613089613036565b5b9250929050565b61309a81612e9f565b81146130a557600080fd5b50565b6000813590506130b781613091565b92915050565b6000806000604084860312156130d6576130d5612dc1565b5b600084013567ffffffffffffffff8111156130f4576130f3612dc6565b5b6131008682870161303b565b93509350506020613113868287016130a8565b9150509250925092565b61312681612deb565b82525050565b6000602082019050613141600083018461311d565b92915050565b60006020828403121561315d5761315c612dc1565b5b600061316b84828501612e14565b91505092915050565b60006020828403121561318a57613189612dc1565b5b6000613198848285016130a8565b91505092915050565b6000602082840312156131b7576131b6612dc1565b5b60006131c584828501612e4a565b91505092915050565b600080604083850312156131e5576131e4612dc1565b5b60006131f385828601612e4a565b925050602061320485828601612e4a565b9150509250929050565b6000806040838503121561322557613224612dc1565b5b600061323385828601612e14565b925050602061324485828601612e14565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061329557607f821691505b6020821081036132a8576132a761324e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e4602083612d10565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061335881612dfd565b92915050565b60006020828403121561337457613373612dc1565b5b600061338284828501613349565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133ef81612deb565b82525050565b600061340183836133e6565b60208301905092915050565b6000602082019050919050565b6000613425826133ba565b61342f81856133c5565b935061343a836133d6565b8060005b8381101561346b57815161345288826133f5565b975061345d8361340d565b92505060018101905061343e565b5085935050505092915050565b600060408201905061348d6000830185612f4f565b818103602083015261349f818461341a565b90509392505050565b6134b182612d4b565b810181811067ffffffffffffffff821117156134d0576134cf61331a565b5b80604052505050565b60006134e3612db7565b90506134ef82826134a8565b919050565b600067ffffffffffffffff82111561350f5761350e61331a565b5b602082029050602081019050919050565b60008151905061352f81612e33565b92915050565b6000613548613543846134f4565b6134d9565b9050808382526020820190506020840283018581111561356b5761356a613036565b5b835b8181101561359457806135808882613520565b84526020840193505060208101905061356d565b5050509392505050565b600082601f8301126135b3576135b261302c565b5b81516135c3848260208601613535565b91505092915050565b6000602082840312156135e2576135e1612dc1565b5b600082015167ffffffffffffffff811115613600576135ff612dc6565b5b61360c8482850161359e565b91505092915050565b60006020828403121561362b5761362a612dc1565b5b600061363984828501613520565b91505092915050565b6000604082019050613657600083018561311d565b6136646020830184612f4f565b9392505050565b60008151905061367a81613091565b92915050565b60006020828403121561369657613695612dc1565b5b60006136a48482850161366b565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613709602283612d10565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b6000604082019050613754600083018561311d565b613761602083018461311d565b9392505050565b6000819050919050565b600061378d61378861378384613768565b612ed5565b612e29565b9050919050565b61379d81613772565b82525050565b600060c0820190506137b8600083018961311d565b6137c56020830188612f4f565b6137d26040830187613794565b6137df6060830186613794565b6137ec608083018561311d565b6137f960a0830184612f4f565b979650505050505050565b60008060006060848603121561381d5761381c612dc1565b5b600061382b86828701613520565b935050602061383c86828701613520565b925050604061384d86828701613520565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138b3602683612d10565b91506138be82613857565b604082019050919050565b600060208201905081810360008301526138e2816138a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613945602483612d10565b9150613950826138e9565b604082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139d7602283612d10565b91506139e28261397b565b604082019050919050565b60006020820190508181036000830152613a06816139ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a69602583612d10565b9150613a7482613a0d565b604082019050919050565b60006020820190508181036000830152613a9881613a5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613afb602383612d10565b9150613b0682613a9f565b604082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b8d602983612d10565b9150613b9882613b31565b604082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bfd82612e29565b9150613c0883612e29565b9250828203905081811115613c2057613c1f613bc3565b5b92915050565b6000613c3182612e29565b9150613c3c83612e29565b9250828201905080821115613c5457613c53613bc3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c90601b83612d10565b9150613c9b82613c5a565b602082019050919050565b60006020820190508181036000830152613cbf81613c83565b9050919050565b6000613cd182612e29565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0357613d02613bc3565b5b600182019050919050565b600060a082019050613d236000830188612f4f565b613d306020830187613794565b8181036040830152613d42818661341a565b9050613d51606083018561311d565b613d5e6080830184612f4f565b9695505050505050565b6000613d7382612e29565b9150613d7e83612e29565b9250828202613d8c81612e29565b91508282048414831517613da357613da2613bc3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de482612e29565b9150613def83612e29565b925082613dff57613dfe613daa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e66602183612d10565b9150613e7182613e0a565b604082019050919050565b60006020820190508181036000830152613e9581613e59565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b963ba9babb976a127aeb838033bdb62258edf93d45114d13f7d58096c101d5264736f6c63430008110033
Deployed Bytecode Sourcemap
7270:9221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8843:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9951:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7503:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9114:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11058:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10118:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9025:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10437:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11300:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15661:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7616:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14718:267;;;;;;;;;;;;;:::i;:::-;;12338:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8317:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9215:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5276:148;;;;;;;;;;;;;:::i;:::-;;16251:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5066:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8932:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8473:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10661:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11162:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9629:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15931:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11709:623;;;;;;;;;;;;;:::i;:::-;;10936:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9802:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16094:151;;;;;;;;;;;;;:::i;:::-;;5430:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8843:83;8880:13;8913:5;8906:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8843:83;:::o;9951:161::-;10026:4;10043:39;10052:12;:10;:12::i;:::-;10066:7;10075:6;10043:8;:39::i;:::-;10100:4;10093:11;;9951:161;;;;:::o;7503:106::-;;;;;;;;;;;;;:::o;9114:95::-;9167:7;9194;;9187:14;;9114:95;:::o;11058:98::-;11094:7;11103;11132:6;;11140:7;;11124:24;;;;11058:98;;:::o;10118:313::-;10216:4;10233:36;10243:6;10251:9;10262:6;10233:9;:36::i;:::-;10280:121;10289:6;10297:12;:10;:12::i;:::-;10311:89;10349:6;10311:89;;;;;;;;;;;;;;;;;:11;:19;10323:6;10311:19;;;;;;;;;;;;;;;:33;10331:12;:10;:12::i;:::-;10311:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10280:8;:121::i;:::-;10419:4;10412:11;;10118:313;;;;;:::o;9025:83::-;9066:5;9091:9;;;;;;;;;;;9084:16;;9025:83;:::o;10437:218::-;10525:4;10542:83;10551:12;:10;:12::i;:::-;10565:7;10574:50;10613:10;10574:11;:25;10586:12;:10;:12::i;:::-;10574:25;;;;;;;;;;;;;;;:34;10600:7;10574:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10542:8;:83::i;:::-;10643:4;10636:11;;10437:218;;;;:::o;11300:161::-;5201:12;:10;:12::i;:::-;5191:22;;:6;;;;;;;;;;:22;;;5183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11412:41:::1;11425:9;;11436:16;11412:12;:41::i;:::-;11300:161:::0;;;:::o;15661:264::-;15707:7;15728:21;15766:1;15752:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15728:40;;15789:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15779:4;15784:1;15779:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15840:4;15822;15827:1;15822:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15863:15;;;;;;;;;;;:29;;;15893:14;;15909:4;15863:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15915:1;15863:54;;;;;;;;:::i;:::-;;;;;;;;15856:61;;;15661:264;:::o;7616:38::-;;;;;;;;;;;;;:::o;14718:267::-;14760:28;14791:24;14809:4;14791:9;:24::i;:::-;14760:55;;14853:1;14830:20;:24;14826:152;;;14876:16;;;;;;;;;;;14871:96;;14913:38;14930:20;14913:16;:38::i;:::-;14871:96;14826:152;14749:236;14718:267::o;12338:124::-;12403:4;12427:18;:27;12446:7;12427:27;;;;;;;;;;;;;;;;;;;;;;;;;12420:34;;12338:124;;;:::o;8317:50::-;;;;:::o;9215:408::-;9281:7;9304:22;;;;;;;;;;;9301:315;;;9357:10;;;;;;;;;;;9346:21;;:7;:21;;;:72;;;;9390:19;:28;9410:7;9390:28;;;;;;;;;;;;;;;;9371:15;:47;;9346:72;9343:204;;;9446:9;:18;9456:7;9446:18;;;;;;;;;;;;;;;;9439:25;;;;9343:204;9511:11;:20;9523:7;9511:20;;;;;;;;;;;;;;;;9504:27;;;;9301:315;9586:9;:18;9596:7;9586:18;;;;;;;;;;;;;;;;9579:25;;9215:408;;;;:::o;5276:148::-;5201:12;:10;:12::i;:::-;5191:22;;:6;;;;;;;;;;:22;;;5183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5383:1:::1;5346:40;;5367:6;::::0;::::1;;;;;;;;5346:40;;;;;;;;;;;;5414:1;5397:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5276:148::o:0;16251:237::-;16324:17;16351:15;16324:43;;16378:15;16396:10;:20;;;16425:4;16396:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16378:53;;16442:10;:19;;;16462:8;;;;;;;;;;;16472:7;16442:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16313:175;;16251:237;:::o;5066:79::-;5104:7;5131:6;;;;;;;;;;;5124:13;;5066:79;:::o;8932:87::-;8971:13;9004:7;8997:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8932:87;:::o;8473:41::-;;;;;;;;;;;;;:::o;10661:269::-;10754:4;10771:129;10780:12;:10;:12::i;:::-;10794:7;10803:96;10842:15;10803:96;;;;;;;;;;;;;;;;;:11;:25;10815:12;:10;:12::i;:::-;10803:25;;;;;;;;;;;;;;;:34;10829:7;10803:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10771:8;:129::i;:::-;10918:4;10911:11;;10661:269;;;;:::o;11162:132::-;5201:12;:10;:12::i;:::-;5191:22;;:6;;;;;;;;;;:22;;;5183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11273:13:::1;11248:22;;:38;;;;;;;;;;;;;;;;;;11162:132:::0;:::o;9629:167::-;9707:4;9724:42;9734:12;:10;:12::i;:::-;9748:9;9759:6;9724:9;:42::i;:::-;9784:4;9777:11;;9629:167;;;;:::o;15931:122::-;5201:12;:10;:12::i;:::-;5191:22;;:6;;;;;;;;;;:22;;;5183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16030:15:::1;16013:14;:32;;;;15931:122:::0;:::o;11709:623::-;5201:12;:10;:12::i;:::-;5191:22;;:6;;;;;;;;;;:22;;;5183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11794:1:::1;11772:24;;:10;;;;;;;;;;;:24;;;11764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11845:58;11862:4;11877:15;;;;;;;;;;;11895:7;;11845:8;:58::i;:::-;11945:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11927:55;;;11991:4;11998:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11927:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11914:10;;:107;;;;;;;;;;;;;;;;;;12032:15;;;;;;;;;;;:31;;;12071:21;12116:4;12136:24;12154:4;12136:9;:24::i;:::-;12175:1;12191::::0;12207:7:::1;:5;:7::i;:::-;12229:15;12032:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12263:10;;;;;;;;;;;12256:26;;;12291:15;;;;;;;;;;;12309:14;12256:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11709:623::o:0;10936:116::-;5201:12;:10;:12::i;:::-;5191:22;;:6;;;;;;;;;;:22;;;5183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11016:3:::1;11007:6;:12;;;;11040:4;11030:7;:14;;;;10936:116:::0;;:::o;9802:143::-;9883:7;9910:11;:18;9922:5;9910:18;;;;;;;;;;;;;;;:27;9929:7;9910:27;;;;;;;;;;;;;;;;9903:34;;9802:143;;;;:::o;16094:151::-;16146:18;16167:21;16146:42;;16207:8;;;;;;;;;;;16199:26;;:38;16226:10;16199:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16135:110;16094:151::o;5430:244::-;5201:12;:10;:12::i;:::-;5191:22;;:6;;;;;;;;;;:22;;;5183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5539:1:::1;5519:22;;:8;:22;;::::0;5511:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5629:8;5600:38;;5621:6;::::0;::::1;;;;;;;;5600:38;;;;;;;;;;;;5658:8;5649:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5430:244:::0;:::o;2233:98::-;2286:7;2313:10;2306:17;;2233:98;:::o;12468:335::-;12578:1;12561:19;;:5;:19;;;12553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12659:1;12640:21;;:7;:21;;;12632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12741:6;12711:11;:18;12723:5;12711:18;;;;;;;;;;;;;;;:27;12730:7;12711:27;;;;;;;;;;;;;;;:36;;;;12779:7;12763:32;;12772:5;12763:32;;;12788:6;12763:32;;;;;;:::i;:::-;;;;;;;;12468:335;;;:::o;12809:1903::-;12916:1;12900:18;;:4;:18;;;12892:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12993:1;12979:16;;:2;:16;;;12971:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13066:1;13054:9;:13;13046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13124:17;13156:13;13173:18;:24;13192:4;13173:24;;;;;;;;;;;;;;;;;;;;;;;;;13172:25;:52;;;;;13202:18;:22;13221:2;13202:22;;;;;;;;;;;;;;;;;;;;;;;;;13201:23;13172:52;:71;;;;;13236:7;:5;:7::i;:::-;13228:15;;:4;:15;;;;13172:71;:88;;;;;13253:7;:5;:7::i;:::-;13247:13;;:2;:13;;;;13172:88;13156:104;;13271:14;13288:9;13271:26;;13319:7;:5;:7::i;:::-;13311:15;;:4;:15;;;;:32;;;;;13336:7;:5;:7::i;:::-;13330:13;;:2;:13;;;;13311:32;:57;;;;;13363:4;13347:21;;:4;:21;;;;13311:57;:80;;;;;13386:4;13372:19;;:2;:19;;;;13311:80;13308:1102;;;13411:8;13408:991;;;13452:27;13475:3;13452:18;13463:6;;13452;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;13440:39;;13510:10;;;;;;;;;;;13502:18;;:4;:18;;;:44;;;;;13524:22;;;;;;;;;;;13502:44;13498:218;;;13589:27;13609:6;13589:11;:15;13601:2;13589:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13571:11;:15;13583:2;13571:15;;;;;;;;;;;;;;;:45;;;;13665:31;13685:10;13665:15;:19;;:31;;;;:::i;:::-;13639:19;:23;13659:2;13639:23;;;;;;;;;;;;;;;:57;;;;13498:218;13746:10;;;;;;;;;;;13738:18;;:4;:18;;;;:38;;;;;13766:10;;;;;;;;;;;13760:16;;:2;:16;;;13738:38;13734:650;;;13816:9;:15;13826:4;13816:15;;;;;;;;;;;;;;;;13804:9;:27;13801:107;;;13869:9;:15;13879:4;13869:15;;;;;;;;;;;;;;;;13860:24;;13801:107;13942:28;13966:3;13942:19;13953:7;;13942:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13930:40;;13993:28;14024:24;14042:4;14024:9;:24::i;:::-;13993:55;;14098:1;14075:20;:24;14071:294;;;14128:19;14150:15;:13;:15::i;:::-;14128:37;;14220:11;14196:20;:35;;:56;;;;;14236:16;;;;;;;;;;;14235:17;14196:56;14192:150;;;14285:29;14302:11;14285:16;:29::i;:::-;14192:150;14101:264;14071:294;13778:606;13734:650;13408:991;13308:1102;14420:22;14445:21;14456:9;14445:6;:10;;:21;;;;:::i;:::-;14420:46;;14495:27;14515:6;14495:9;:15;14505:4;14495:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;14477:9;:15;14487:4;14477:15;;;;;;;;;;;;;;;:45;;;;14549:33;14567:14;14549:9;:13;14559:2;14549:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;14533:9;:13;14543:2;14533:13;;;;;;;;;;;;;;;:49;;;;14620:39;14649:9;14620;:24;14638:4;14620:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;14593:9;:24;14611:4;14593:24;;;;;;;;;;;;;;;:66;;;;14690:2;14675:29;;14684:4;14675:29;;;14694:9;14675:29;;;;;;:::i;:::-;;;;;;;;12881:1831;;;;12809:1903;;;:::o;1112:190::-;1198:7;1231:1;1226;:6;;1234:12;1218:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1258:9;1274:1;1270;:5;;;;:::i;:::-;1258:17;;1293:1;1286:8;;;1112:190;;;;;:::o;785:179::-;843:7;863:9;879:1;875;:5;;;;:::i;:::-;863:17;;904:1;899;:6;;891:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;955:1;948:8;;;785:179;;;;:::o;11467:236::-;11554:9;11549:147;11573:9;;:16;;11569:1;:20;11549:147;;;11611:12;11626:9;;11636:1;11626:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11611:27;;11680:4;11653:18;:24;11672:4;11653:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;11596:100;11591:3;;;;;:::i;:::-;;;;11549:147;;;;11467:236;;;:::o;14991:664::-;15057:21;15095:1;15081:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15057:40;;15126:4;15108;15113:1;15108:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15152:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15142:4;15147:1;15142:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15185:62;15202:4;15217:15;;;;;;;;;;;15235:11;15185:8;:62::i;:::-;15258:15;;;;;;;;;;;:66;;;15339:11;15365:1;15381:4;15408;15428:15;15258:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15465:18;15486:21;15465:42;;15518:17;15538;15553:1;15538:10;:14;;:17;;;;:::i;:::-;15518:37;;15574:6;;;;;;;;;;;15566:24;;:35;15591:9;15566:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15620:6;;;;;;;;;;;15612:24;;:35;15637:9;15612:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15046:609;;;14991:664;:::o;1308:246::-;1366:7;1395:1;1390;:6;1386:47;;1420:1;1413:8;;;;1386:47;1443:9;1459:1;1455;:5;;;;:::i;:::-;1443:17;;1488:1;1483;1479;:5;;;;:::i;:::-;:10;1471:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1545:1;1538:8;;;1308:246;;;;;:::o;1560:132::-;1618:7;1645:39;1649:1;1652;1645:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1638:46;;1560:132;;;;:::o;970:136::-;1028:7;1055:43;1059:1;1062;1055:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1048:50;;970:136;;;;:::o;1698:189::-;1784:7;1816:1;1812;:5;1819:12;1804:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1843:9;1859:1;1855;:5;;;;:::i;:::-;1843:17;;1878:1;1871:8;;;1698:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:332::-;4892:4;4930:2;4919:9;4915:18;4907:26;;4943:71;5011:1;5000:9;4996:17;4987:6;4943:71;:::i;:::-;5024:72;5092:2;5081:9;5077:18;5068:6;5024:72;:::i;:::-;4771:332;;;;;:::o;5109:619::-;5186:6;5194;5202;5251:2;5239:9;5230:7;5226:23;5222:32;5219:119;;;5257:79;;:::i;:::-;5219:119;5377:1;5402:53;5447:7;5438:6;5427:9;5423:22;5402:53;:::i;:::-;5392:63;;5348:117;5504:2;5530:53;5575:7;5566:6;5555:9;5551:22;5530:53;:::i;:::-;5520:63;;5475:118;5632:2;5658:53;5703:7;5694:6;5683:9;5679:22;5658:53;:::i;:::-;5648:63;;5603:118;5109:619;;;;;:::o;5734:86::-;5769:7;5809:4;5802:5;5798:16;5787:27;;5734:86;;;:::o;5826:112::-;5909:22;5925:5;5909:22;:::i;:::-;5904:3;5897:35;5826:112;;:::o;5944:214::-;6033:4;6071:2;6060:9;6056:18;6048:26;;6084:67;6148:1;6137:9;6133:17;6124:6;6084:67;:::i;:::-;5944:214;;;;:::o;6164:117::-;6273:1;6270;6263:12;6287:117;6396:1;6393;6386:12;6410:117;6519:1;6516;6509:12;6550:568;6623:8;6633:6;6683:3;6676:4;6668:6;6664:17;6660:27;6650:122;;6691:79;;:::i;:::-;6650:122;6804:6;6791:20;6781:30;;6834:18;6826:6;6823:30;6820:117;;;6856:79;;:::i;:::-;6820:117;6970:4;6962:6;6958:17;6946:29;;7024:3;7016:4;7008:6;7004:17;6994:8;6990:32;6987:41;6984:128;;;7031:79;;:::i;:::-;6984:128;6550:568;;;;;:::o;7124:116::-;7194:21;7209:5;7194:21;:::i;:::-;7187:5;7184:32;7174:60;;7230:1;7227;7220:12;7174:60;7124:116;:::o;7246:133::-;7289:5;7327:6;7314:20;7305:29;;7343:30;7367:5;7343:30;:::i;:::-;7246:133;;;;:::o;7385:698::-;7477:6;7485;7493;7542:2;7530:9;7521:7;7517:23;7513:32;7510:119;;;7548:79;;:::i;:::-;7510:119;7696:1;7685:9;7681:17;7668:31;7726:18;7718:6;7715:30;7712:117;;;7748:79;;:::i;:::-;7712:117;7861:80;7933:7;7924:6;7913:9;7909:22;7861:80;:::i;:::-;7843:98;;;;7639:312;7990:2;8016:50;8058:7;8049:6;8038:9;8034:22;8016:50;:::i;:::-;8006:60;;7961:115;7385:698;;;;;:::o;8089:118::-;8176:24;8194:5;8176:24;:::i;:::-;8171:3;8164:37;8089:118;;:::o;8213:222::-;8306:4;8344:2;8333:9;8329:18;8321:26;;8357:71;8425:1;8414:9;8410:17;8401:6;8357:71;:::i;:::-;8213:222;;;;:::o;8441:329::-;8500:6;8549:2;8537:9;8528:7;8524:23;8520:32;8517:119;;;8555:79;;:::i;:::-;8517:119;8675:1;8700:53;8745:7;8736:6;8725:9;8721:22;8700:53;:::i;:::-;8690:63;;8646:117;8441:329;;;;:::o;8776:323::-;8832:6;8881:2;8869:9;8860:7;8856:23;8852:32;8849:119;;;8887:79;;:::i;:::-;8849:119;9007:1;9032:50;9074:7;9065:6;9054:9;9050:22;9032:50;:::i;:::-;9022:60;;8978:114;8776:323;;;;:::o;9105:329::-;9164:6;9213:2;9201:9;9192:7;9188:23;9184:32;9181:119;;;9219:79;;:::i;:::-;9181:119;9339:1;9364:53;9409:7;9400:6;9389:9;9385:22;9364:53;:::i;:::-;9354:63;;9310:117;9105:329;;;;:::o;9440:474::-;9508:6;9516;9565:2;9553:9;9544:7;9540:23;9536:32;9533:119;;;9571:79;;:::i;:::-;9533:119;9691:1;9716:53;9761:7;9752:6;9741:9;9737:22;9716:53;:::i;:::-;9706:63;;9662:117;9818:2;9844:53;9889:7;9880:6;9869:9;9865:22;9844:53;:::i;:::-;9834:63;;9789:118;9440:474;;;;;:::o;9920:::-;9988:6;9996;10045:2;10033:9;10024:7;10020:23;10016:32;10013:119;;;10051:79;;:::i;:::-;10013:119;10171:1;10196:53;10241:7;10232:6;10221:9;10217:22;10196:53;:::i;:::-;10186:63;;10142:117;10298:2;10324:53;10369:7;10360:6;10349:9;10345:22;10324:53;:::i;:::-;10314:63;;10269:118;9920:474;;;;;:::o;10400:180::-;10448:77;10445:1;10438:88;10545:4;10542:1;10535:15;10569:4;10566:1;10559:15;10586:320;10630:6;10667:1;10661:4;10657:12;10647:22;;10714:1;10708:4;10704:12;10735:18;10725:81;;10791:4;10783:6;10779:17;10769:27;;10725:81;10853:2;10845:6;10842:14;10822:18;10819:38;10816:84;;10872:18;;:::i;:::-;10816:84;10637:269;10586:320;;;:::o;10912:182::-;11052:34;11048:1;11040:6;11036:14;11029:58;10912:182;:::o;11100:366::-;11242:3;11263:67;11327:2;11322:3;11263:67;:::i;:::-;11256:74;;11339:93;11428:3;11339:93;:::i;:::-;11457:2;11452:3;11448:12;11441:19;;11100:366;;;:::o;11472:419::-;11638:4;11676:2;11665:9;11661:18;11653:26;;11725:9;11719:4;11715:20;11711:1;11700:9;11696:17;11689:47;11753:131;11879:4;11753:131;:::i;:::-;11745:139;;11472:419;;;:::o;11897:180::-;11945:77;11942:1;11935:88;12042:4;12039:1;12032:15;12066:4;12063:1;12056:15;12083:143;12140:5;12171:6;12165:13;12156:22;;12187:33;12214:5;12187:33;:::i;:::-;12083:143;;;;:::o;12232:351::-;12302:6;12351:2;12339:9;12330:7;12326:23;12322:32;12319:119;;;12357:79;;:::i;:::-;12319:119;12477:1;12502:64;12558:7;12549:6;12538:9;12534:22;12502:64;:::i;:::-;12492:74;;12448:128;12232:351;;;;:::o;12589:180::-;12637:77;12634:1;12627:88;12734:4;12731:1;12724:15;12758:4;12755:1;12748:15;12775:114;12842:6;12876:5;12870:12;12860:22;;12775:114;;;:::o;12895:184::-;12994:11;13028:6;13023:3;13016:19;13068:4;13063:3;13059:14;13044:29;;12895:184;;;;:::o;13085:132::-;13152:4;13175:3;13167:11;;13205:4;13200:3;13196:14;13188:22;;13085:132;;;:::o;13223:108::-;13300:24;13318:5;13300:24;:::i;:::-;13295:3;13288:37;13223:108;;:::o;13337:179::-;13406:10;13427:46;13469:3;13461:6;13427:46;:::i;:::-;13505:4;13500:3;13496:14;13482:28;;13337:179;;;;:::o;13522:113::-;13592:4;13624;13619:3;13615:14;13607:22;;13522:113;;;:::o;13671:732::-;13790:3;13819:54;13867:5;13819:54;:::i;:::-;13889:86;13968:6;13963:3;13889:86;:::i;:::-;13882:93;;13999:56;14049:5;13999:56;:::i;:::-;14078:7;14109:1;14094:284;14119:6;14116:1;14113:13;14094:284;;;14195:6;14189:13;14222:63;14281:3;14266:13;14222:63;:::i;:::-;14215:70;;14308:60;14361:6;14308:60;:::i;:::-;14298:70;;14154:224;14141:1;14138;14134:9;14129:14;;14094:284;;;14098:14;14394:3;14387:10;;13795:608;;;13671:732;;;;:::o;14409:483::-;14580:4;14618:2;14607:9;14603:18;14595:26;;14631:71;14699:1;14688:9;14684:17;14675:6;14631:71;:::i;:::-;14749:9;14743:4;14739:20;14734:2;14723:9;14719:18;14712:48;14777:108;14880:4;14871:6;14777:108;:::i;:::-;14769:116;;14409:483;;;;;:::o;14898:281::-;14981:27;15003:4;14981:27;:::i;:::-;14973:6;14969:40;15111:6;15099:10;15096:22;15075:18;15063:10;15060:34;15057:62;15054:88;;;15122:18;;:::i;:::-;15054:88;15162:10;15158:2;15151:22;14941:238;14898:281;;:::o;15185:129::-;15219:6;15246:20;;:::i;:::-;15236:30;;15275:33;15303:4;15295:6;15275:33;:::i;:::-;15185:129;;;:::o;15320:311::-;15397:4;15487:18;15479:6;15476:30;15473:56;;;15509:18;;:::i;:::-;15473:56;15559:4;15551:6;15547:17;15539:25;;15619:4;15613;15609:15;15601:23;;15320:311;;;:::o;15637:143::-;15694:5;15725:6;15719:13;15710:22;;15741:33;15768:5;15741:33;:::i;:::-;15637:143;;;;:::o;15803:732::-;15910:5;15935:81;15951:64;16008:6;15951:64;:::i;:::-;15935:81;:::i;:::-;15926:90;;16036:5;16065:6;16058:5;16051:21;16099:4;16092:5;16088:16;16081:23;;16152:4;16144:6;16140:17;16132:6;16128:30;16181:3;16173:6;16170:15;16167:122;;;16200:79;;:::i;:::-;16167:122;16315:6;16298:231;16332:6;16327:3;16324:15;16298:231;;;16407:3;16436:48;16480:3;16468:10;16436:48;:::i;:::-;16431:3;16424:61;16514:4;16509:3;16505:14;16498:21;;16374:155;16358:4;16353:3;16349:14;16342:21;;16298:231;;;16302:21;15916:619;;15803:732;;;;;:::o;16558:385::-;16640:5;16689:3;16682:4;16674:6;16670:17;16666:27;16656:122;;16697:79;;:::i;:::-;16656:122;16807:6;16801:13;16832:105;16933:3;16925:6;16918:4;16910:6;16906:17;16832:105;:::i;:::-;16823:114;;16646:297;16558:385;;;;:::o;16949:554::-;17044:6;17093:2;17081:9;17072:7;17068:23;17064:32;17061:119;;;17099:79;;:::i;:::-;17061:119;17240:1;17229:9;17225:17;17219:24;17270:18;17262:6;17259:30;17256:117;;;17292:79;;:::i;:::-;17256:117;17397:89;17478:7;17469:6;17458:9;17454:22;17397:89;:::i;:::-;17387:99;;17190:306;16949:554;;;;:::o;17509:351::-;17579:6;17628:2;17616:9;17607:7;17603:23;17599:32;17596:119;;;17634:79;;:::i;:::-;17596:119;17754:1;17779:64;17835:7;17826:6;17815:9;17811:22;17779:64;:::i;:::-;17769:74;;17725:128;17509:351;;;;:::o;17866:332::-;17987:4;18025:2;18014:9;18010:18;18002:26;;18038:71;18106:1;18095:9;18091:17;18082:6;18038:71;:::i;:::-;18119:72;18187:2;18176:9;18172:18;18163:6;18119:72;:::i;:::-;17866:332;;;;;:::o;18204:137::-;18258:5;18289:6;18283:13;18274:22;;18305:30;18329:5;18305:30;:::i;:::-;18204:137;;;;:::o;18347:345::-;18414:6;18463:2;18451:9;18442:7;18438:23;18434:32;18431:119;;;18469:79;;:::i;:::-;18431:119;18589:1;18614:61;18667:7;18658:6;18647:9;18643:22;18614:61;:::i;:::-;18604:71;;18560:125;18347:345;;;;:::o;18698:221::-;18838:34;18834:1;18826:6;18822:14;18815:58;18907:4;18902:2;18894:6;18890:15;18883:29;18698:221;:::o;18925:366::-;19067:3;19088:67;19152:2;19147:3;19088:67;:::i;:::-;19081:74;;19164:93;19253:3;19164:93;:::i;:::-;19282:2;19277:3;19273:12;19266:19;;18925:366;;;:::o;19297:419::-;19463:4;19501:2;19490:9;19486:18;19478:26;;19550:9;19544:4;19540:20;19536:1;19525:9;19521:17;19514:47;19578:131;19704:4;19578:131;:::i;:::-;19570:139;;19297:419;;;:::o;19722:332::-;19843:4;19881:2;19870:9;19866:18;19858:26;;19894:71;19962:1;19951:9;19947:17;19938:6;19894:71;:::i;:::-;19975:72;20043:2;20032:9;20028:18;20019:6;19975:72;:::i;:::-;19722:332;;;;;:::o;20060:85::-;20105:7;20134:5;20123:16;;20060:85;;;:::o;20151:158::-;20209:9;20242:61;20260:42;20269:32;20295:5;20269:32;:::i;:::-;20260:42;:::i;:::-;20242:61;:::i;:::-;20229:74;;20151:158;;;:::o;20315:147::-;20410:45;20449:5;20410:45;:::i;:::-;20405:3;20398:58;20315:147;;:::o;20468:807::-;20717:4;20755:3;20744:9;20740:19;20732:27;;20769:71;20837:1;20826:9;20822:17;20813:6;20769:71;:::i;:::-;20850:72;20918:2;20907:9;20903:18;20894:6;20850:72;:::i;:::-;20932:80;21008:2;20997:9;20993:18;20984:6;20932:80;:::i;:::-;21022;21098:2;21087:9;21083:18;21074:6;21022:80;:::i;:::-;21112:73;21180:3;21169:9;21165:19;21156:6;21112:73;:::i;:::-;21195;21263:3;21252:9;21248:19;21239:6;21195:73;:::i;:::-;20468:807;;;;;;;;;:::o;21281:663::-;21369:6;21377;21385;21434:2;21422:9;21413:7;21409:23;21405:32;21402:119;;;21440:79;;:::i;:::-;21402:119;21560:1;21585:64;21641:7;21632:6;21621:9;21617:22;21585:64;:::i;:::-;21575:74;;21531:128;21698:2;21724:64;21780:7;21771:6;21760:9;21756:22;21724:64;:::i;:::-;21714:74;;21669:129;21837:2;21863:64;21919:7;21910:6;21899:9;21895:22;21863:64;:::i;:::-;21853:74;;21808:129;21281:663;;;;;:::o;21950:225::-;22090:34;22086:1;22078:6;22074:14;22067:58;22159:8;22154:2;22146:6;22142:15;22135:33;21950:225;:::o;22181:366::-;22323:3;22344:67;22408:2;22403:3;22344:67;:::i;:::-;22337:74;;22420:93;22509:3;22420:93;:::i;:::-;22538:2;22533:3;22529:12;22522:19;;22181:366;;;:::o;22553:419::-;22719:4;22757:2;22746:9;22742:18;22734:26;;22806:9;22800:4;22796:20;22792:1;22781:9;22777:17;22770:47;22834:131;22960:4;22834:131;:::i;:::-;22826:139;;22553:419;;;:::o;22978:223::-;23118:34;23114:1;23106:6;23102:14;23095:58;23187:6;23182:2;23174:6;23170:15;23163:31;22978:223;:::o;23207:366::-;23349:3;23370:67;23434:2;23429:3;23370:67;:::i;:::-;23363:74;;23446:93;23535:3;23446:93;:::i;:::-;23564:2;23559:3;23555:12;23548:19;;23207:366;;;:::o;23579:419::-;23745:4;23783:2;23772:9;23768:18;23760:26;;23832:9;23826:4;23822:20;23818:1;23807:9;23803:17;23796:47;23860:131;23986:4;23860:131;:::i;:::-;23852:139;;23579:419;;;:::o;24004:221::-;24144:34;24140:1;24132:6;24128:14;24121:58;24213:4;24208:2;24200:6;24196:15;24189:29;24004:221;:::o;24231:366::-;24373:3;24394:67;24458:2;24453:3;24394:67;:::i;:::-;24387:74;;24470:93;24559:3;24470:93;:::i;:::-;24588:2;24583:3;24579:12;24572:19;;24231:366;;;:::o;24603:419::-;24769:4;24807:2;24796:9;24792:18;24784:26;;24856:9;24850:4;24846:20;24842:1;24831:9;24827:17;24820:47;24884:131;25010:4;24884:131;:::i;:::-;24876:139;;24603:419;;;:::o;25028:224::-;25168:34;25164:1;25156:6;25152:14;25145:58;25237:7;25232:2;25224:6;25220:15;25213:32;25028:224;:::o;25258:366::-;25400:3;25421:67;25485:2;25480:3;25421:67;:::i;:::-;25414:74;;25497:93;25586:3;25497:93;:::i;:::-;25615:2;25610:3;25606:12;25599:19;;25258:366;;;:::o;25630:419::-;25796:4;25834:2;25823:9;25819:18;25811:26;;25883:9;25877:4;25873:20;25869:1;25858:9;25854:17;25847:47;25911:131;26037:4;25911:131;:::i;:::-;25903:139;;25630:419;;;:::o;26055:222::-;26195:34;26191:1;26183:6;26179:14;26172:58;26264:5;26259:2;26251:6;26247:15;26240:30;26055:222;:::o;26283:366::-;26425:3;26446:67;26510:2;26505:3;26446:67;:::i;:::-;26439:74;;26522:93;26611:3;26522:93;:::i;:::-;26640:2;26635:3;26631:12;26624:19;;26283:366;;;:::o;26655:419::-;26821:4;26859:2;26848:9;26844:18;26836:26;;26908:9;26902:4;26898:20;26894:1;26883:9;26879:17;26872:47;26936:131;27062:4;26936:131;:::i;:::-;26928:139;;26655:419;;;:::o;27080:228::-;27220:34;27216:1;27208:6;27204:14;27197:58;27289:11;27284:2;27276:6;27272:15;27265:36;27080:228;:::o;27314:366::-;27456:3;27477:67;27541:2;27536:3;27477:67;:::i;:::-;27470:74;;27553:93;27642:3;27553:93;:::i;:::-;27671:2;27666:3;27662:12;27655:19;;27314:366;;;:::o;27686:419::-;27852:4;27890:2;27879:9;27875:18;27867:26;;27939:9;27933:4;27929:20;27925:1;27914:9;27910:17;27903:47;27967:131;28093:4;27967:131;:::i;:::-;27959:139;;27686:419;;;:::o;28111:180::-;28159:77;28156:1;28149:88;28256:4;28253:1;28246:15;28280:4;28277:1;28270:15;28297:194;28337:4;28357:20;28375:1;28357:20;:::i;:::-;28352:25;;28391:20;28409:1;28391:20;:::i;:::-;28386:25;;28435:1;28432;28428:9;28420:17;;28459:1;28453:4;28450:11;28447:37;;;28464:18;;:::i;:::-;28447:37;28297:194;;;;:::o;28497:191::-;28537:3;28556:20;28574:1;28556:20;:::i;:::-;28551:25;;28590:20;28608:1;28590:20;:::i;:::-;28585:25;;28633:1;28630;28626:9;28619:16;;28654:3;28651:1;28648:10;28645:36;;;28661:18;;:::i;:::-;28645:36;28497:191;;;;:::o;28694:177::-;28834:29;28830:1;28822:6;28818:14;28811:53;28694:177;:::o;28877:366::-;29019:3;29040:67;29104:2;29099:3;29040:67;:::i;:::-;29033:74;;29116:93;29205:3;29116:93;:::i;:::-;29234:2;29229:3;29225:12;29218:19;;28877:366;;;:::o;29249:419::-;29415:4;29453:2;29442:9;29438:18;29430:26;;29502:9;29496:4;29492:20;29488:1;29477:9;29473:17;29466:47;29530:131;29656:4;29530:131;:::i;:::-;29522:139;;29249:419;;;:::o;29674:233::-;29713:3;29736:24;29754:5;29736:24;:::i;:::-;29727:33;;29782:66;29775:5;29772:77;29769:103;;29852:18;;:::i;:::-;29769:103;29899:1;29892:5;29888:13;29881:20;;29674:233;;;:::o;29913:831::-;30176:4;30214:3;30203:9;30199:19;30191:27;;30228:71;30296:1;30285:9;30281:17;30272:6;30228:71;:::i;:::-;30309:80;30385:2;30374:9;30370:18;30361:6;30309:80;:::i;:::-;30436:9;30430:4;30426:20;30421:2;30410:9;30406:18;30399:48;30464:108;30567:4;30558:6;30464:108;:::i;:::-;30456:116;;30582:72;30650:2;30639:9;30635:18;30626:6;30582:72;:::i;:::-;30664:73;30732:3;30721:9;30717:19;30708:6;30664:73;:::i;:::-;29913:831;;;;;;;;:::o;30750:410::-;30790:7;30813:20;30831:1;30813:20;:::i;:::-;30808:25;;30847:20;30865:1;30847:20;:::i;:::-;30842:25;;30902:1;30899;30895:9;30924:30;30942:11;30924:30;:::i;:::-;30913:41;;31103:1;31094:7;31090:15;31087:1;31084:22;31064:1;31057:9;31037:83;31014:139;;31133:18;;:::i;:::-;31014:139;30798:362;30750:410;;;;:::o;31166:180::-;31214:77;31211:1;31204:88;31311:4;31308:1;31301:15;31335:4;31332:1;31325:15;31352:185;31392:1;31409:20;31427:1;31409:20;:::i;:::-;31404:25;;31443:20;31461:1;31443:20;:::i;:::-;31438:25;;31482:1;31472:35;;31487:18;;:::i;:::-;31472:35;31529:1;31526;31522:9;31517:14;;31352:185;;;;:::o;31543:220::-;31683:34;31679:1;31671:6;31667:14;31660:58;31752:3;31747:2;31739:6;31735:15;31728:28;31543:220;:::o;31769:366::-;31911:3;31932:67;31996:2;31991:3;31932:67;:::i;:::-;31925:74;;32008:93;32097:3;32008:93;:::i;:::-;32126:2;32121:3;32117:12;32110:19;;31769:366;;;:::o;32141:419::-;32307:4;32345:2;32334:9;32330:18;32322:26;;32394:9;32388:4;32384:20;32380:1;32369:9;32365:17;32358:47;32422:131;32548:4;32422:131;:::i;:::-;32414:139;;32141:419;;;:::o
Swarm Source
ipfs://b963ba9babb976a127aeb838033bdb62258edf93d45114d13f7d58096c101d52
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.