Token Arbitrum Pad
Overview ERC20
Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,000,000,000 ARBPAD
Holders:
1,251 addresses
Transfers:
-
Contract:
Decimals:
18
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ArbitrumPad
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-02 */ // SPDX-License-Identifier: Unlicensed /** * Arbitrum Pad Contract * Discord: https://discord.com/invite/ZpfSJvdHdA * Medium: https://medium.com/@ArbitrumPad * Telegram: @ArbitrumPadChat * Twitter: @Arbitrum_Pad * Website: https://www.arbitrumpad.com/ */ pragma solidity ^0.8.10; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (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 waiveOwnership() 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 { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract ArbitrumPad is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "Arbitrum Pad"; string private _symbol = "ARBPAD"; uint8 private _decimals = 18; address public deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; uint256 public buyFee = 0; uint256 public sellFee = 1; uint256 public _totalBuyTax = buyFee; uint256 public _totalSellTax = sellFee; uint256 private _totalSupply = 1000000000 * 10 ** _decimals; bool public tradeOpen = false; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; isExcludedFromFee[deadAddress] = true; isMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } 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 _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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 approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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 setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } function setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setBuy(uint256 buyFeeNew) external onlyOwner(){ buyFee = buyFeeNew; _totalBuyTax = buyFee; require(_totalBuyTax <= 1 , "Max buy fee 1%"); } function setSell(uint256 sellFeeNew) external onlyOwner(){ sellFee = sellFeeNew; _totalSellTax = sellFee; require(_totalSellTax <= 1 , "Max sell fee 1%"); } function Trade() external onlyOwner{ tradeOpen = true; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(tradeOpen || isExcludedFromFee[sender] || isExcludedFromFee[recipient], "Trading is not open yet"); _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender,recipient, amount); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } function swapTokensForETH(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function takeFee(address sender,address recipient,uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalBuyTax).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalSellTax).div(100); } if(feeAmount > 0) { _balances[deadAddress] = _balances[deadAddress].add(feeAmount); emit Transfer(sender, deadAddress, feeAmount); } return amount.sub(feeAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Trade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFeeNew","type":"uint256"}],"name":"setBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellFeeNew","type":"uint256"}],"name":"setSell","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":[],"name":"tradeOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600c81526020017f417262697472756d20506164000000000000000000000000000000000000000081525060019080519060200190620000519291906200077d565b506040518060400160405280600681526020017f4152425041440000000000000000000000000000000000000000000000000000815250600290805190602001906200009f9291906200077d565b506012600360006101000a81548160ff021916908360ff16021790555061dead600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006008556001600955600854600a55600954600b55600360009054906101000a900460ff16600a620001339190620009c7565b633b9aca0062000144919062000a18565b600c556000600d60006101000a81548160ff0219169083151502179055503480156200016f57600080fd5b506000620001826200074c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000731b02da8cb0d097eb8d57a175b88c7d8b4799750690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000ae3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000339919062000ae3565b6040518363ffffffff1660e01b81526004016200035892919062000b26565b6020604051808303816000875af115801562000378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039e919062000ae3565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620004da6200075460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c54600460006200068e6200074c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620006dc6200074c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200073d919062000b64565b60405180910390a35062000be6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200078b9062000bb0565b90600052602060002090601f016020900481019282620007af5760008555620007fb565b82601f10620007ca57805160ff1916838001178555620007fb565b82800160010185558215620007fb579182015b82811115620007fa578251825591602001919060010190620007dd565b5b5090506200080a91906200080e565b5090565b5b80821115620008295760008160009055506001016200080f565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008bb578086048111156200089357620008926200082d565b5b6001851615620008a35780820291505b8081029050620008b3856200085c565b945062000873565b94509492505050565b600082620008d65760019050620009a9565b81620008e65760009050620009a9565b8160018114620008ff57600281146200090a5762000940565b6001915050620009a9565b60ff8411156200091f576200091e6200082d565b5b8360020a9150848211156200093957620009386200082d565b5b50620009a9565b5060208310610133831016604e8410600b84101617156200097a5782820a9050838111156200097457620009736200082d565b5b620009a9565b62000989848484600162000869565b92509050818404811115620009a357620009a26200082d565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009d482620009b0565b9150620009e183620009ba565b925062000a107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c4565b905092915050565b600062000a2582620009b0565b915062000a3283620009b0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a6e5762000a6d6200082d565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aab8262000a7e565b9050919050565b62000abd8162000a9e565b811462000ac957600080fd5b50565b60008151905062000add8162000ab2565b92915050565b60006020828403121562000afc5762000afb62000a79565b5b600062000b0c8482850162000acc565b91505092915050565b62000b208162000a9e565b82525050565b600060408201905062000b3d600083018562000b15565b62000b4c602083018462000b15565b9392505050565b62000b5e81620009b0565b82525050565b600060208201905062000b7b600083018462000b53565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bc957607f821691505b6020821081141562000be05762000bdf62000b81565b5b50919050565b612bd28062000bf66000396000f3fe6080604052600436106101d15760003560e01c80635342acb4116100f7578063a457c2d711610095578063d35a419011610064578063d35a41901461069d578063dd62ed3e146106c8578063ef422a1814610705578063f2fde38b1461072e576101d8565b8063a457c2d7146105cf578063a9059cbb1461060c578063c816841b14610649578063c8da659614610674576101d8565b80638da5cb5b116100d15780638da5cb5b14610537578063914eb66a1461056257806395d89b41146105795780639ad2817a146105a4576101d8565b80635342acb41461049457806370a08231146104d1578063844d591c1461050e576101d8565b806327c8f8351161016f578063395093511161013e57806339509351146103d85780633ecad2711461041557806347062402146104525780634d9fb1211461047d576101d8565b806327c8f8351461032c5780632b112e49146103575780632b14ca5614610382578063313ce567146103ad576101d8565b80631694505e116101ab5780631694505e1461026e57806318160ddd1461029957806323b872dd146102c457806325fa0b9814610301576101d8565b806306fdde03146101dd57806309494a0114610208578063095ea7b314610231576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610757565b6040516101ff9190612064565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906120c1565b6107e9565b005b34801561023d57600080fd5b506102586004803603810190610253919061214c565b6108d7565b60405161026591906121a7565b60405180910390f35b34801561027a57600080fd5b506102836108f5565b6040516102909190612221565b60405180910390f35b3480156102a557600080fd5b506102ae61091b565b6040516102bb919061224b565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190612266565b610925565b6040516102f891906121a7565b60405180910390f35b34801561030d57600080fd5b506103166109ff565b60405161032391906121a7565b60405180910390f35b34801561033857600080fd5b50610341610a12565b60405161034e91906122c8565b60405180910390f35b34801561036357600080fd5b5061036c610a38565b604051610379919061224b565b60405180910390f35b34801561038e57600080fd5b50610397610a7e565b6040516103a4919061224b565b60405180910390f35b3480156103b957600080fd5b506103c2610a84565b6040516103cf91906122ff565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061214c565b610a9b565b60405161040c91906121a7565b60405180910390f35b34801561042157600080fd5b5061043c6004803603810190610437919061231a565b610b4e565b60405161044991906121a7565b60405180910390f35b34801561045e57600080fd5b50610467610b6e565b604051610474919061224b565b60405180910390f35b34801561048957600080fd5b50610492610b74565b005b3480156104a057600080fd5b506104bb60048036038101906104b6919061231a565b610c26565b6040516104c891906121a7565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f3919061231a565b610c46565b604051610505919061224b565b60405180910390f35b34801561051a57600080fd5b5061053560048036038101906105309190612373565b610c8f565b005b34801561054357600080fd5b5061054c610d7f565b60405161055991906122c8565b60405180910390f35b34801561056e57600080fd5b50610577610da8565b005b34801561058557600080fd5b5061058e610efb565b60405161059b9190612064565b60405180910390f35b3480156105b057600080fd5b506105b9610f8d565b6040516105c6919061224b565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f1919061214c565b610f93565b60405161060391906121a7565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061214c565b611060565b60405161064091906121a7565b60405180910390f35b34801561065557600080fd5b5061065e61107f565b60405161066b91906122c8565b60405180910390f35b34801561068057600080fd5b5061069b600480360381019061069691906120c1565b6110a5565b005b3480156106a957600080fd5b506106b2611193565b6040516106bf919061224b565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906123b3565b611199565b6040516106fc919061224b565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190612373565b611220565b005b34801561073a57600080fd5b506107556004803603810190610750919061231a565b611310565b005b60606001805461076690612422565b80601f016020809104026020016040519081016040528092919081815260200182805461079290612422565b80156107df5780601f106107b4576101008083540402835291602001916107df565b820191906000526020600020905b8154815290600101906020018083116107c257829003601f168201915b5050505050905090565b6107f16114d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610875906124a0565b60405180910390fd5b80600981905550600954600b819055506001600b5411156108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb9061250c565b60405180910390fd5b50565b60006108eb6108e46114d2565b84846114da565b6001905092915050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b60006109328484846116a5565b506109f48461093f6114d2565b6109ef85604051806060016040528060288152602001612b5060289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a56114d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0a9092919063ffffffff16565b6114da565b600190509392505050565b600d60009054906101000a900460ff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a79610a68600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c46565b600c54611b6e90919063ffffffff16565b905090565b60095481565b6000600360009054906101000a900460ff16905090565b6000610b44610aa86114d2565b84610b3f8560056000610ab96114d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb890919063ffffffff16565b6114da565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60085481565b610b7c6114d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c00906124a0565b60405180910390fd5b6001600d60006101000a81548160ff021916908315150217905550565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c976114d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b906124a0565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610db06114d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e34906124a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610f0a90612422565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3690612422565b8015610f835780601f10610f5857610100808354040283529160200191610f83565b820191906000526020600020905b815481529060010190602001808311610f6657829003601f168201915b5050505050905090565b600a5481565b6000611056610fa06114d2565b8461105185604051806060016040528060258152602001612b786025913960056000610fca6114d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0a9092919063ffffffff16565b6114da565b6001905092915050565b600061107461106d6114d2565b84846116a5565b506001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ad6114d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611131906124a0565b60405180910390fd5b80600881905550600854600a819055506001600a541115611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790612578565b60405180910390fd5b50565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112286114d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac906124a0565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113186114d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c906124a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c9061260a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561154a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115419061269c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b19061272e565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611698919061224b565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d906127c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90612852565b60405180910390fd5b600d60009054906101000a900460ff16806117ea5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061183e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906128be565b60405180910390fd5b611906826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0a9092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119ec5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a00576119fb858585611c16565b611a02565b825b9050611a5681600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb890919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611af6919061224b565b60405180910390a360019150509392505050565b6000838311158290611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b499190612064565b60405180910390fd5b5060008385611b61919061290d565b9050809150509392505050565b6000611bb083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b0a565b905092915050565b6000808284611bc79190612941565b905083811015611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c03906129e3565b60405180910390fd5b8091505092915050565b60008060009050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c9e57611c976064611c89600a5486611ea390919063ffffffff16565b611f1e90919063ffffffff16565b9050611d1c565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d1b57611d186064611d0a600b5486611ea390919063ffffffff16565b611f1e90919063ffffffff16565b90505b5b6000811115611e8657611d998160046000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb890919063ffffffff16565b60046000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e7d919061224b565b60405180910390a35b611e998184611b6e90919063ffffffff16565b9150509392505050565b600080831415611eb65760009050611f18565b60008284611ec49190612a03565b9050828482611ed39190612a8c565b14611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90612b2f565b60405180910390fd5b809150505b92915050565b6000611f6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f68565b905092915050565b60008083118290611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa69190612064565b60405180910390fd5b5060008385611fbe9190612a8c565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612005578082015181840152602081019050611fea565b83811115612014576000848401525b50505050565b6000601f19601f8301169050919050565b600061203682611fcb565b6120408185611fd6565b9350612050818560208601611fe7565b6120598161201a565b840191505092915050565b6000602082019050818103600083015261207e818461202b565b905092915050565b600080fd5b6000819050919050565b61209e8161208b565b81146120a957600080fd5b50565b6000813590506120bb81612095565b92915050565b6000602082840312156120d7576120d6612086565b5b60006120e5848285016120ac565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612119826120ee565b9050919050565b6121298161210e565b811461213457600080fd5b50565b60008135905061214681612120565b92915050565b6000806040838503121561216357612162612086565b5b600061217185828601612137565b9250506020612182858286016120ac565b9150509250929050565b60008115159050919050565b6121a18161218c565b82525050565b60006020820190506121bc6000830184612198565b92915050565b6000819050919050565b60006121e76121e26121dd846120ee565b6121c2565b6120ee565b9050919050565b60006121f9826121cc565b9050919050565b600061220b826121ee565b9050919050565b61221b81612200565b82525050565b60006020820190506122366000830184612212565b92915050565b6122458161208b565b82525050565b6000602082019050612260600083018461223c565b92915050565b60008060006060848603121561227f5761227e612086565b5b600061228d86828701612137565b935050602061229e86828701612137565b92505060406122af868287016120ac565b9150509250925092565b6122c28161210e565b82525050565b60006020820190506122dd60008301846122b9565b92915050565b600060ff82169050919050565b6122f9816122e3565b82525050565b600060208201905061231460008301846122f0565b92915050565b6000602082840312156123305761232f612086565b5b600061233e84828501612137565b91505092915050565b6123508161218c565b811461235b57600080fd5b50565b60008135905061236d81612347565b92915050565b6000806040838503121561238a57612389612086565b5b600061239885828601612137565b92505060206123a98582860161235e565b9150509250929050565b600080604083850312156123ca576123c9612086565b5b60006123d885828601612137565b92505060206123e985828601612137565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061243a57607f821691505b6020821081141561244e5761244d6123f3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061248a602083611fd6565b915061249582612454565b602082019050919050565b600060208201905081810360008301526124b98161247d565b9050919050565b7f4d61782073656c6c206665652031250000000000000000000000000000000000600082015250565b60006124f6600f83611fd6565b9150612501826124c0565b602082019050919050565b60006020820190508181036000830152612525816124e9565b9050919050565b7f4d61782062757920666565203125000000000000000000000000000000000000600082015250565b6000612562600e83611fd6565b915061256d8261252c565b602082019050919050565b6000602082019050818103600083015261259181612555565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006125f4602683611fd6565b91506125ff82612598565b604082019050919050565b60006020820190508181036000830152612623816125e7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612686602483611fd6565b91506126918261262a565b604082019050919050565b600060208201905081810360008301526126b581612679565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612718602283611fd6565b9150612723826126bc565b604082019050919050565b600060208201905081810360008301526127478161270b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006127aa602583611fd6565b91506127b58261274e565b604082019050919050565b600060208201905081810360008301526127d98161279d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061283c602383611fd6565b9150612847826127e0565b604082019050919050565b6000602082019050818103600083015261286b8161282f565b9050919050565b7f54726164696e67206973206e6f74206f70656e20796574000000000000000000600082015250565b60006128a8601783611fd6565b91506128b382612872565b602082019050919050565b600060208201905081810360008301526128d78161289b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129188261208b565b91506129238361208b565b925082821015612936576129356128de565b5b828203905092915050565b600061294c8261208b565b91506129578361208b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561298c5761298b6128de565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006129cd601b83611fd6565b91506129d882612997565b602082019050919050565b600060208201905081810360008301526129fc816129c0565b9050919050565b6000612a0e8261208b565b9150612a198361208b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a5257612a516128de565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a978261208b565b9150612aa28361208b565b925082612ab257612ab1612a5d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b19602183611fd6565b9150612b2482612abd565b604082019050919050565b60006020820190508181036000830152612b4881612b0c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205bc85b4cb742b728d2d2559a18de923b64d5e381a1d86cf27b70c4c080dd3ac364736f6c634300080a0033
Deployed ByteCode Sourcemap
14425:7271:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16444:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18592:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17610:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15266:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16721:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19404:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15228:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14679:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18866:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15035:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16630:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17107:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14947:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15001:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18788:70;;;;;;;;;;;;;:::i;:::-;;14890:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16829:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18267:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5964:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6189:145;;;;;;;;;;;;;:::i;:::-;;16535:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15070:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17333:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19229:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15314:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18404:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15113:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16956:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18124:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16444:83;16481:13;16514:5;16507:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16444:83;:::o;18592:188::-;6108:12;:10;:12::i;:::-;6098:22;;:6;;;;;;;;;;:22;;;6090:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18670:10:::1;18660:7;:20;;;;18707:7;;18691:13;:23;;;;18750:1;18733:13;;:18;;18725:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18592:188:::0;:::o;17610:161::-;17685:4;17702:39;17711:12;:10;:12::i;:::-;17725:7;17734:6;17702:8;:39::i;:::-;17759:4;17752:11;;17610:161;;;;:::o;15266:41::-;;;;;;;;;;;;;:::o;16721:100::-;16774:7;16801:12;;16794:19;;16721:100;:::o;19404:313::-;19502:4;19519:36;19529:6;19537:9;19548:6;19519:9;:36::i;:::-;;19566:121;19575:6;19583:12;:10;:12::i;:::-;19597:89;19635:6;19597:89;;;;;;;;;;;;;;;;;:11;:19;19609:6;19597:19;;;;;;;;;;;;;;;:33;19617:12;:10;:12::i;:::-;19597:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19566:8;:121::i;:::-;19705:4;19698:11;;19404:313;;;;;:::o;15228:29::-;;;;;;;;;;;;;:::o;14679:71::-;;;;;;;;;;;;;:::o;18866:128::-;18919:7;18946:40;18963:22;18973:11;;;;;;;;;;;18963:9;:22::i;:::-;18946:12;;:16;;:40;;;;:::i;:::-;18939:47;;18866:128;:::o;15035:26::-;;;;:::o;16630:83::-;16671:5;16696:9;;;;;;;;;;;16689:16;;16630:83;:::o;17107:218::-;17195:4;17212:83;17221:12;:10;:12::i;:::-;17235:7;17244:50;17283:10;17244:11;:25;17256:12;:10;:12::i;:::-;17244:25;;;;;;;;;;;;;;;:34;17270:7;17244:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17212:8;:83::i;:::-;17313:4;17306:11;;17107:218;;;;:::o;14947:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15001:25::-;;;;:::o;18788:70::-;6108:12;:10;:12::i;:::-;6098:22;;:6;;;;;;;;;;:22;;;6090:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18846:4:::1;18834:9;;:16;;;;;;;;;;;;;;;;;;18788:70::o:0;14890:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;16829:119::-;16895:7;16922:9;:18;16932:7;16922:18;;;;;;;;;;;;;;;;16915:25;;16829:119;;;:::o;18267:129::-;6108:12;:10;:12::i;:::-;6098:22;;:6;;;;;;;;;;:22;;;6090:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18380:8:::1;18356:12;:21;18369:7;18356:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18267:129:::0;;:::o;5964:79::-;6002:7;6029:6;;;;;;;;;;;6022:13;;5964:79;:::o;6189:145::-;6108:12;:10;:12::i;:::-;6098:22;;:6;;;;;;;;;;:22;;;6090:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6293:1:::1;6256:40;;6277:6;::::0;::::1;;;;;;;;6256:40;;;;;;;;;;;;6324:1;6307:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6189:145::o:0;16535:87::-;16574:13;16607:7;16600:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16535:87;:::o;15070:36::-;;;;:::o;17333:269::-;17426:4;17443:129;17452:12;:10;:12::i;:::-;17466:7;17475:96;17514:15;17475:96;;;;;;;;;;;;;;;;;:11;:25;17487:12;:10;:12::i;:::-;17475:25;;;;;;;;;;;;;;;:34;17501:7;17475:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17443:8;:129::i;:::-;17590:4;17583:11;;17333:269;;;;:::o;19229:167::-;19307:4;19324:42;19334:12;:10;:12::i;:::-;19348:9;19359:6;19324:9;:42::i;:::-;;19384:4;19377:11;;19229:167;;;;:::o;15314:26::-;;;;;;;;;;;;;:::o;18404:180::-;6108:12;:10;:12::i;:::-;6098:22;;:6;;;;;;;;;;:22;;;6090:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18479:9:::1;18470:6;:18;;;;18514:6;;18499:12;:21;;;;18555:1;18539:12;;:17;;18531:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;18404:180:::0;:::o;15113:38::-;;;;:::o;16956:143::-;17037:7;17064:11;:18;17076:5;17064:18;;;;;;;;;;;;;;;:27;17083:7;17064:27;;;;;;;;;;;;;;;;17057:34;;16956:143;;;;:::o;18124:135::-;6108:12;:10;:12::i;:::-;6098:22;;:6;;;;;;;;;;:22;;;6090:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18243:8:::1;18214:17;:26;18232:7;18214:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18124:135:::0;;:::o;6342:244::-;6108:12;:10;:12::i;:::-;6098:22;;:6;;;;;;;;;;:22;;;6090:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6451:1:::1;6431:22;;:8;:22;;;;6423:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6541:8;6512:38;;6533:6;::::0;::::1;;;;;;;;6512:38;;;;;;;;;;;;6570:8;6561:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6342:244:::0;:::o;337:115::-;390:15;433:10;418:26;;337:115;:::o;17779:337::-;17889:1;17872:19;;:5;:19;;;;17864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17970:1;17951:21;;:7;:21;;;;17943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18054:6;18024:11;:18;18036:5;18024:18;;;;;;;;;;;;;;;:27;18043:7;18024:27;;;;;;;;;;;;;;;:36;;;;18092:7;18076:32;;18085:5;18076:32;;;18101:6;18076:32;;;;;;:::i;:::-;;;;;;;;17779:337;;;:::o;19729:761::-;19816:4;19861:1;19843:20;;:6;:20;;;;19835:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19945:1;19924:23;;:9;:23;;;;19916:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20006:9;;;;;;;;;;;:38;;;;20019:17;:25;20037:6;20019:25;;;;;;;;;;;;;;;;;;;;;;;;;20006:38;:70;;;;20048:17;:28;20066:9;20048:28;;;;;;;;;;;;;;;;;;;;;;;;;20006:70;19998:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;20137:53;20159:6;20137:53;;;;;;;;;;;;;;;;;:9;:17;20147:6;20137:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20117:9;:17;20127:6;20117:17;;;;;;;;;;;;;;;:73;;;;20203:19;20226:17;:25;20244:6;20226:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;20255:17;:28;20273:9;20255:28;;;;;;;;;;;;;;;;;;;;;;;;;20226:57;20225:104;;20296:33;20304:6;20311:9;20322:6;20296:7;:33::i;:::-;20225:104;;;20287:6;20225:104;20203:126;;20365:37;20390:11;20365:9;:20;20375:9;20365:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;20342:9;:20;20352:9;20342:20;;;;;;;;;;;;;;;:60;;;;20437:9;20420:40;;20429:6;20420:40;;;20448:11;20420:40;;;;;;:::i;:::-;;;;;;;;20478:4;20471:11;;;19729:761;;;;;:::o;1738:192::-;1824:7;1857:1;1852;:6;;1860:12;1844:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1884:9;1900:1;1896;:5;;;;:::i;:::-;1884:17;;1921:1;1914:8;;;1738:192;;;;;:::o;1594:136::-;1652:7;1679:43;1683:1;1686;1679:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1672:50;;1594:136;;;;:::o;1405:181::-;1463:7;1483:9;1499:1;1495;:5;;;;:::i;:::-;1483:17;;1524:1;1519;:6;;1511:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1577:1;1570:8;;;1405:181;;;;:::o;21095:598::-;21179:7;21199:17;21219:1;21199:21;;21247:12;:20;21260:6;21247:20;;;;;;;;;;;;;;;;;;;;;;;;;21244:213;;;21296:33;21325:3;21296:24;21307:12;;21296:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21284:45;;21244:213;;;21359:12;:23;21372:9;21359:23;;;;;;;;;;;;;;;;;;;;;;;;;21356:101;;;21411:34;21441:3;21411:25;21422:13;;21411:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21399:46;;21356:101;21244:213;21495:1;21483:9;:13;21480:167;;;21538:37;21565:9;21538;:22;21548:11;;;;;;;;;;;21538:22;;;;;;;;;;;;;;;;:26;;:37;;;;:::i;:::-;21513:9;:22;21523:11;;;;;;;;;;;21513:22;;;;;;;;;;;;;;;:62;;;;21612:11;;;;;;;;;;;21595:40;;21604:6;21595:40;;;21625:9;21595:40;;;;;;:::i;:::-;;;;;;;;21480:167;21664:21;21675:9;21664:6;:10;;:21;;;;:::i;:::-;21657:28;;;21095:598;;;;;:::o;1938:250::-;1996:7;2025:1;2020;:6;2016:47;;;2050:1;2043:8;;;;2016:47;2075:9;2091:1;2087;:5;;;;:::i;:::-;2075:17;;2120:1;2115;2111;:5;;;;:::i;:::-;:10;2103:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2179:1;2172:8;;;1938:250;;;;;:::o;2196:132::-;2254:7;2281:39;2285:1;2288;2281:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2274:46;;2196:132;;;;:::o;2336:278::-;2422:7;2454:1;2450;:5;2457:12;2442:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2481:9;2497:1;2493;:5;;;;:::i;:::-;2481:17;;2605:1;2598:8;;;2336:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:77;1761:7;1790:5;1779:16;;1724:77;;;:::o;1807:122::-;1880:24;1898:5;1880:24;:::i;:::-;1873:5;1870:35;1860:63;;1919:1;1916;1909:12;1860:63;1807:122;:::o;1935:139::-;1981:5;2019:6;2006:20;1997:29;;2035:33;2062:5;2035:33;:::i;:::-;1935:139;;;;:::o;2080:329::-;2139:6;2188:2;2176:9;2167:7;2163:23;2159:32;2156:119;;;2194:79;;:::i;:::-;2156:119;2314:1;2339:53;2384:7;2375:6;2364:9;2360:22;2339:53;:::i;:::-;2329:63;;2285:117;2080:329;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:329::-;6625:6;6674:2;6662:9;6653:7;6649:23;6645:32;6642:119;;;6680:79;;:::i;:::-;6642:119;6800:1;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6771:117;6566:329;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:474::-;7704:6;7712;7761:2;7749:9;7740:7;7736:23;7732:32;7729:119;;;7767:79;;:::i;:::-;7729:119;7887:1;7912:53;7957:7;7948:6;7937:9;7933:22;7912:53;:::i;:::-;7902:63;;7858:117;8014:2;8040:53;8085:7;8076:6;8065:9;8061:22;8040:53;:::i;:::-;8030:63;;7985:118;7636:474;;;;;:::o;8116:180::-;8164:77;8161:1;8154:88;8261:4;8258:1;8251:15;8285:4;8282:1;8275:15;8302:320;8346:6;8383:1;8377:4;8373:12;8363:22;;8430:1;8424:4;8420:12;8451:18;8441:81;;8507:4;8499:6;8495:17;8485:27;;8441:81;8569:2;8561:6;8558:14;8538:18;8535:38;8532:84;;;8588:18;;:::i;:::-;8532:84;8353:269;8302:320;;;:::o;8628:182::-;8768:34;8764:1;8756:6;8752:14;8745:58;8628:182;:::o;8816:366::-;8958:3;8979:67;9043:2;9038:3;8979:67;:::i;:::-;8972:74;;9055:93;9144:3;9055:93;:::i;:::-;9173:2;9168:3;9164:12;9157:19;;8816:366;;;:::o;9188:419::-;9354:4;9392:2;9381:9;9377:18;9369:26;;9441:9;9435:4;9431:20;9427:1;9416:9;9412:17;9405:47;9469:131;9595:4;9469:131;:::i;:::-;9461:139;;9188:419;;;:::o;9613:165::-;9753:17;9749:1;9741:6;9737:14;9730:41;9613:165;:::o;9784:366::-;9926:3;9947:67;10011:2;10006:3;9947:67;:::i;:::-;9940:74;;10023:93;10112:3;10023:93;:::i;:::-;10141:2;10136:3;10132:12;10125:19;;9784:366;;;:::o;10156:419::-;10322:4;10360:2;10349:9;10345:18;10337:26;;10409:9;10403:4;10399:20;10395:1;10384:9;10380:17;10373:47;10437:131;10563:4;10437:131;:::i;:::-;10429:139;;10156:419;;;:::o;10581:164::-;10721:16;10717:1;10709:6;10705:14;10698:40;10581:164;:::o;10751:366::-;10893:3;10914:67;10978:2;10973:3;10914:67;:::i;:::-;10907:74;;10990:93;11079:3;10990:93;:::i;:::-;11108:2;11103:3;11099:12;11092:19;;10751:366;;;:::o;11123:419::-;11289:4;11327:2;11316:9;11312:18;11304:26;;11376:9;11370:4;11366:20;11362:1;11351:9;11347:17;11340:47;11404:131;11530:4;11404:131;:::i;:::-;11396:139;;11123:419;;;:::o;11548:225::-;11688:34;11684:1;11676:6;11672:14;11665:58;11757:8;11752:2;11744:6;11740:15;11733:33;11548:225;:::o;11779:366::-;11921:3;11942:67;12006:2;12001:3;11942:67;:::i;:::-;11935:74;;12018:93;12107:3;12018:93;:::i;:::-;12136:2;12131:3;12127:12;12120:19;;11779:366;;;:::o;12151:419::-;12317:4;12355:2;12344:9;12340:18;12332:26;;12404:9;12398:4;12394:20;12390:1;12379:9;12375:17;12368:47;12432:131;12558:4;12432:131;:::i;:::-;12424:139;;12151:419;;;:::o;12576:223::-;12716:34;12712:1;12704:6;12700:14;12693:58;12785:6;12780:2;12772:6;12768:15;12761:31;12576:223;:::o;12805:366::-;12947:3;12968:67;13032:2;13027:3;12968:67;:::i;:::-;12961:74;;13044:93;13133:3;13044:93;:::i;:::-;13162:2;13157:3;13153:12;13146:19;;12805:366;;;:::o;13177:419::-;13343:4;13381:2;13370:9;13366:18;13358:26;;13430:9;13424:4;13420:20;13416:1;13405:9;13401:17;13394:47;13458:131;13584:4;13458:131;:::i;:::-;13450:139;;13177:419;;;:::o;13602:221::-;13742:34;13738:1;13730:6;13726:14;13719:58;13811:4;13806:2;13798:6;13794:15;13787:29;13602:221;:::o;13829:366::-;13971:3;13992:67;14056:2;14051:3;13992:67;:::i;:::-;13985:74;;14068:93;14157:3;14068:93;:::i;:::-;14186:2;14181:3;14177:12;14170:19;;13829:366;;;:::o;14201:419::-;14367:4;14405:2;14394:9;14390:18;14382:26;;14454:9;14448:4;14444:20;14440:1;14429:9;14425:17;14418:47;14482:131;14608:4;14482:131;:::i;:::-;14474:139;;14201:419;;;:::o;14626:224::-;14766:34;14762:1;14754:6;14750:14;14743:58;14835:7;14830:2;14822:6;14818:15;14811:32;14626:224;:::o;14856:366::-;14998:3;15019:67;15083:2;15078:3;15019:67;:::i;:::-;15012:74;;15095:93;15184:3;15095:93;:::i;:::-;15213:2;15208:3;15204:12;15197:19;;14856:366;;;:::o;15228:419::-;15394:4;15432:2;15421:9;15417:18;15409:26;;15481:9;15475:4;15471:20;15467:1;15456:9;15452:17;15445:47;15509:131;15635:4;15509:131;:::i;:::-;15501:139;;15228:419;;;:::o;15653:222::-;15793:34;15789:1;15781:6;15777:14;15770:58;15862:5;15857:2;15849:6;15845:15;15838:30;15653:222;:::o;15881:366::-;16023:3;16044:67;16108:2;16103:3;16044:67;:::i;:::-;16037:74;;16120:93;16209:3;16120:93;:::i;:::-;16238:2;16233:3;16229:12;16222:19;;15881:366;;;:::o;16253:419::-;16419:4;16457:2;16446:9;16442:18;16434:26;;16506:9;16500:4;16496:20;16492:1;16481:9;16477:17;16470:47;16534:131;16660:4;16534:131;:::i;:::-;16526:139;;16253:419;;;:::o;16678:173::-;16818:25;16814:1;16806:6;16802:14;16795:49;16678:173;:::o;16857:366::-;16999:3;17020:67;17084:2;17079:3;17020:67;:::i;:::-;17013:74;;17096:93;17185:3;17096:93;:::i;:::-;17214:2;17209:3;17205:12;17198:19;;16857:366;;;:::o;17229:419::-;17395:4;17433:2;17422:9;17418:18;17410:26;;17482:9;17476:4;17472:20;17468:1;17457:9;17453:17;17446:47;17510:131;17636:4;17510:131;:::i;:::-;17502:139;;17229:419;;;:::o;17654:180::-;17702:77;17699:1;17692:88;17799:4;17796:1;17789:15;17823:4;17820:1;17813:15;17840:191;17880:4;17900:20;17918:1;17900:20;:::i;:::-;17895:25;;17934:20;17952:1;17934:20;:::i;:::-;17929:25;;17973:1;17970;17967:8;17964:34;;;17978:18;;:::i;:::-;17964:34;18023:1;18020;18016:9;18008:17;;17840:191;;;;:::o;18037:305::-;18077:3;18096:20;18114:1;18096:20;:::i;:::-;18091:25;;18130:20;18148:1;18130:20;:::i;:::-;18125:25;;18284:1;18216:66;18212:74;18209:1;18206:81;18203:107;;;18290:18;;:::i;:::-;18203:107;18334:1;18331;18327:9;18320:16;;18037:305;;;;:::o;18348:177::-;18488:29;18484:1;18476:6;18472:14;18465:53;18348:177;:::o;18531:366::-;18673:3;18694:67;18758:2;18753:3;18694:67;:::i;:::-;18687:74;;18770:93;18859:3;18770:93;:::i;:::-;18888:2;18883:3;18879:12;18872:19;;18531:366;;;:::o;18903:419::-;19069:4;19107:2;19096:9;19092:18;19084:26;;19156:9;19150:4;19146:20;19142:1;19131:9;19127:17;19120:47;19184:131;19310:4;19184:131;:::i;:::-;19176:139;;18903:419;;;:::o;19328:348::-;19368:7;19391:20;19409:1;19391:20;:::i;:::-;19386:25;;19425:20;19443:1;19425:20;:::i;:::-;19420:25;;19613:1;19545:66;19541:74;19538:1;19535:81;19530:1;19523:9;19516:17;19512:105;19509:131;;;19620:18;;:::i;:::-;19509:131;19668:1;19665;19661:9;19650:20;;19328:348;;;;:::o;19682:180::-;19730:77;19727:1;19720:88;19827:4;19824:1;19817:15;19851:4;19848:1;19841:15;19868:185;19908:1;19925:20;19943:1;19925:20;:::i;:::-;19920:25;;19959:20;19977:1;19959:20;:::i;:::-;19954:25;;19998:1;19988:35;;20003:18;;:::i;:::-;19988:35;20045:1;20042;20038:9;20033:14;;19868:185;;;;:::o;20059:220::-;20199:34;20195:1;20187:6;20183:14;20176:58;20268:3;20263:2;20255:6;20251:15;20244:28;20059:220;:::o;20285:366::-;20427:3;20448:67;20512:2;20507:3;20448:67;:::i;:::-;20441:74;;20524:93;20613:3;20524:93;:::i;:::-;20642:2;20637:3;20633:12;20626:19;;20285:366;;;:::o;20657:419::-;20823:4;20861:2;20850:9;20846:18;20838:26;;20910:9;20904:4;20900:20;20896:1;20885:9;20881:17;20874:47;20938:131;21064:4;20938:131;:::i;:::-;20930:139;;20657:419;;;:::o
Metadata Hash
ipfs://5bc85b4cb742b728d2d2559a18de923b64d5e381a1d86cf27b70c4c080dd3ac3