Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- NOAH
- Optimization enabled
- false
- Compiler version
- v0.8.20+commit.a1b79de6
- EVM Version
- shanghai
- Verified at
- 2025-10-13T19:56:36.094800Z
Constructor Arguments
0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000001dcd650000000000000000000000000000000000000000000000000000000000000000084e6f6168436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e4f414800000000000000000000000000000000000000000000000000000000
Arg [0] (string) : NoahCoin
Arg [1] (string) : NOAH
Arg [2] (uint8) : 18
Arg [3] (uint256) : 500000000
Contract source code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
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;
}
}
/**
* PRC20 standard interface.
*/
interface IPRC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
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);
}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {
owner = _owner;
}
modifier onlyOwner() {
require(isOwner(msg.sender), "!OWNER"); _;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function transferOwnership(address payable adr) public onlyOwner {
owner = adr;
emit OwnershipTransferred(adr);
}
event OwnershipTransferred(address owner);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IDEXRouter {
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 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 NOAH is IPRC20, Ownable {
using SafeMath for uint256;
address WPLS = 0xA1077a294dDE1B09bB078844df40758a5D0f9a27;
address DEAD = 0x0000000000000000000000000000000000000369;
address ZERO = 0x0000000000000000000000000000000000000000;
string private _name;
string private _symbol;
uint8 private _decimals;
uint256 private _totalSupply;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) _allowances;
mapping (address => bool) isFeeExempt;
bool public notliftoff = true;
uint256 public liquidityFee = 10; // Auto 1% $NOAH/WPLS LP
uint256 public buyburnFee = 10; // 1% Buy and Burn $SURF
uint256 public Futurecoinfund = 10; // 0.5% Future Coin Fund
uint256 public FaithfulholdersFee = 10; // 1% Faithful Holders
uint256 public CharityFundFee = 5; // 0.5% Charity
uint256 public burnFee = 5; // 0.5% burn $NOAH
uint256 public totalFee = Futurecoinfund + liquidityFee + FaithfulholdersFee + buyburnFee + CharityFundFee;
uint256 public feeDenominator = 1000;
uint256 public sellMultiplier = 100;
address public autoLiquidityReceiver;
address public FuturecoinfundReceiver;
address public CharityFundFeeReceiver;
address public FaithfulholdersFeeReceiver;
uint256 targetLiquidity = 100;
uint256 targetLiquidityDenominator = 100;
IDEXRouter public router;
address public pair;
bool public tradingOpen = false;
bool public swapEnabled = true;
uint256 public swapThreshold = _totalSupply * 5 / 10000; // 0.05% of supply
bool inSwap;
modifier swapping() { inSwap = true; _; inSwap = false; }
constructor (
string memory tokenName,
string memory tokenSymbol,
uint8 tokenDecimals,
uint256 tokenTotalSupply
) Ownable(msg.sender) {
_name = tokenName;
_symbol = tokenSymbol;
_decimals = tokenDecimals;
_totalSupply = tokenTotalSupply.mul(10**uint256(tokenDecimals));
swapThreshold = _totalSupply * 5 / 10000;
router = IDEXRouter(0x165C3410fC91EF562C50559f7d2289fEbed552d9);
pair = IDEXFactory(router.factory()).createPair(WPLS, address(this));
_allowances[address(this)][address(router)] = type(uint256).max;
isFeeExempt[msg.sender] = true;
autoLiquidityReceiver = msg.sender;
FuturecoinfundReceiver = msg.sender;
CharityFundFeeReceiver = msg.sender;
FaithfulholdersFeeReceiver = msg.sender;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable { }
function totalSupply() external view override returns (uint256) { return _totalSupply; }
function decimals() external view override returns (uint8) { return _decimals; }
function symbol() external view override returns (string memory) { return _symbol; }
function name() external view override returns (string memory) { return _name; }
function getOwner() external view override returns (address) { return owner; }
function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
function approve(address spender, uint256 amount) public override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function approveMax(address spender) external returns (bool) {
return approve(spender, type(uint256).max);
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
return _transferFrom(msg.sender, recipient, amount);
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
if(_allowances[sender][msg.sender] != type(uint256).max){
_allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
}
return _transferFrom(sender, recipient, amount);
}
function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
if(inSwap){ return _basicTransfer(sender, recipient, amount); }
if(!isOwner(sender) && !isOwner(recipient)){
require(tradingOpen,"Trading not open yet");
}
if(shouldSwapBack()){ swapBack(); }
//Exchange tokens
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount,(recipient == pair)) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
return true;
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
if (isFeeExempt[recipient]){
return false;
}
return !isFeeExempt[sender];
}
function buyburn(uint256 amount) internal {
IPRC20 token1 = IPRC20(0x12828D4cdA7CBfAcd7586E54708A9b9674641bEd); //SURF
address[] memory path = new address[](2);
path[0] = WPLS;
path[1] = address(token1);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
0,
path,
address(this),
block.timestamp
);
uint256 amount1 = token1.balanceOf(address(this));
token1.transfer(address(0x0000000000000000000000000000000000000369), amount1);
}
function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
uint256 multiplier = isSell ? sellMultiplier : 100;
uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
uint256 burnAmount = amount.mul(burnFee).div(feeDenominator);
if (burnAmount > 0){
_balances[DEAD] = _balances[DEAD].add(burnAmount);
emit Transfer(sender, DEAD, burnAmount);
}
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
return amount.sub(feeAmount).sub(burnAmount);
}
function shouldSwapBack() internal view returns (bool) {
return msg.sender != pair
&& !inSwap
&& swapEnabled
&& _balances[address(this)] >= swapThreshold;
}
function clearStuckBalance_sender(uint256 amountPercentage) external onlyOwner {
uint256 amountPLS = address(this).balance;
payable(msg.sender).transfer(amountPLS * amountPercentage / 100);
}
function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
sellMultiplier = Multiplier;
}
function addPLSLp(uint256 amountToLiquify, uint256 amountPLSLiquidity) internal {
if(amountToLiquify > 0){
router.addLiquidityETH{value: amountPLSLiquidity}(
address(this),
amountToLiquify,
0,
0,
autoLiquidityReceiver,
block.timestamp
);
emit AutoLiquify(amountPLSLiquidity, amountToLiquify);
}
}
function swapBack() internal swapping {
uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WPLS;
uint256 balanceBefore = address(this).balance;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountPLS = address(this).balance.sub(balanceBefore);
uint256 totalPLSFee = totalFee.sub(dynamicLiquidityFee.div(2));
uint256 amountPLSLiquidity = amountPLS.mul(dynamicLiquidityFee).div(totalPLSFee).div(2);
uint256 amountPLSBuyburn = amountPLS.mul(buyburnFee).div(totalPLSFee);
uint256 amountPLSFutureCoinFund = amountPLS.mul(Futurecoinfund).div(totalPLSFee);
uint256 amountPLSCharityFund = amountPLS.mul(CharityFundFee).div(totalPLSFee);
uint256 amountPLSFaithfulholders = amountPLS.mul(FaithfulholdersFee).div(totalPLSFee);
if (amountPLSBuyburn > 0) {
buyburn(amountPLSBuyburn);
}
(bool tmpSuccess,) = payable(FuturecoinfundReceiver).call{value: amountPLSFutureCoinFund, gas: 30000}("");
(tmpSuccess,) = payable(CharityFundFeeReceiver).call{value: amountPLSCharityFund, gas: 30000}("");
// Supress warning msg
tmpSuccess = false;
addPLSLp(amountToLiquify,amountPLSLiquidity);
uint256 remainder = address(this).balance - amountPLSFaithfulholders;
(bool tmpSuccess2,) = payable(FaithfulholdersFeeReceiver).call{value: amountPLSFaithfulholders+remainder, gas: 30000}("");
// Supress warning msg
tmpSuccess2 = false;
}
function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
isFeeExempt[holder] = exempt;
}
function setFees(uint256 _liquidityFee, uint256 _Futurecoinfund, uint256 _CharityFundFee, uint256 _FaithfulholdersFee, uint256 _burnFee, uint256 _buyburnFee) external onlyOwner {
liquidityFee = _liquidityFee;
Futurecoinfund = _Futurecoinfund;
CharityFundFee = _CharityFundFee;
FaithfulholdersFee = _FaithfulholdersFee;
burnFee = _burnFee;
buyburnFee = _buyburnFee;
uint256 subtotalFee = _liquidityFee.add(_Futurecoinfund).add(_CharityFundFee);
totalFee = subtotalFee.add(_FaithfulholdersFee).add(_buyburnFee);
feeDenominator = 1000;
require(totalFee < 55, "Fees cannot be more than 5%");
}
function liftoff() public onlyOwner {
require(notliftoff, "Moon mission already a go");
tradingOpen = true;
notliftoff = false;
}
function setFeeReceivers(address _autoLiquidityReceiver, address _FuturecoinfundReceiver, address _CharityFundFeeReceiver, address _FaithfulholdersFeeReceiver ) external onlyOwner {
autoLiquidityReceiver = _autoLiquidityReceiver;
FuturecoinfundReceiver = _FuturecoinfundReceiver;
CharityFundFeeReceiver = _CharityFundFeeReceiver;
FaithfulholdersFeeReceiver = _FaithfulholdersFeeReceiver;
}
function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
swapEnabled = _enabled;
swapThreshold = _amount;
}
function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
targetLiquidity = _target;
targetLiquidityDenominator = _denominator;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
}
function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
}
function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
return getLiquidityBacking(accuracy) > target;
}
event AutoLiquify(uint256 amountPLS, uint256 amountBOG);
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"tokenName","internalType":"string"},{"type":"string","name":"tokenSymbol","internalType":"string"},{"type":"uint8","name":"tokenDecimals","internalType":"uint8"},{"type":"uint256","name":"tokenTotalSupply","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AutoLiquify","inputs":[{"type":"uint256","name":"amountPLS","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountBOG","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"CharityFundFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"CharityFundFeeReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"FaithfulholdersFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"FaithfulholdersFeeReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"Futurecoinfund","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"FuturecoinfundReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"autoLiquidityReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"burnFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"buyburnFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"clearStuckBalance_sender","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"feeDenominator","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getLiquidityBacking","inputs":[{"type":"uint256","name":"accuracy","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOverLiquified","inputs":[{"type":"uint256","name":"target","internalType":"uint256"},{"type":"uint256","name":"accuracy","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOwner","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"liftoff","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liquidityFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"notliftoff","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"sellMultiplier","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceivers","inputs":[{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"},{"type":"address","name":"_FuturecoinfundReceiver","internalType":"address"},{"type":"address","name":"_CharityFundFeeReceiver","internalType":"address"},{"type":"address","name":"_FaithfulholdersFeeReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_Futurecoinfund","internalType":"uint256"},{"type":"uint256","name":"_CharityFundFee","internalType":"uint256"},{"type":"uint256","name":"_FaithfulholdersFee","internalType":"uint256"},{"type":"uint256","name":"_burnFee","internalType":"uint256"},{"type":"uint256","name":"_buyburnFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapBackSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTargetLiquidity","inputs":[{"type":"uint256","name":"_target","internalType":"uint256"},{"type":"uint256","name":"_denominator","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"set_sell_multiplier","inputs":[{"type":"uint256","name":"Multiplier","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingOpen","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"adr","internalType":"address payable"}]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x608060405273a1077a294dde1b09bb078844df40758a5d0f9a2760015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061036960025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b5f6101000a81548160ff021916908315150217905550600a600c55600a600d55600a600e55600a600f5560056010556005601155601054600d54600f54600c54600e546200012d919062000808565b62000139919062000808565b62000145919062000808565b62000151919062000808565b6012556103e8601355606460145560646019556064601a555f601c60146101000a81548160ff0219169083151502179055506001601c60156101000a81548160ff0219169083151502179055506127106005600754620001b2919062000842565b620001be9190620008b9565b601d55348015620001cd575f80fd5b5060405162004cc638038062004cc68339818101604052810190620001f3919062000adf565b33805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050836004908162000245919062000dba565b50826005908162000257919062000dba565b508160065f6101000a81548160ff021916908360ff160217905550620002988260ff16600a62000288919062000fee565b826200075260201b90919060201c565b6007819055506127106005600754620002b2919062000842565b620002be9190620008b9565b601d8190555073165c3410fc91ef562c50559f7d2289febed552d9601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000383573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a991906200109f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b815260040162000406929190620010e0565b6020604051808303815f875af115801562000423573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200044991906200109f565b601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200074091906200111c565b60405180910390a350505050620011db565b5f80830362000764575f9050620007cc565b5f828462000773919062000842565b9050828482620007849190620008b9565b14620007c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007be90620011bb565b60405180910390fd5b809150505b92915050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200081482620007d2565b91506200082183620007d2565b92508282019050808211156200083c576200083b620007db565b5b92915050565b5f6200084e82620007d2565b91506200085b83620007d2565b92508282026200086b81620007d2565b91508282048414831517620008855762000884620007db565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620008c582620007d2565b9150620008d283620007d2565b925082620008e557620008e46200088c565b5b828204905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620009518262000909565b810181811067ffffffffffffffff8211171562000973576200097262000919565b5b80604052505050565b5f62000987620008f0565b905062000995828262000946565b919050565b5f67ffffffffffffffff821115620009b757620009b662000919565b5b620009c28262000909565b9050602081019050919050565b5f5b83811015620009ee578082015181840152602081019050620009d1565b5f8484015250505050565b5f62000a0f62000a09846200099a565b6200097c565b90508281526020810184848401111562000a2e5762000a2d62000905565b5b62000a3b848285620009cf565b509392505050565b5f82601f83011262000a5a5762000a5962000901565b5b815162000a6c848260208601620009f9565b91505092915050565b5f60ff82169050919050565b62000a8c8162000a75565b811462000a97575f80fd5b50565b5f8151905062000aaa8162000a81565b92915050565b62000abb81620007d2565b811462000ac6575f80fd5b50565b5f8151905062000ad98162000ab0565b92915050565b5f805f806080858703121562000afa5762000af9620008f9565b5b5f85015167ffffffffffffffff81111562000b1a5762000b19620008fd565b5b62000b288782880162000a43565b945050602085015167ffffffffffffffff81111562000b4c5762000b4b620008fd565b5b62000b5a8782880162000a43565b935050604062000b6d8782880162000a9a565b925050606062000b808782880162000ac9565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bdb57607f821691505b60208210810362000bf15762000bf062000b96565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c18565b62000c61868362000c18565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000ca262000c9c62000c9684620007d2565b62000c79565b620007d2565b9050919050565b5f819050919050565b62000cbd8362000c82565b62000cd562000ccc8262000ca9565b84845462000c24565b825550505050565b5f90565b62000ceb62000cdd565b62000cf881848462000cb2565b505050565b5b8181101562000d1f5762000d135f8262000ce1565b60018101905062000cfe565b5050565b601f82111562000d6e5762000d388162000bf7565b62000d438462000c09565b8101602085101562000d53578190505b62000d6b62000d628562000c09565b83018262000cfd565b50505b505050565b5f82821c905092915050565b5f62000d905f198460080262000d73565b1980831691505092915050565b5f62000daa838362000d7f565b9150826002028217905092915050565b62000dc58262000b8c565b67ffffffffffffffff81111562000de15762000de062000919565b5b62000ded825462000bc3565b62000dfa82828562000d23565b5f60209050601f83116001811462000e30575f841562000e1b578287015190505b62000e27858262000d9d565b86555062000e96565b601f19841662000e408662000bf7565b5f5b8281101562000e695784890151825560018201915060208501945060208101905062000e42565b8683101562000e89578489015162000e85601f89168262000d7f565b8355505b6001600288020188555050505b505050505050565b5f8160011c9050919050565b5f808291508390505b600185111562000efb5780860481111562000ed35762000ed2620007db565b5b600185161562000ee35780820291505b808102905062000ef38562000e9e565b945062000eb3565b94509492505050565b5f8262000f15576001905062000fe7565b8162000f24575f905062000fe7565b816001811462000f3d576002811462000f485762000f7e565b600191505062000fe7565b60ff84111562000f5d5762000f5c620007db565b5b8360020a91508482111562000f775762000f76620007db565b5b5062000fe7565b5060208310610133831016604e8410600b841016171562000fb85782820a90508381111562000fb25762000fb1620007db565b5b62000fe7565b62000fc7848484600162000eaa565b9250905081840481111562000fe15762000fe0620007db565b5b81810290505b9392505050565b5f62000ffa82620007d2565b91506200100783620007d2565b9250620010367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f04565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62001069826200103e565b9050919050565b6200107b816200105d565b811462001086575f80fd5b50565b5f81519050620010998162001070565b92915050565b5f60208284031215620010b757620010b6620008f9565b5b5f620010c68482850162001089565b91505092915050565b620010da816200105d565b82525050565b5f604082019050620010f55f830185620010cf565b620011046020830184620010cf565b9392505050565b6200111681620007d2565b82525050565b5f602082019050620011315f8301846200110b565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f620011a360218362001137565b9150620011b08262001147565b604082019050919050565b5f6020820190508181035f830152620011d48162001195565b9050919050565b613add80620011e95f395ff3fe60806040526004361061025f575f3560e01c80637fa7572311610143578063ca33e64c116100b5578063f2fde38b11610079578063f2fde38b146108fc578063f887ea4014610924578063fce589d81461094e578063fe634ad014610978578063fed0d2a1146109a2578063ffb54a99146109cc57610266565b8063ca33e64c1461080a578063d51ed1c814610834578063dd62ed3e14610870578063df20fd49146108ac578063ec72d65f146108d457610266565b806395e79c611161010757806395e79c611461071057806398118cb41461073a578063a5540a7914610764578063a8aa1b311461078e578063a9059cbb146107b8578063c191c926146107f457610266565b80637fa757231461064057806386f6c3c11461066a57806387d3a14d14610692578063893d20e8146106bc57806395d89b41146106e657610266565b80632b112e49116101dc57806344a33fd2116101a057806344a33fd214610524578063571ac8b01461054c578063658d4b7f146105885780636c1e4770146105b05780636ddd1713146105da57806370a082311461060457610266565b80632b112e49146104425780632f54bf6e1461046c578063313ce567146104a85780633c8e556d146104d25780634138da70146104fa57610266565b806318160ddd1161022357806318160ddd146103605780631ba0b1631461038a5780631df4ccfc146103b4578063201e7991146103de57806323b872dd1461040657610266565b80630445b6671461026a57806306fdde0314610294578063095ea7b3146102be5780631161ae39146102fa578063180b0d7e1461033657610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109f6565b60405161028b9190612cfb565b60405180910390f35b34801561029f575f80fd5b506102a86109fc565b6040516102b59190612d9e565b60405180910390f35b3480156102c9575f80fd5b506102e460048036038101906102df9190612e46565b610a8c565b6040516102f19190612e9e565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b9190612eb7565b610b79565b60405161032d9190612e9e565b60405180910390f35b348015610341575f80fd5b5061034a610b8d565b6040516103579190612cfb565b60405180910390f35b34801561036b575f80fd5b50610374610b93565b6040516103819190612cfb565b60405180910390f35b348015610395575f80fd5b5061039e610b9c565b6040516103ab9190612cfb565b60405180910390f35b3480156103bf575f80fd5b506103c8610ba2565b6040516103d59190612cfb565b60405180910390f35b3480156103e9575f80fd5b5061040460048036038101906103ff9190612eb7565b610ba8565b005b348015610411575f80fd5b5061042c60048036038101906104279190612ef5565b610c02565b6040516104399190612e9e565b60405180910390f35b34801561044d575f80fd5b50610456610df5565b6040516104639190612cfb565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d9190612f45565b610e74565b60405161049f9190612e9e565b60405180910390f35b3480156104b3575f80fd5b506104bc610ecb565b6040516104c99190612f8b565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f39190612fa4565b610ee0565b005b348015610505575f80fd5b5061050e61102e565b60405161051b9190613017565b60405180910390f35b34801561052f575f80fd5b5061054a60048036038101906105459190613030565b611053565b005b348015610557575f80fd5b50610572600480360381019061056d9190612f45565b6110fe565b60405161057f9190612e9e565b60405180910390f35b348015610593575f80fd5b506105ae60048036038101906105a99190613085565b611130565b005b3480156105bb575f80fd5b506105c46111d0565b6040516105d19190613017565b60405180910390f35b3480156105e5575f80fd5b506105ee6111f5565b6040516105fb9190612e9e565b60405180910390f35b34801561060f575f80fd5b5061062a60048036038101906106259190612f45565b611208565b6040516106379190612cfb565b60405180910390f35b34801561064b575f80fd5b5061065461124e565b6040516106619190613017565b60405180910390f35b348015610675575f80fd5b50610690600480360381019061068b91906130c3565b611273565b005b34801561069d575f80fd5b506106a661138f565b6040516106b39190612cfb565b60405180910390f35b3480156106c7575f80fd5b506106d0611395565b6040516106dd9190613017565b60405180910390f35b3480156106f1575f80fd5b506106fa6113bc565b6040516107079190612d9e565b60405180910390f35b34801561071b575f80fd5b5061072461144c565b6040516107319190612cfb565b60405180910390f35b348015610745575f80fd5b5061074e611452565b60405161075b9190612cfb565b60405180910390f35b34801561076f575f80fd5b50610778611458565b6040516107859190612cfb565b60405180910390f35b348015610799575f80fd5b506107a261145e565b6040516107af9190613017565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d99190612e46565b611483565b6040516107eb9190612e9e565b60405180910390f35b3480156107ff575f80fd5b50610808611497565b005b348015610815575f80fd5b5061081e611563565b60405161082b9190613017565b60405180910390f35b34801561083f575f80fd5b5061085a60048036038101906108559190613030565b611588565b6040516108679190612cfb565b60405180910390f35b34801561087b575f80fd5b506108966004803603810190610891919061314c565b6115f8565b6040516108a39190612cfb565b60405180910390f35b3480156108b7575f80fd5b506108d260048036038101906108cd919061318a565b61167a565b005b3480156108df575f80fd5b506108fa60048036038101906108f59190613030565b6116e7565b005b348015610907575f80fd5b50610922600480360381019061091d9190613203565b611739565b005b34801561092f575f80fd5b506109386117fa565b6040516109459190613289565b60405180910390f35b348015610959575f80fd5b5061096261181f565b60405161096f9190612cfb565b60405180910390f35b348015610983575f80fd5b5061098c611825565b6040516109999190612e9e565b60405180910390f35b3480156109ad575f80fd5b506109b6611837565b6040516109c39190612cfb565b60405180910390f35b3480156109d7575f80fd5b506109e061183d565b6040516109ed9190612e9e565b60405180910390f35b601d5481565b606060048054610a0b906132cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a37906132cf565b8015610a825780601f10610a5957610100808354040283529160200191610a82565b820191905f5260205f20905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b679190612cfb565b60405180910390a36001905092915050565b5f82610b8483611588565b11905092915050565b60135481565b5f600754905090565b600e5481565b60125481565b610bb133610e74565b610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be790613349565b60405180910390fd5b8160198190555080601a819055505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610de157610d64826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118509092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610dec8484846118b2565b90509392505050565b5f610e6f610e2360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b610e61610e5060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b600754611b9d90919063ffffffff16565b611b9d90919063ffffffff16565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f60065f9054906101000a900460ff16905090565b610ee933610e74565b610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90613349565b60405180910390fd5b8360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61105c33610e74565b61109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290613349565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846110c79190613394565b6110d19190613402565b90811502906040515f60405180830381858888f193505050501580156110f9573d5f803e3d5ffd5b505050565b5f611129827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a8c565b9050919050565b61113933610e74565b611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90613349565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60159054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61127c33610e74565b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290613349565b60405180910390fd5b85600c8190555084600e819055508360108190555082600f819055508160118190555080600d819055505f61130b856112fd888a611be690919063ffffffff16565b611be690919063ffffffff16565b9050611332826113248684611be690919063ffffffff16565b611be690919063ffffffff16565b6012819055506103e8601381905550603760125410611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d9061347c565b60405180910390fd5b50505050505050565b600d5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546113cb906132cf565b80601f01602080910402602001604051908101604052809291908181526020018280546113f7906132cf565b80156114425780601f1061141957610100808354040283529160200191611442565b820191905f5260205f20905b81548152906001019060200180831161142557829003601f168201915b5050505050905090565b60105481565b600c5481565b600f5481565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61148f3384846118b2565b905092915050565b6114a033610e74565b6114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690613349565b60405180910390fd5b600b5f9054906101000a900460ff1661152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906134e4565b60405180910390fd5b6001601c60146101000a81548160ff0219169083151502179055505f600b5f6101000a81548160ff021916908315150217905550565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6115f1611594610df5565b6115e36115d460026115c6601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b611c4390919063ffffffff16565b85611c4390919063ffffffff16565b611cba90919063ffffffff16565b9050919050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61168333610e74565b6116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613349565b60405180910390fd5b81601c60156101000a81548160ff02191690831515021790555080601d819055505050565b6116f033610e74565b61172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690613349565b60405180910390fd5b8060148190555050565b61174233610e74565b611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613349565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516117ef9190613522565b60405180910390a150565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b5f9054906101000a900460ff1681565b60145481565b601c60149054906101000a900460ff1681565b5f838311158290611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9190612d9e565b60405180910390fd5b505f83856118a5919061353b565b9050809150509392505050565b5f601e5f9054906101000a900460ff16156118d9576118d2848484611d03565b9050611b96565b6118e284610e74565b1580156118f557506118f383610e74565b155b1561194a57601c60149054906101000a900460ff16611949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611940906135b8565b60405180910390fd5b5b611952611ecd565b156119605761195f611f9f565b5b6119e7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118509092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611a338585612502565b611a3d5782611a98565b611a978584601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146125ae565b5b9050611aea8160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b889190612cfb565b60405180910390a360019150505b9392505050565b5f611bde83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611850565b905092915050565b5f808284611bf491906135d6565b905083811015611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613653565b60405180910390fd5b8091505092915050565b5f808303611c53575f9050611cb4565b5f8284611c609190613394565b9050828482611c6f9190613402565b14611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca6906136e1565b60405180910390fd5b809150505b92915050565b5f611cfb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128c1565b905092915050565b5f611d8b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118509092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e1c8260085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eba9190612cfb565b60405180910390a3600190509392505050565b5f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f375750601e5f9054906101000a900460ff16155b8015611f4f5750601c60159054906101000a900460ff165b8015611f9a5750601d5460085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601e5f6101000a81548160ff0219169083151502179055505f611fc8601954601a54610b79565b611fd457600c54611fd6565b5f5b90505f6120156002612007601254611ff986601d54611c4390919063ffffffff16565b611cba90919063ffffffff16565b611cba90919063ffffffff16565b90505f61202d82601d54611b9d90919063ffffffff16565b90505f600267ffffffffffffffff81111561204b5761204a6136ff565b5b6040519080825280602002602001820160405280156120795781602001602082028036833780820191505090505b50905030815f815181106120905761208f61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612100576120ff61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016121a0959493929190613849565b5f604051808303815f87803b1580156121b7575f80fd5b505af11580156121c9573d5f803e3d5ffd5b505050505f6121e18247611b9d90919063ffffffff16565b90505f61220c6121fb600289611cba90919063ffffffff16565b601254611b9d90919063ffffffff16565b90505f61224760026122398461222b8c88611c4390919063ffffffff16565b611cba90919063ffffffff16565b611cba90919063ffffffff16565b90505f61227183612263600d5487611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f61229b8461228d600e5488611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f6122c5856122b760105489611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f6122ef866122e1600f548a611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f8411156123035761230284612922565b5b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161234d906138ce565b5f60405180830381858888f193505050503d805f8114612388576040519150601f19603f3d011682016040523d82523d5f602084013e61238d565b606091505b5050905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516123da906138ce565b5f60405180830381858888f193505050503d805f8114612415576040519150601f19603f3d011682016040523d82523d5f602084013e61241a565b606091505b5050809150505f905061242d8c87612bd3565b5f824761243a919061353b565b90505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828561248191906135d6565b61753090604051612491906138ce565b5f60405180830381858888f193505050503d805f81146124cc576040519150601f19603f3d011682016040523d82523d5f602084013e6124d1565b606091505b505090505f90505050505050505050505050505050505f601e5f6101000a81548160ff021916908315150217905550565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561255a575f90506125a8565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590505b92915050565b5f80826125bc5760646125c0565b6014545b90505f61260a60646013546125d59190613394565b6125fc846125ee6012548a611c4390919063ffffffff16565b611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f61263660135461262860115489611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f81111561279a576126b18160085f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127919190612cfb565b60405180910390a35b6127ea8260085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128889190612cfb565b60405180910390a36128b5816128a78489611b9d90919063ffffffff16565b611b9d90919063ffffffff16565b93505050509392505050565b5f8083118290612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fe9190612d9e565b60405180910390fd5b505f83856129159190613402565b9050809150509392505050565b5f7312828d4cda7cbfacd7586e54708a9b9674641bed90505f600267ffffffffffffffff811115612956576129556136ff565b5b6040519080825280602002602001820160405280156129845781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f815181106129bc576129bb61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110612a0b57612a0a61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95845f8430426040518663ffffffff1660e01b8152600401612aa694939291906138e2565b5f604051808303818588803b158015612abd575f80fd5b505af1158015612acf573d5f803e3d5ffd5b50505050505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b0e9190613017565b602060405180830381865afa158015612b29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4d9190613940565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610369836040518363ffffffff1660e01b8152600401612b8c92919061396b565b6020604051808303815f875af1158015612ba8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bcc91906139a6565b5050505050565b5f821115612cdf57601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612c61969594939291906139d1565b60606040518083038185885af1158015612c7d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612ca29190613a30565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051612cd6929190613a80565b60405180910390a15b5050565b5f819050919050565b612cf581612ce3565b82525050565b5f602082019050612d0e5f830184612cec565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d4b578082015181840152602081019050612d30565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d7082612d14565b612d7a8185612d1e565b9350612d8a818560208601612d2e565b612d9381612d56565b840191505092915050565b5f6020820190508181035f830152612db68184612d66565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612deb82612dc2565b9050919050565b612dfb81612de1565b8114612e05575f80fd5b50565b5f81359050612e1681612df2565b92915050565b612e2581612ce3565b8114612e2f575f80fd5b50565b5f81359050612e4081612e1c565b92915050565b5f8060408385031215612e5c57612e5b612dbe565b5b5f612e6985828601612e08565b9250506020612e7a85828601612e32565b9150509250929050565b5f8115159050919050565b612e9881612e84565b82525050565b5f602082019050612eb15f830184612e8f565b92915050565b5f8060408385031215612ecd57612ecc612dbe565b5b5f612eda85828601612e32565b9250506020612eeb85828601612e32565b9150509250929050565b5f805f60608486031215612f0c57612f0b612dbe565b5b5f612f1986828701612e08565b9350506020612f2a86828701612e08565b9250506040612f3b86828701612e32565b9150509250925092565b5f60208284031215612f5a57612f59612dbe565b5b5f612f6784828501612e08565b91505092915050565b5f60ff82169050919050565b612f8581612f70565b82525050565b5f602082019050612f9e5f830184612f7c565b92915050565b5f805f8060808587031215612fbc57612fbb612dbe565b5b5f612fc987828801612e08565b9450506020612fda87828801612e08565b9350506040612feb87828801612e08565b9250506060612ffc87828801612e08565b91505092959194509250565b61301181612de1565b82525050565b5f60208201905061302a5f830184613008565b92915050565b5f6020828403121561304557613044612dbe565b5b5f61305284828501612e32565b91505092915050565b61306481612e84565b811461306e575f80fd5b50565b5f8135905061307f8161305b565b92915050565b5f806040838503121561309b5761309a612dbe565b5b5f6130a885828601612e08565b92505060206130b985828601613071565b9150509250929050565b5f805f805f8060c087890312156130dd576130dc612dbe565b5b5f6130ea89828a01612e32565b96505060206130fb89828a01612e32565b955050604061310c89828a01612e32565b945050606061311d89828a01612e32565b935050608061312e89828a01612e32565b92505060a061313f89828a01612e32565b9150509295509295509295565b5f806040838503121561316257613161612dbe565b5b5f61316f85828601612e08565b925050602061318085828601612e08565b9150509250929050565b5f80604083850312156131a05761319f612dbe565b5b5f6131ad85828601613071565b92505060206131be85828601612e32565b9150509250929050565b5f6131d282612dc2565b9050919050565b6131e2816131c8565b81146131ec575f80fd5b50565b5f813590506131fd816131d9565b92915050565b5f6020828403121561321857613217612dbe565b5b5f613225848285016131ef565b91505092915050565b5f819050919050565b5f61325161324c61324784612dc2565b61322e565b612dc2565b9050919050565b5f61326282613237565b9050919050565b5f61327382613258565b9050919050565b61328381613269565b82525050565b5f60208201905061329c5f83018461327a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132e657607f821691505b6020821081036132f9576132f86132a2565b5b50919050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613333600683612d1e565b915061333e826132ff565b602082019050919050565b5f6020820190508181035f83015261336081613327565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61339e82612ce3565b91506133a983612ce3565b92508282026133b781612ce3565b915082820484148315176133ce576133cd613367565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61340c82612ce3565b915061341783612ce3565b925082613427576134266133d5565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e20352500000000005f82015250565b5f613466601b83612d1e565b915061347182613432565b602082019050919050565b5f6020820190508181035f8301526134938161345a565b9050919050565b7f4d6f6f6e206d697373696f6e20616c7265616479206120676f000000000000005f82015250565b5f6134ce601983612d1e565b91506134d98261349a565b602082019050919050565b5f6020820190508181035f8301526134fb816134c2565b9050919050565b5f61350c82613258565b9050919050565b61351c81613502565b82525050565b5f6020820190506135355f830184613513565b92915050565b5f61354582612ce3565b915061355083612ce3565b925082820390508181111561356857613567613367565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6135a2601483612d1e565b91506135ad8261356e565b602082019050919050565b5f6020820190508181035f8301526135cf81613596565b9050919050565b5f6135e082612ce3565b91506135eb83612ce3565b925082820190508082111561360357613602613367565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61363d601b83612d1e565b915061364882613609565b602082019050919050565b5f6020820190508181035f83015261366a81613631565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136cb602183612d1e565b91506136d682613671565b604082019050919050565b5f6020820190508181035f8301526136f8816136bf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61377c61377761377284613759565b61322e565b612ce3565b9050919050565b61378c81613762565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137c481612de1565b82525050565b5f6137d583836137bb565b60208301905092915050565b5f602082019050919050565b5f6137f782613792565b613801818561379c565b935061380c836137ac565b805f5b8381101561383c57815161382388826137ca565b975061382e836137e1565b92505060018101905061380f565b5085935050505092915050565b5f60a08201905061385c5f830188612cec565b6138696020830187613783565b818103604083015261387b81866137ed565b905061388a6060830185613008565b6138976080830184612cec565b9695505050505050565b5f81905092915050565b50565b5f6138b95f836138a1565b91506138c4826138ab565b5f82019050919050565b5f6138d8826138ae565b9150819050919050565b5f6080820190506138f55f830187613783565b818103602083015261390781866137ed565b90506139166040830185613008565b6139236060830184612cec565b95945050505050565b5f8151905061393a81612e1c565b92915050565b5f6020828403121561395557613954612dbe565b5b5f6139628482850161392c565b91505092915050565b5f60408201905061397e5f830185613008565b61398b6020830184612cec565b9392505050565b5f815190506139a08161305b565b92915050565b5f602082840312156139bb576139ba612dbe565b5b5f6139c884828501613992565b91505092915050565b5f60c0820190506139e45f830189613008565b6139f16020830188612cec565b6139fe6040830187613783565b613a0b6060830186613783565b613a186080830185613008565b613a2560a0830184612cec565b979650505050505050565b5f805f60608486031215613a4757613a46612dbe565b5b5f613a548682870161392c565b9350506020613a658682870161392c565b9250506040613a768682870161392c565b9150509250925092565b5f604082019050613a935f830185612cec565b613aa06020830184612cec565b939250505056fea2646970667358221220224c747e14f00ea099266201f24767ecaaebb9dbf3239ca5ed9fc67f1073f33b64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000001dcd650000000000000000000000000000000000000000000000000000000000000000084e6f6168436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e4f414800000000000000000000000000000000000000000000000000000000
Deployed ByteCode
0x60806040526004361061025f575f3560e01c80637fa7572311610143578063ca33e64c116100b5578063f2fde38b11610079578063f2fde38b146108fc578063f887ea4014610924578063fce589d81461094e578063fe634ad014610978578063fed0d2a1146109a2578063ffb54a99146109cc57610266565b8063ca33e64c1461080a578063d51ed1c814610834578063dd62ed3e14610870578063df20fd49146108ac578063ec72d65f146108d457610266565b806395e79c611161010757806395e79c611461071057806398118cb41461073a578063a5540a7914610764578063a8aa1b311461078e578063a9059cbb146107b8578063c191c926146107f457610266565b80637fa757231461064057806386f6c3c11461066a57806387d3a14d14610692578063893d20e8146106bc57806395d89b41146106e657610266565b80632b112e49116101dc57806344a33fd2116101a057806344a33fd214610524578063571ac8b01461054c578063658d4b7f146105885780636c1e4770146105b05780636ddd1713146105da57806370a082311461060457610266565b80632b112e49146104425780632f54bf6e1461046c578063313ce567146104a85780633c8e556d146104d25780634138da70146104fa57610266565b806318160ddd1161022357806318160ddd146103605780631ba0b1631461038a5780631df4ccfc146103b4578063201e7991146103de57806323b872dd1461040657610266565b80630445b6671461026a57806306fdde0314610294578063095ea7b3146102be5780631161ae39146102fa578063180b0d7e1461033657610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109f6565b60405161028b9190612cfb565b60405180910390f35b34801561029f575f80fd5b506102a86109fc565b6040516102b59190612d9e565b60405180910390f35b3480156102c9575f80fd5b506102e460048036038101906102df9190612e46565b610a8c565b6040516102f19190612e9e565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b9190612eb7565b610b79565b60405161032d9190612e9e565b60405180910390f35b348015610341575f80fd5b5061034a610b8d565b6040516103579190612cfb565b60405180910390f35b34801561036b575f80fd5b50610374610b93565b6040516103819190612cfb565b60405180910390f35b348015610395575f80fd5b5061039e610b9c565b6040516103ab9190612cfb565b60405180910390f35b3480156103bf575f80fd5b506103c8610ba2565b6040516103d59190612cfb565b60405180910390f35b3480156103e9575f80fd5b5061040460048036038101906103ff9190612eb7565b610ba8565b005b348015610411575f80fd5b5061042c60048036038101906104279190612ef5565b610c02565b6040516104399190612e9e565b60405180910390f35b34801561044d575f80fd5b50610456610df5565b6040516104639190612cfb565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d9190612f45565b610e74565b60405161049f9190612e9e565b60405180910390f35b3480156104b3575f80fd5b506104bc610ecb565b6040516104c99190612f8b565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f39190612fa4565b610ee0565b005b348015610505575f80fd5b5061050e61102e565b60405161051b9190613017565b60405180910390f35b34801561052f575f80fd5b5061054a60048036038101906105459190613030565b611053565b005b348015610557575f80fd5b50610572600480360381019061056d9190612f45565b6110fe565b60405161057f9190612e9e565b60405180910390f35b348015610593575f80fd5b506105ae60048036038101906105a99190613085565b611130565b005b3480156105bb575f80fd5b506105c46111d0565b6040516105d19190613017565b60405180910390f35b3480156105e5575f80fd5b506105ee6111f5565b6040516105fb9190612e9e565b60405180910390f35b34801561060f575f80fd5b5061062a60048036038101906106259190612f45565b611208565b6040516106379190612cfb565b60405180910390f35b34801561064b575f80fd5b5061065461124e565b6040516106619190613017565b60405180910390f35b348015610675575f80fd5b50610690600480360381019061068b91906130c3565b611273565b005b34801561069d575f80fd5b506106a661138f565b6040516106b39190612cfb565b60405180910390f35b3480156106c7575f80fd5b506106d0611395565b6040516106dd9190613017565b60405180910390f35b3480156106f1575f80fd5b506106fa6113bc565b6040516107079190612d9e565b60405180910390f35b34801561071b575f80fd5b5061072461144c565b6040516107319190612cfb565b60405180910390f35b348015610745575f80fd5b5061074e611452565b60405161075b9190612cfb565b60405180910390f35b34801561076f575f80fd5b50610778611458565b6040516107859190612cfb565b60405180910390f35b348015610799575f80fd5b506107a261145e565b6040516107af9190613017565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d99190612e46565b611483565b6040516107eb9190612e9e565b60405180910390f35b3480156107ff575f80fd5b50610808611497565b005b348015610815575f80fd5b5061081e611563565b60405161082b9190613017565b60405180910390f35b34801561083f575f80fd5b5061085a60048036038101906108559190613030565b611588565b6040516108679190612cfb565b60405180910390f35b34801561087b575f80fd5b506108966004803603810190610891919061314c565b6115f8565b6040516108a39190612cfb565b60405180910390f35b3480156108b7575f80fd5b506108d260048036038101906108cd919061318a565b61167a565b005b3480156108df575f80fd5b506108fa60048036038101906108f59190613030565b6116e7565b005b348015610907575f80fd5b50610922600480360381019061091d9190613203565b611739565b005b34801561092f575f80fd5b506109386117fa565b6040516109459190613289565b60405180910390f35b348015610959575f80fd5b5061096261181f565b60405161096f9190612cfb565b60405180910390f35b348015610983575f80fd5b5061098c611825565b6040516109999190612e9e565b60405180910390f35b3480156109ad575f80fd5b506109b6611837565b6040516109c39190612cfb565b60405180910390f35b3480156109d7575f80fd5b506109e061183d565b6040516109ed9190612e9e565b60405180910390f35b601d5481565b606060048054610a0b906132cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a37906132cf565b8015610a825780601f10610a5957610100808354040283529160200191610a82565b820191905f5260205f20905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b679190612cfb565b60405180910390a36001905092915050565b5f82610b8483611588565b11905092915050565b60135481565b5f600754905090565b600e5481565b60125481565b610bb133610e74565b610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be790613349565b60405180910390fd5b8160198190555080601a819055505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610de157610d64826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118509092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610dec8484846118b2565b90509392505050565b5f610e6f610e2360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b610e61610e5060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b600754611b9d90919063ffffffff16565b611b9d90919063ffffffff16565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f60065f9054906101000a900460ff16905090565b610ee933610e74565b610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90613349565b60405180910390fd5b8360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61105c33610e74565b61109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290613349565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846110c79190613394565b6110d19190613402565b90811502906040515f60405180830381858888f193505050501580156110f9573d5f803e3d5ffd5b505050565b5f611129827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a8c565b9050919050565b61113933610e74565b611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90613349565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60159054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61127c33610e74565b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290613349565b60405180910390fd5b85600c8190555084600e819055508360108190555082600f819055508160118190555080600d819055505f61130b856112fd888a611be690919063ffffffff16565b611be690919063ffffffff16565b9050611332826113248684611be690919063ffffffff16565b611be690919063ffffffff16565b6012819055506103e8601381905550603760125410611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d9061347c565b60405180910390fd5b50505050505050565b600d5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546113cb906132cf565b80601f01602080910402602001604051908101604052809291908181526020018280546113f7906132cf565b80156114425780601f1061141957610100808354040283529160200191611442565b820191905f5260205f20905b81548152906001019060200180831161142557829003601f168201915b5050505050905090565b60105481565b600c5481565b600f5481565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61148f3384846118b2565b905092915050565b6114a033610e74565b6114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690613349565b60405180910390fd5b600b5f9054906101000a900460ff1661152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906134e4565b60405180910390fd5b6001601c60146101000a81548160ff0219169083151502179055505f600b5f6101000a81548160ff021916908315150217905550565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6115f1611594610df5565b6115e36115d460026115c6601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b611c4390919063ffffffff16565b85611c4390919063ffffffff16565b611cba90919063ffffffff16565b9050919050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61168333610e74565b6116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613349565b60405180910390fd5b81601c60156101000a81548160ff02191690831515021790555080601d819055505050565b6116f033610e74565b61172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690613349565b60405180910390fd5b8060148190555050565b61174233610e74565b611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613349565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516117ef9190613522565b60405180910390a150565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b5f9054906101000a900460ff1681565b60145481565b601c60149054906101000a900460ff1681565b5f838311158290611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9190612d9e565b60405180910390fd5b505f83856118a5919061353b565b9050809150509392505050565b5f601e5f9054906101000a900460ff16156118d9576118d2848484611d03565b9050611b96565b6118e284610e74565b1580156118f557506118f383610e74565b155b1561194a57601c60149054906101000a900460ff16611949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611940906135b8565b60405180910390fd5b5b611952611ecd565b156119605761195f611f9f565b5b6119e7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118509092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611a338585612502565b611a3d5782611a98565b611a978584601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146125ae565b5b9050611aea8160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b889190612cfb565b60405180910390a360019150505b9392505050565b5f611bde83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611850565b905092915050565b5f808284611bf491906135d6565b905083811015611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613653565b60405180910390fd5b8091505092915050565b5f808303611c53575f9050611cb4565b5f8284611c609190613394565b9050828482611c6f9190613402565b14611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca6906136e1565b60405180910390fd5b809150505b92915050565b5f611cfb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128c1565b905092915050565b5f611d8b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118509092919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e1c8260085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eba9190612cfb565b60405180910390a3600190509392505050565b5f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f375750601e5f9054906101000a900460ff16155b8015611f4f5750601c60159054906101000a900460ff165b8015611f9a5750601d5460085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601e5f6101000a81548160ff0219169083151502179055505f611fc8601954601a54610b79565b611fd457600c54611fd6565b5f5b90505f6120156002612007601254611ff986601d54611c4390919063ffffffff16565b611cba90919063ffffffff16565b611cba90919063ffffffff16565b90505f61202d82601d54611b9d90919063ffffffff16565b90505f600267ffffffffffffffff81111561204b5761204a6136ff565b5b6040519080825280602002602001820160405280156120795781602001602082028036833780820191505090505b50905030815f815181106120905761208f61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612100576120ff61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016121a0959493929190613849565b5f604051808303815f87803b1580156121b7575f80fd5b505af11580156121c9573d5f803e3d5ffd5b505050505f6121e18247611b9d90919063ffffffff16565b90505f61220c6121fb600289611cba90919063ffffffff16565b601254611b9d90919063ffffffff16565b90505f61224760026122398461222b8c88611c4390919063ffffffff16565b611cba90919063ffffffff16565b611cba90919063ffffffff16565b90505f61227183612263600d5487611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f61229b8461228d600e5488611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f6122c5856122b760105489611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f6122ef866122e1600f548a611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f8411156123035761230284612922565b5b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161234d906138ce565b5f60405180830381858888f193505050503d805f8114612388576040519150601f19603f3d011682016040523d82523d5f602084013e61238d565b606091505b5050905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516123da906138ce565b5f60405180830381858888f193505050503d805f8114612415576040519150601f19603f3d011682016040523d82523d5f602084013e61241a565b606091505b5050809150505f905061242d8c87612bd3565b5f824761243a919061353b565b90505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828561248191906135d6565b61753090604051612491906138ce565b5f60405180830381858888f193505050503d805f81146124cc576040519150601f19603f3d011682016040523d82523d5f602084013e6124d1565b606091505b505090505f90505050505050505050505050505050505f601e5f6101000a81548160ff021916908315150217905550565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561255a575f90506125a8565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590505b92915050565b5f80826125bc5760646125c0565b6014545b90505f61260a60646013546125d59190613394565b6125fc846125ee6012548a611c4390919063ffffffff16565b611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f61263660135461262860115489611c4390919063ffffffff16565b611cba90919063ffffffff16565b90505f81111561279a576126b18160085f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127919190612cfb565b60405180910390a35b6127ea8260085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be690919063ffffffff16565b60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128889190612cfb565b60405180910390a36128b5816128a78489611b9d90919063ffffffff16565b611b9d90919063ffffffff16565b93505050509392505050565b5f8083118290612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fe9190612d9e565b60405180910390fd5b505f83856129159190613402565b9050809150509392505050565b5f7312828d4cda7cbfacd7586e54708a9b9674641bed90505f600267ffffffffffffffff811115612956576129556136ff565b5b6040519080825280602002602001820160405280156129845781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f815181106129bc576129bb61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110612a0b57612a0a61372c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95845f8430426040518663ffffffff1660e01b8152600401612aa694939291906138e2565b5f604051808303818588803b158015612abd575f80fd5b505af1158015612acf573d5f803e3d5ffd5b50505050505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b0e9190613017565b602060405180830381865afa158015612b29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4d9190613940565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610369836040518363ffffffff1660e01b8152600401612b8c92919061396b565b6020604051808303815f875af1158015612ba8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bcc91906139a6565b5050505050565b5f821115612cdf57601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612c61969594939291906139d1565b60606040518083038185885af1158015612c7d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612ca29190613a30565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068183604051612cd6929190613a80565b60405180910390a15b5050565b5f819050919050565b612cf581612ce3565b82525050565b5f602082019050612d0e5f830184612cec565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d4b578082015181840152602081019050612d30565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d7082612d14565b612d7a8185612d1e565b9350612d8a818560208601612d2e565b612d9381612d56565b840191505092915050565b5f6020820190508181035f830152612db68184612d66565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612deb82612dc2565b9050919050565b612dfb81612de1565b8114612e05575f80fd5b50565b5f81359050612e1681612df2565b92915050565b612e2581612ce3565b8114612e2f575f80fd5b50565b5f81359050612e4081612e1c565b92915050565b5f8060408385031215612e5c57612e5b612dbe565b5b5f612e6985828601612e08565b9250506020612e7a85828601612e32565b9150509250929050565b5f8115159050919050565b612e9881612e84565b82525050565b5f602082019050612eb15f830184612e8f565b92915050565b5f8060408385031215612ecd57612ecc612dbe565b5b5f612eda85828601612e32565b9250506020612eeb85828601612e32565b9150509250929050565b5f805f60608486031215612f0c57612f0b612dbe565b5b5f612f1986828701612e08565b9350506020612f2a86828701612e08565b9250506040612f3b86828701612e32565b9150509250925092565b5f60208284031215612f5a57612f59612dbe565b5b5f612f6784828501612e08565b91505092915050565b5f60ff82169050919050565b612f8581612f70565b82525050565b5f602082019050612f9e5f830184612f7c565b92915050565b5f805f8060808587031215612fbc57612fbb612dbe565b5b5f612fc987828801612e08565b9450506020612fda87828801612e08565b9350506040612feb87828801612e08565b9250506060612ffc87828801612e08565b91505092959194509250565b61301181612de1565b82525050565b5f60208201905061302a5f830184613008565b92915050565b5f6020828403121561304557613044612dbe565b5b5f61305284828501612e32565b91505092915050565b61306481612e84565b811461306e575f80fd5b50565b5f8135905061307f8161305b565b92915050565b5f806040838503121561309b5761309a612dbe565b5b5f6130a885828601612e08565b92505060206130b985828601613071565b9150509250929050565b5f805f805f8060c087890312156130dd576130dc612dbe565b5b5f6130ea89828a01612e32565b96505060206130fb89828a01612e32565b955050604061310c89828a01612e32565b945050606061311d89828a01612e32565b935050608061312e89828a01612e32565b92505060a061313f89828a01612e32565b9150509295509295509295565b5f806040838503121561316257613161612dbe565b5b5f61316f85828601612e08565b925050602061318085828601612e08565b9150509250929050565b5f80604083850312156131a05761319f612dbe565b5b5f6131ad85828601613071565b92505060206131be85828601612e32565b9150509250929050565b5f6131d282612dc2565b9050919050565b6131e2816131c8565b81146131ec575f80fd5b50565b5f813590506131fd816131d9565b92915050565b5f6020828403121561321857613217612dbe565b5b5f613225848285016131ef565b91505092915050565b5f819050919050565b5f61325161324c61324784612dc2565b61322e565b612dc2565b9050919050565b5f61326282613237565b9050919050565b5f61327382613258565b9050919050565b61328381613269565b82525050565b5f60208201905061329c5f83018461327a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132e657607f821691505b6020821081036132f9576132f86132a2565b5b50919050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613333600683612d1e565b915061333e826132ff565b602082019050919050565b5f6020820190508181035f83015261336081613327565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61339e82612ce3565b91506133a983612ce3565b92508282026133b781612ce3565b915082820484148315176133ce576133cd613367565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61340c82612ce3565b915061341783612ce3565b925082613427576134266133d5565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e20352500000000005f82015250565b5f613466601b83612d1e565b915061347182613432565b602082019050919050565b5f6020820190508181035f8301526134938161345a565b9050919050565b7f4d6f6f6e206d697373696f6e20616c7265616479206120676f000000000000005f82015250565b5f6134ce601983612d1e565b91506134d98261349a565b602082019050919050565b5f6020820190508181035f8301526134fb816134c2565b9050919050565b5f61350c82613258565b9050919050565b61351c81613502565b82525050565b5f6020820190506135355f830184613513565b92915050565b5f61354582612ce3565b915061355083612ce3565b925082820390508181111561356857613567613367565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6135a2601483612d1e565b91506135ad8261356e565b602082019050919050565b5f6020820190508181035f8301526135cf81613596565b9050919050565b5f6135e082612ce3565b91506135eb83612ce3565b925082820190508082111561360357613602613367565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61363d601b83612d1e565b915061364882613609565b602082019050919050565b5f6020820190508181035f83015261366a81613631565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136cb602183612d1e565b91506136d682613671565b604082019050919050565b5f6020820190508181035f8301526136f8816136bf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61377c61377761377284613759565b61322e565b612ce3565b9050919050565b61378c81613762565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137c481612de1565b82525050565b5f6137d583836137bb565b60208301905092915050565b5f602082019050919050565b5f6137f782613792565b613801818561379c565b935061380c836137ac565b805f5b8381101561383c57815161382388826137ca565b975061382e836137e1565b92505060018101905061380f565b5085935050505092915050565b5f60a08201905061385c5f830188612cec565b6138696020830187613783565b818103604083015261387b81866137ed565b905061388a6060830185613008565b6138976080830184612cec565b9695505050505050565b5f81905092915050565b50565b5f6138b95f836138a1565b91506138c4826138ab565b5f82019050919050565b5f6138d8826138ae565b9150819050919050565b5f6080820190506138f55f830187613783565b818103602083015261390781866137ed565b90506139166040830185613008565b6139236060830184612cec565b95945050505050565b5f8151905061393a81612e1c565b92915050565b5f6020828403121561395557613954612dbe565b5b5f6139628482850161392c565b91505092915050565b5f60408201905061397e5f830185613008565b61398b6020830184612cec565b9392505050565b5f815190506139a08161305b565b92915050565b5f602082840312156139bb576139ba612dbe565b5b5f6139c884828501613992565b91505092915050565b5f60c0820190506139e45f830189613008565b6139f16020830188612cec565b6139fe6040830187613783565b613a0b6060830186613783565b613a186080830185613008565b613a2560a0830184612cec565b979650505050505050565b5f805f60608486031215613a4757613a46612dbe565b5b5f613a548682870161392c565b9350506020613a658682870161392c565b9250506040613a768682870161392c565b9150509250925092565b5f604082019050613a935f830185612cec565b613aa06020830184612cec565b939250505056fea2646970667358221220224c747e14f00ea099266201f24767ecaaebb9dbf3239ca5ed9fc67f1073f33b64736f6c63430008140033