ERC-20
Overview
Max Total Supply
16,000,000 Alfa
Holders
46
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
827,402.692772224034591882 AlfaValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
AlfaCoin
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "./Ownable.sol"; import "./Stakeable.sol"; /** * @notice AlfaCoin is a development token that we use to learn how to code solidity * and what BEP-20 interface requires */ contract AlfaCoin is Ownable, Stakeable { /** * @notice Our Tokens required variables that are needed to operate everything */ uint256 private _totalSupply; uint8 private _decimals; string private _symbol; string private _name; /** * @notice _balances is a mapping that contains a address as KEY * and the balance of the address as the value */ mapping(address => uint256) private _balances; /** * @notice _allowances is used to manage and control allownace * An allowance is the right to use another accounts balance, or part of it */ mapping(address => mapping(address => uint256)) private _allowances; /** * @notice Events are created below. * Transfer event is a event that notify the blockchain that a transfer of assets has taken place * */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @notice Approval is emitted when a new Spender is approved to spend Tokens on * the Owners account */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @notice constructor will be triggered when we create the Smart contract * _name = name of the token * _short_symbol = Short Symbol name for the token * token_decimals = The decimal precision of the Token, defaults 18 * _totalSupply is how much Tokens there are totally */ constructor( string memory token_name, string memory short_symbol, uint8 token_decimals, uint256 token_totalSupply ) { _name = token_name; _symbol = short_symbol; _decimals = token_decimals; _totalSupply = token_totalSupply; // Add all the tokens created to the creator of the token _balances[msg.sender] = _totalSupply; // Emit an Transfer event to notify the blockchain that an Transfer has occured emit Transfer(address(0), msg.sender, _totalSupply); } /** * @notice decimals will return the number of decimal precision the Token is deployed with */ function decimals() external view returns (uint8) { return _decimals; } /** * @notice symbol will return the Token's symbol */ function symbol() external view returns (string memory) { return _symbol; } /** * @notice name will return the Token's symbol */ function name() external view returns (string memory) { return _name; } /** * @notice totalSupply will return the tokens total supply of tokens */ function totalSupply() external view returns (uint256) { return _totalSupply; } /** * @notice balanceOf will return the account balance for the given account */ function balanceOf(address account) external view returns (uint256) { return _balances[account]; } /** * @notice _mint will create tokens on the address inputted and then increase the total supply * * It will also emit an Transfer event, with sender set to zero address (adress(0)) * * Requires that the address that is recieveing the tokens is not zero address */ function _mint(address account, uint256 amount) internal { require(account != address(0), "AlfaCoin: cannot mint to zero address"); // Increase total supply _totalSupply = _totalSupply + (amount); // Add amount to the account balance using the balance mapping _balances[account] = _balances[account] + amount; // Emit our event to log the action emit Transfer(address(0), account, amount); } /** * @notice _burn will destroy tokens from an address inputted and then decrease total supply * An Transfer event will emit with receiever set to zero address * * Requires * - Account cannot be zero * - Account balance has to be bigger or equal to amount */ function _burn(address account, uint256 amount) internal { require( account != address(0), "AlfaCoin: cannot burn from zero address" ); require( _balances[account] >= amount, "AlfaCoin: Cannot burn more than the account owns" ); // Remove the amount from the account balance _balances[account] = _balances[account] - amount; // Decrease totalSupply _totalSupply = _totalSupply - amount; // Emit event, use zero address as reciever emit Transfer(account, address(0), amount); } /** * @notice burn is used to destroy tokens on an address * * See {_burn} * Requires * - msg.sender must be the token owner * */ function burn(address account, uint256 amount) public onlyOwner returns (bool) { _burn(account, amount); return true; } /** * @notice mint is used to create tokens and assign them to msg.sender * * See {_mint} * Requires * - msg.sender must be the token owner * */ function mint(address account, uint256 amount) public onlyOwner returns (bool) { _mint(account, amount); return true; } /** * @notice transfer is used to transfer funds from the sender to the recipient * This function is only callable from outside the contract. For internal usage see * _transfer * * Requires * - Caller cannot be zero * - Caller must have a balance = or bigger than amount * */ function transfer(address recipient, uint256 amount) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @notice _transfer is used for internal transfers * * Events * - Transfer * * Requires * - Sender cannot be zero * - recipient cannot be zero * - sender balance most be = or bigger than amount */ function _transfer( address sender, address recipient, uint256 amount ) internal { require(sender != address(0), "AlfaCoin: transfer from zero address"); require(recipient != address(0), "AlfaCoin: transfer to zero address"); require( _balances[sender] >= amount, "AlfaCoin: cant transfer more than your account holds" ); _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); } /** * @notice getOwner just calls Ownables owner function. * returns owner of the token * */ function getOwner() external view returns (address) { return owner(); } /** * @notice allowance is used view how much allowance an spender has */ function allowance(address owner, address spender) external view returns (uint256) { return _allowances[owner][spender]; } /** * @notice approve will use the senders address and allow the spender to use X amount of tokens on his behalf */ function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } /** * @notice _approve is used to add a new Spender to a Owners account * * Events * - {Approval} * * Requires * - owner and spender cannot be zero address */ function _approve( address owner, address spender, uint256 amount ) internal { require( owner != address(0), "AlfaCoin: approve cannot be done from zero address" ); require( spender != address(0), "AlfaCoin: approve cannot be to zero address" ); // Set the allowance of the spender address at the Owner mapping over accounts to the amount _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @notice transferFrom is uesd to transfer Tokens from a Accounts allowance * Spender address should be the token holder * * Requires * - The caller must have a allowance = or bigger than the amount spending */ function transferFrom( address spender, address recipient, uint256 amount ) external returns (bool) { // Make sure spender is allowed the amount require( _allowances[spender][msg.sender] >= amount, "AlfaCoin: You cannot spend that much on this account" ); // Transfer first _transfer(spender, recipient, amount); // Reduce current allowance so a user cannot respend _approve( spender, msg.sender, _allowances[spender][msg.sender] - amount ); return true; } /** * @notice increaseAllowance * Adds allowance to a account from the function caller address */ function increaseAllowance(address spender, uint256 amount) public returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender] + amount ); return true; } /** * @notice decreaseAllowance * Decrease the allowance on the account inputted from the caller address */ function decreaseAllowance(address spender, uint256 amount) public returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender] - amount ); return true; } /** * Add functionality like burn to the _stake afunction * */ function stake(uint256 _amount) public { // Make sure staker actually is good for it require(_totalSupply < 108000000000000000000000000, "AlfaCoin: Cannot stake more"); require( _amount <= _balances[msg.sender], "AlfaCoin: Cannot stake more than you own" ); _stake(_amount); // Burn the amount of tokens on the sender _burn(msg.sender, _amount); } /** * @notice withdrawStake is used to withdraw stakes from the account holder */ function withdrawStake(uint256 amount, uint256 stake_index) public { uint256 amount_to_mint = _withdrawStake(amount, stake_index); // Return staked tokens to user _mint(msg.sender, amount_to_mint); } function withdrawAll()public { uint256 amount_to_mint = _withdrawAll(); // Return staked tokens to user _mint(msg.sender, amount_to_mint); } function viewRewardPerHour() external view returns (uint256) { return _getRewardValue(); } function setRewardPerHour(uint256 amount) public onlyOwner returns (bool) { _setRewardValue(amount); return true; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @notice Contract is a inheritable smart contract that will add a * New modifier called onlyOwner available in the smart contract inherting it * * onlyOwner makes a function only callable from the Token owner * */ contract Ownable { // _owner is the owner of the Token address private _owner; /** * Event OwnershipTransferred is used to log that a ownership change of the token has occured */ event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * Modifier * We create our own function modifier called onlyOwner, it will Require the current owner to be * the same as msg.sender */ modifier onlyOwner() { require(_owner == msg.sender, "Ownable: only owner can call this function"); // This _; is not a TYPO, It is important for the compiler; _; } constructor() { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @notice owner() returns the currently assigned owner of the Token * */ function owner() public view returns(address) { return _owner; } /** * @notice renounceOwnership will set the owner to zero address * This will make the contract owner less, It will make ALL functions with * onlyOwner no longer callable. * There is no way of restoring the owner */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @notice transferOwnership will assign the {newOwner} as owner * */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @notice _transferOwnership will assign the {newOwner} as owner * */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @notice Stakeable is a contract who is ment to be inherited by other contract that wants Staking capabilities */ contract Stakeable { /** * @notice Constructor since this contract is not ment to be used without inheritance * push once to stakeholders for it to work proplerly */ constructor() { // This push is needed so we avoid index 0 causing bug of index-1 stakeholders.push(); //Se calcula el _rewardPerHour por (100*8760)/x //Donde 100 son los tokens, 8760 es un año en horas y x es el APR deseado _rewardPerHour = 109500; } uint256 private _rewardPerHour; /** * @notice * A stake struct is used to represent the way we store stakes, * A Stake will contain the users address, the amount staked and a timestamp, * Since which is when the stake was made */ struct Stake { address user; uint256 amount; uint256 since; // This claimable field is new and used to tell how big of a reward is currently available uint256 claimable; } /** * @notice Stakeholder is a staker that has active stakes */ struct Stakeholder { address user; Stake[] address_stakes; } /** * @notice * StakingSummary is a struct that is used to contain all stakes performed by a certain account */ struct StakingSummary { uint256 total_amount; Stake[] stakes; } /** * @notice * This is a array where we store all Stakes that are performed on the Contract * The stakes for each address are stored at a certain index, the index can be found using the stakes mapping */ Stakeholder[] internal stakeholders; /** * @notice * stakes is used to keep track of the INDEX for the stakers in the stakes array */ mapping(address => uint256) internal stakes; /** * @notice Staked event is triggered whenever a user stakes tokens, address is indexed to make it filterable */ event Staked( address indexed user, uint256 amount, uint256 index, uint256 timestamp ); /** * @notice _rewardPerHour is 1000 because it is used to represent 0.001, since we only use integer numbers This will give users 0.1% reward for each staked token / H */ /** * @notice _addStakeholder takes care of adding a stakeholder to the stakeholders array */ function _addStakeholder(address staker) internal returns (uint256) { // Push a empty item to the Array to make space for our new stakeholder stakeholders.push(); // Calculate the index of the last item in the array by Len-1 uint256 userIndex = stakeholders.length - 1; // Assign the address to the new index stakeholders[userIndex].user = staker; // Add index to the stakeHolders stakes[staker] = userIndex; return userIndex; } /** * @notice * _Stake is used to make a stake for an sender. It will remove the amount staked from the stakers account and place those tokens inside a stake container * StakeID */ function _stake(uint256 _amount) internal { // Simple check so that user does not stake 0 require(_amount > 0, "Cannot stake nothing"); // Mappings in solidity creates all values, but empty, so we can just check the address uint256 index = stakes[msg.sender]; // block.timestamp = timestamp of the current block in seconds since the epoch uint256 timestamp = block.timestamp; // See if the staker already has a staked index or if its the first time if (index == 0) { // This stakeholder stakes for the first time // We need to add him to the stakeHolders and also map it into the Index of the stakes // The index returned will be the index of the stakeholder in the stakeholders array index = _addStakeholder(msg.sender); } // Use the index to push a new Stake // push a newly created Stake with the current block timestamp. stakeholders[index].address_stakes.push( Stake(msg.sender, _amount, timestamp, 0) ); // Emit an event that the stake has occured emit Staked(msg.sender, _amount, index, timestamp); } /** * @notice * calculateStakeReward is used to calculate how much a user should be rewarded for their stakes * and the duration the stake has been active */ function calculateStakeReward(Stake memory _current_stake) internal view returns (uint256) { // First calculate how long the stake has been active // Use current seconds since epoch - the seconds since epoch the stake was made // The output will be duration in SECONDS , // We will reward the user 0.1% per Hour So thats 0.1% per 3600 seconds // the alghoritm is seconds = block.timestamp - stake seconds (block.timestap - _stake.since) // hours = Seconds / 3600 (seconds /3600) 3600 is an variable in Solidity names hours // we then multiply each token by the hours staked , then divide by the _rewardPerHour rate return (((block.timestamp - _current_stake.since) / 1 hours) * _current_stake.amount) / _rewardPerHour; } /** * @notice * withdrawStake takes in an amount and a index of the stake and will remove tokens from that stake * Notice index of the stake is the users stake counter, starting at 0 for the first stake * Will return the amount to MINT onto the acount * Will also calculateStakeReward and reset timer */ function _withdrawStake(uint256 amount, uint256 index) internal returns (uint256) { // Grab user_index which is the index to use to grab the Stake[] uint256 user_index = stakes[msg.sender]; Stake memory current_stake = stakeholders[user_index].address_stakes[ index ]; require( current_stake.amount >= amount, "Staking: Cannot withdraw more than you have staked" ); // Calculate available Reward first before we start modifying data uint256 reward = calculateStakeReward(current_stake); // Remove by subtracting the money unstaked current_stake.amount = current_stake.amount - amount; // If stake is empty, 0, then remove it from the array of stakes if (current_stake.amount == 0) { delete stakeholders[user_index].address_stakes[index]; } else { // If not empty then replace the value of it stakeholders[user_index] .address_stakes[index] .amount = current_stake.amount; // Reset timer of stake stakeholders[user_index].address_stakes[index].since = block .timestamp; } return amount + reward; } /** * @notice * hasStake is used to check if a account has stakes and the total amount along with all the seperate stakes */ function hasStake(address _staker) public view returns (StakingSummary memory) { // totalStakeAmount is used to count total staked amount of the address uint256 totalStakeAmount; // Keep a summary in memory since we need to calculate this StakingSummary memory summary = StakingSummary( 0, stakeholders[stakes[_staker]].address_stakes ); // Itterate all stakes and grab amount of stakes for (uint256 s = 0; s < summary.stakes.length; s += 1) { uint256 availableReward = calculateStakeReward(summary.stakes[s]); summary.stakes[s].claimable = availableReward; totalStakeAmount = totalStakeAmount + summary.stakes[s].amount; } // Assign calculate amount to summary summary.total_amount = totalStakeAmount; return summary; } function viewAll(address _staker) public view returns (uint256) { uint256 totalAmount; uint256 user_index = stakes[_staker]; StakingSummary memory summary = StakingSummary( 0, stakeholders[stakes[_staker]].address_stakes ); // Itterate all stakes and grab amount of stakes for (uint256 s = 0; s < summary.stakes.length; s += 1) { Stake memory current_stake = stakeholders[user_index] .address_stakes[s]; uint256 availableReward = calculateStakeReward(current_stake); totalAmount = current_stake.amount + availableReward; } return totalAmount; } function _withdrawAll() internal returns (uint256) { uint256 totalWithdraw; uint256 user_index = stakes[msg.sender]; StakingSummary memory summary = StakingSummary( 0, stakeholders[stakes[msg.sender]].address_stakes ); // Itterate all stakes and grab amount of stakes for (uint256 s = 0; s < summary.stakes.length; s += 1) { Stake memory current_stake = stakeholders[user_index] .address_stakes[s]; uint256 availableReward = calculateStakeReward(current_stake); totalWithdraw = current_stake.amount + availableReward; delete stakeholders[user_index].address_stakes[s]; } return totalWithdraw; } function _getRewardValue() internal view returns (uint256) { return _rewardPerHour; } function _setRewardValue(uint256 amount) internal { require(amount > 0, "Cannot be 0%"); _rewardPerHour = amount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"token_name","type":"string"},{"internalType":"string","name":"short_symbol","type":"string"},{"internalType":"uint8","name":"token_decimals","type":"uint8"},{"internalType":"uint256","name":"token_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"hasStake","outputs":[{"components":[{"internalType":"uint256","name":"total_amount","type":"uint256"},{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"since","type":"uint256"},{"internalType":"uint256","name":"claimable","type":"uint256"}],"internalType":"struct Stakeable.Stake[]","name":"stakes","type":"tuple[]"}],"internalType":"struct Stakeable.StakingSummary","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setRewardPerHour","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"viewAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewRewardPerHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stake_index","type":"uint256"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162003e8538038062003e85833981810160405281019062000037919062000426565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36002600181600181540180825580915050039060005260206000209050506201abbc60018190555083600790816200012b919062000717565b5082600690816200013d919062000717565b5081600560006101000a81548160ff021916908360ff16021790555080600481905550600454600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200020891906200080f565b60405180910390a3505050506200082c565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002838262000238565b810181811067ffffffffffffffff82111715620002a557620002a462000249565b5b80604052505050565b6000620002ba6200021a565b9050620002c8828262000278565b919050565b600067ffffffffffffffff821115620002eb57620002ea62000249565b5b620002f68262000238565b9050602081019050919050565b60005b838110156200032357808201518184015260208101905062000306565b60008484015250505050565b6000620003466200034084620002cd565b620002ae565b90508281526020810184848401111562000365576200036462000233565b5b6200037284828562000303565b509392505050565b600082601f8301126200039257620003916200022e565b5b8151620003a48482602086016200032f565b91505092915050565b600060ff82169050919050565b620003c581620003ad565b8114620003d157600080fd5b50565b600081519050620003e581620003ba565b92915050565b6000819050919050565b6200040081620003eb565b81146200040c57600080fd5b50565b6000815190506200042081620003f5565b92915050565b6000806000806080858703121562000443576200044262000224565b5b600085015167ffffffffffffffff81111562000464576200046362000229565b5b62000472878288016200037a565b945050602085015167ffffffffffffffff81111562000496576200049562000229565b5b620004a4878288016200037a565b9350506040620004b787828801620003d4565b9250506060620004ca878288016200040f565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052957607f821691505b6020821081036200053f576200053e620004e1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005a97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200056a565b620005b586836200056a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005f8620005f2620005ec84620003eb565b620005cd565b620003eb565b9050919050565b6000819050919050565b6200061483620005d7565b6200062c6200062382620005ff565b84845462000577565b825550505050565b600090565b6200064362000634565b6200065081848462000609565b505050565b5b8181101562000678576200066c60008262000639565b60018101905062000656565b5050565b601f821115620006c757620006918162000545565b6200069c846200055a565b81016020851015620006ac578190505b620006c4620006bb856200055a565b83018262000655565b50505b505050565b600082821c905092915050565b6000620006ec60001984600802620006cc565b1980831691505092915050565b6000620007078383620006d9565b9150826002028217905092915050565b6200072282620004d6565b67ffffffffffffffff8111156200073e576200073d62000249565b5b6200074a825462000510565b620007578282856200067c565b600060209050601f8311600181146200078f57600084156200077a578287015190505b620007868582620006f9565b865550620007f6565b601f1984166200079f8662000545565b60005b82811015620007c957848901518255600182019150602085019450602081019050620007a2565b86831015620007e95784890151620007e5601f891682620006d9565b8355505b6001600288020188555050505b505050505050565b6200080981620003eb565b82525050565b6000602082019050620008266000830184620007fe565b92915050565b613649806200083c6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063893d20e8116100c3578063a694fc3a1161007c578063a694fc3a146103f3578063a9059cbb1461040f578063dd62ed3e1461043f578063e73e14bf1461046f578063f1fdf4691461049f578063f2fde38b146104bb57610158565b8063893d20e8146103095780638da5cb5b1461032757806393eb26da1461034557806395d89b41146103755780639dc29fac14610393578063a457c2d7146103c357610158565b806340c10f191161011557806340c10f19146102475780634f9a9caa1461027757806370a0823114610295578063715018a6146102c5578063853828b6146102cf5780638761dc5f146102d957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b6101656104d7565b60405161017291906126fc565b60405180910390f35b610195600480360381019061019091906127b7565b610569565b6040516101a29190612812565b60405180910390f35b6101b3610580565b6040516101c0919061283c565b60405180910390f35b6101e360048036038101906101de9190612857565b61058a565b6040516101f09190612812565b60405180910390f35b6102016106f3565b60405161020e91906128c6565b60405180910390f35b610231600480360381019061022c91906127b7565b61070a565b60405161023e9190612812565b60405180910390f35b610261600480360381019061025c91906127b7565b6107a8565b60405161026e9190612812565b60405180910390f35b61027f61084c565b60405161028c919061283c565b60405180910390f35b6102af60048036038101906102aa91906128e1565b61085b565b6040516102bc919061283c565b60405180910390f35b6102cd6108a4565b005b6102d76109f0565b005b6102f360048036038101906102ee919061290e565b610a09565b6040516103009190612812565b60405180910390f35b610311610aab565b60405161031e919061294a565b60405180910390f35b61032f610aba565b60405161033c919061294a565b60405180910390f35b61035f600480360381019061035a91906128e1565b610ae3565b60405161036c919061283c565b60405180910390f35b61037d610d8a565b60405161038a91906126fc565b60405180910390f35b6103ad60048036038101906103a891906127b7565b610e1c565b6040516103ba9190612812565b60405180910390f35b6103dd60048036038101906103d891906127b7565b610ec0565b6040516103ea9190612812565b60405180910390f35b61040d6004803603810190610408919061290e565b610f5e565b005b610429600480360381019061042491906127b7565b611045565b6040516104369190612812565b60405180910390f35b61045960048036038101906104549190612965565b61105c565b604051610466919061283c565b60405180910390f35b610489600480360381019061048491906128e1565b6110e3565b6040516104969190612b04565b60405180910390f35b6104b960048036038101906104b49190612b26565b6112f0565b005b6104d560048036038101906104d091906128e1565b61130d565b005b6060600780546104e690612b95565b80601f016020809104026020016040519081016040528092919081815260200182805461051290612b95565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b60006105763384846113a7565b6001905092915050565b6000600454905090565b600081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064290612c38565b60405180910390fd5b610656848484611570565b6106e8843384600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e39190612c87565b6113a7565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061079e338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107999190612cbb565b6113a7565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90612d61565b60405180910390fd5b6108428383611856565b6001905092915050565b60006108566119d1565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990612d61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109fa6119db565b9050610a063382611856565b50565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090612d61565b60405180910390fd5b610aa282611d07565b60019050919050565b6000610ab5610aba565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610b9157610b90612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015610c6857838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610bc2565b50505050815250905060005b816020015151811015610d7e57600060028481548110610c9757610c96612d81565b5b90600052602060002090600202016001018281548110610cba57610cb9612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000610d5482611d54565b9050808260200151610d669190612cbb565b95505050600181610d779190612cbb565b9050610c74565b50829350505050919050565b606060068054610d9990612b95565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc590612b95565b8015610e125780601f10610de757610100808354040283529160200191610e12565b820191906000526020600020905b815481529060010190602001808311610df557829003601f168201915b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390612d61565b60405180910390fd5b610eb68383611d96565b6001905092915050565b6000610f54338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f9190612c87565b6113a7565b6001905092915050565b6a5955e3bb3e743fec00000060045410610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612dfc565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612e8e565b60405180910390fd5b61103881611f93565b6110423382611d96565b50565b6000611052338484611570565b6001905092915050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110eb612652565b6000806040518060400160405280600081526020016002600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061115357611152612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b8282101561122a57838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611184565b50505050815250905060005b8160200151518110156112db57600061126c8360200151838151811061125f5761125e612d81565b5b6020026020010151611d54565b9050808360200151838151811061128657611285612d81565b5b60200260200101516060018181525050826020015182815181106112ad576112ac612d81565b5b602002602001015160200151846112c49190612cbb565b9350506001816112d49190612cbb565b9050611236565b50818160000181815250508092505050919050565b60006112fc8383612177565b90506113083382611856565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612d61565b60405180910390fd5b6113a48161243f565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90612f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612fb2565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611563919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690613044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906130d6565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613168565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171b9190612c87565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a99190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611849919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc906131fa565b60405180910390fd5b806004546118d39190612cbb565b60048190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119249190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c5919061283c565b60405180910390a35050565b6000600154905090565b6000806000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611a8957611a88612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015611b6057838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611aba565b50505050815250905060005b816020015151811015611cfd57600060028481548110611b8f57611b8e612d81565b5b90600052602060002090600202016001018281548110611bb257611bb1612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000611c4c82611d54565b9050808260200151611c5e9190612cbb565b955060028581548110611c7457611c73612d81565b5b90600052602060002090600202016001018381548110611c9757611c96612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905550505050600181611cf69190612cbb565b9050611b6c565b5082935050505090565b60008111611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4190613266565b60405180910390fd5b8060018190555050565b60006001548260200151610e10846040015142611d719190612c87565b611d7b91906132b5565b611d8591906132e6565b611d8f91906132b5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9061339a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e9061342c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed29190612c87565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600454611f239190612c87565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f87919061283c565b60405180910390a35050565b60008111611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90613498565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905060008203612033576120303361256b565b91505b6002828154811061204757612046612d81565b5b906000526020600020906002020160010160405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015550503373ffffffffffffffffffffffffffffffffffffffff167fb4caaf29adda3eefee3ad552a8e85058589bf834c7466cae4ee58787f70589ed84848460405161216a939291906134b8565b60405180910390a2505050565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600282815481106121d2576121d1612d81565b5b906000526020600020906002020160010184815481106121f5576121f4612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481525050905084816020015110156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613561565b60405180910390fd5b60006122d682611d54565b90508582602001516122e89190612c87565b8260200181815250506000826020015103612389576002838154811061231157612310612d81565b5b9060005260206000209060020201600101858154811061233457612333612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905560038201600090555050612428565b8160200151600284815481106123a2576123a1612d81565b5b906000526020600020906002020160010186815481106123c5576123c4612d81565b5b90600052602060002090600402016001018190555042600284815481106123ef576123ee612d81565b5b9060005260206000209060020201600101868154811061241257612411612d81565b5b9060005260206000209060040201600201819055505b80866124349190612cbb565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a5906135f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002600181600181540180825580915050039060005260206000209050506000600160028054905061259f9190612c87565b905082600282815481106125b6576125b5612d81565b5b906000526020600020906002020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080915050919050565b604051806040016040528060008152602001606081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156126a657808201518184015260208101905061268b565b60008484015250505050565b6000601f19601f8301169050919050565b60006126ce8261266c565b6126d88185612677565b93506126e8818560208601612688565b6126f1816126b2565b840191505092915050565b6000602082019050818103600083015261271681846126c3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061274e82612723565b9050919050565b61275e81612743565b811461276957600080fd5b50565b60008135905061277b81612755565b92915050565b6000819050919050565b61279481612781565b811461279f57600080fd5b50565b6000813590506127b18161278b565b92915050565b600080604083850312156127ce576127cd61271e565b5b60006127dc8582860161276c565b92505060206127ed858286016127a2565b9150509250929050565b60008115159050919050565b61280c816127f7565b82525050565b60006020820190506128276000830184612803565b92915050565b61283681612781565b82525050565b6000602082019050612851600083018461282d565b92915050565b6000806000606084860312156128705761286f61271e565b5b600061287e8682870161276c565b935050602061288f8682870161276c565b92505060406128a0868287016127a2565b9150509250925092565b600060ff82169050919050565b6128c0816128aa565b82525050565b60006020820190506128db60008301846128b7565b92915050565b6000602082840312156128f7576128f661271e565b5b60006129058482850161276c565b91505092915050565b6000602082840312156129245761292361271e565b5b6000612932848285016127a2565b91505092915050565b61294481612743565b82525050565b600060208201905061295f600083018461293b565b92915050565b6000806040838503121561297c5761297b61271e565b5b600061298a8582860161276c565b925050602061299b8582860161276c565b9150509250929050565b6129ae81612781565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6129e981612743565b82525050565b608082016000820151612a0560008501826129e0565b506020820151612a1860208501826129a5565b506040820151612a2b60408501826129a5565b506060820151612a3e60608501826129a5565b50505050565b6000612a5083836129ef565b60808301905092915050565b6000602082019050919050565b6000612a74826129b4565b612a7e81856129bf565b9350612a89836129d0565b8060005b83811015612aba578151612aa18882612a44565b9750612aac83612a5c565b925050600181019050612a8d565b5085935050505092915050565b6000604083016000830151612adf60008601826129a5565b5060208301518482036020860152612af78282612a69565b9150508091505092915050565b60006020820190508181036000830152612b1e8184612ac7565b905092915050565b60008060408385031215612b3d57612b3c61271e565b5b6000612b4b858286016127a2565b9250506020612b5c858286016127a2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bad57607f821691505b602082108103612bc057612bbf612b66565b5b50919050565b7f416c6661436f696e3a20596f752063616e6e6f74207370656e6420746861742060008201527f6d756368206f6e2074686973206163636f756e74000000000000000000000000602082015250565b6000612c22603483612677565b9150612c2d82612bc6565b604082019050919050565b60006020820190508181036000830152612c5181612c15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c9282612781565b9150612c9d83612781565b9250828203905081811115612cb557612cb4612c58565b5b92915050565b6000612cc682612781565b9150612cd183612781565b9250828201905080821115612ce957612ce8612c58565b5b92915050565b7f4f776e61626c653a206f6e6c79206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000612d4b602a83612677565b9150612d5682612cef565b604082019050919050565b60006020820190508181036000830152612d7a81612d3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f72650000000000600082015250565b6000612de6601b83612677565b9150612df182612db0565b602082019050919050565b60006020820190508181036000830152612e1581612dd9565b9050919050565b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f7265207468616e60008201527f20796f75206f776e000000000000000000000000000000000000000000000000602082015250565b6000612e78602883612677565b9150612e8382612e1c565b604082019050919050565b60006020820190508181036000830152612ea781612e6b565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520646f6e6560008201527f2066726f6d207a65726f20616464726573730000000000000000000000000000602082015250565b6000612f0a603283612677565b9150612f1582612eae565b604082019050919050565b60006020820190508181036000830152612f3981612efd565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520746f207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612f9c602b83612677565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f416c6661436f696e3a207472616e736665722066726f6d207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e602483612677565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f416c6661436f696e3a207472616e7366657220746f207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c0602283612677565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f416c6661436f696e3a2063616e74207472616e73666572206d6f72652074686160008201527f6e20796f7572206163636f756e7420686f6c6473000000000000000000000000602082015250565b6000613152603483612677565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f416c6661436f696e3a2063616e6e6f74206d696e7420746f207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e4602583612677565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b7f43616e6e6f742062652030250000000000000000000000000000000000000000600082015250565b6000613250600c83612677565b915061325b8261321a565b602082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c082612781565b91506132cb83612781565b9250826132db576132da613286565b5b828204905092915050565b60006132f182612781565b91506132fc83612781565b925082820261330a81612781565b9150828204841483151761332157613320612c58565b5b5092915050565b7f416c6661436f696e3a2063616e6e6f74206275726e2066726f6d207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613384602783612677565b915061338f82613328565b604082019050919050565b600060208201905081810360008301526133b381613377565b9050919050565b7f416c6661436f696e3a2043616e6e6f74206275726e206d6f7265207468616e2060008201527f746865206163636f756e74206f776e7300000000000000000000000000000000602082015250565b6000613416603083612677565b9150613421826133ba565b604082019050919050565b6000602082019050818103600083015261344581613409565b9050919050565b7f43616e6e6f74207374616b65206e6f7468696e67000000000000000000000000600082015250565b6000613482601483612677565b915061348d8261344c565b602082019050919050565b600060208201905081810360008301526134b181613475565b9050919050565b60006060820190506134cd600083018661282d565b6134da602083018561282d565b6134e7604083018461282d565b949350505050565b7f5374616b696e673a2043616e6e6f74207769746864726177206d6f726520746860008201527f616e20796f752068617665207374616b65640000000000000000000000000000602082015250565b600061354b603283612677565b9150613556826134ef565b604082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135dd602683612677565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b905091905056fea264697066735822122099d9160d23a2d29b6f374a1654f7cbfb96697bf44b733fe25e160221371c569664736f6c63430008110033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000000000000000000000009416c666120436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004416c666100000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063893d20e8116100c3578063a694fc3a1161007c578063a694fc3a146103f3578063a9059cbb1461040f578063dd62ed3e1461043f578063e73e14bf1461046f578063f1fdf4691461049f578063f2fde38b146104bb57610158565b8063893d20e8146103095780638da5cb5b1461032757806393eb26da1461034557806395d89b41146103755780639dc29fac14610393578063a457c2d7146103c357610158565b806340c10f191161011557806340c10f19146102475780634f9a9caa1461027757806370a0823114610295578063715018a6146102c5578063853828b6146102cf5780638761dc5f146102d957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b6101656104d7565b60405161017291906126fc565b60405180910390f35b610195600480360381019061019091906127b7565b610569565b6040516101a29190612812565b60405180910390f35b6101b3610580565b6040516101c0919061283c565b60405180910390f35b6101e360048036038101906101de9190612857565b61058a565b6040516101f09190612812565b60405180910390f35b6102016106f3565b60405161020e91906128c6565b60405180910390f35b610231600480360381019061022c91906127b7565b61070a565b60405161023e9190612812565b60405180910390f35b610261600480360381019061025c91906127b7565b6107a8565b60405161026e9190612812565b60405180910390f35b61027f61084c565b60405161028c919061283c565b60405180910390f35b6102af60048036038101906102aa91906128e1565b61085b565b6040516102bc919061283c565b60405180910390f35b6102cd6108a4565b005b6102d76109f0565b005b6102f360048036038101906102ee919061290e565b610a09565b6040516103009190612812565b60405180910390f35b610311610aab565b60405161031e919061294a565b60405180910390f35b61032f610aba565b60405161033c919061294a565b60405180910390f35b61035f600480360381019061035a91906128e1565b610ae3565b60405161036c919061283c565b60405180910390f35b61037d610d8a565b60405161038a91906126fc565b60405180910390f35b6103ad60048036038101906103a891906127b7565b610e1c565b6040516103ba9190612812565b60405180910390f35b6103dd60048036038101906103d891906127b7565b610ec0565b6040516103ea9190612812565b60405180910390f35b61040d6004803603810190610408919061290e565b610f5e565b005b610429600480360381019061042491906127b7565b611045565b6040516104369190612812565b60405180910390f35b61045960048036038101906104549190612965565b61105c565b604051610466919061283c565b60405180910390f35b610489600480360381019061048491906128e1565b6110e3565b6040516104969190612b04565b60405180910390f35b6104b960048036038101906104b49190612b26565b6112f0565b005b6104d560048036038101906104d091906128e1565b61130d565b005b6060600780546104e690612b95565b80601f016020809104026020016040519081016040528092919081815260200182805461051290612b95565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b60006105763384846113a7565b6001905092915050565b6000600454905090565b600081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064290612c38565b60405180910390fd5b610656848484611570565b6106e8843384600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e39190612c87565b6113a7565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061079e338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107999190612cbb565b6113a7565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90612d61565b60405180910390fd5b6108428383611856565b6001905092915050565b60006108566119d1565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990612d61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109fa6119db565b9050610a063382611856565b50565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090612d61565b60405180910390fd5b610aa282611d07565b60019050919050565b6000610ab5610aba565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610b9157610b90612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015610c6857838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610bc2565b50505050815250905060005b816020015151811015610d7e57600060028481548110610c9757610c96612d81565b5b90600052602060002090600202016001018281548110610cba57610cb9612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000610d5482611d54565b9050808260200151610d669190612cbb565b95505050600181610d779190612cbb565b9050610c74565b50829350505050919050565b606060068054610d9990612b95565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc590612b95565b8015610e125780601f10610de757610100808354040283529160200191610e12565b820191906000526020600020905b815481529060010190602001808311610df557829003601f168201915b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390612d61565b60405180910390fd5b610eb68383611d96565b6001905092915050565b6000610f54338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f9190612c87565b6113a7565b6001905092915050565b6a5955e3bb3e743fec00000060045410610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612dfc565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612e8e565b60405180910390fd5b61103881611f93565b6110423382611d96565b50565b6000611052338484611570565b6001905092915050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110eb612652565b6000806040518060400160405280600081526020016002600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061115357611152612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b8282101561122a57838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611184565b50505050815250905060005b8160200151518110156112db57600061126c8360200151838151811061125f5761125e612d81565b5b6020026020010151611d54565b9050808360200151838151811061128657611285612d81565b5b60200260200101516060018181525050826020015182815181106112ad576112ac612d81565b5b602002602001015160200151846112c49190612cbb565b9350506001816112d49190612cbb565b9050611236565b50818160000181815250508092505050919050565b60006112fc8383612177565b90506113083382611856565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612d61565b60405180910390fd5b6113a48161243f565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90612f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612fb2565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611563919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690613044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906130d6565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613168565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171b9190612c87565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a99190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611849919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc906131fa565b60405180910390fd5b806004546118d39190612cbb565b60048190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119249190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c5919061283c565b60405180910390a35050565b6000600154905090565b6000806000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611a8957611a88612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015611b6057838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611aba565b50505050815250905060005b816020015151811015611cfd57600060028481548110611b8f57611b8e612d81565b5b90600052602060002090600202016001018281548110611bb257611bb1612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000611c4c82611d54565b9050808260200151611c5e9190612cbb565b955060028581548110611c7457611c73612d81565b5b90600052602060002090600202016001018381548110611c9757611c96612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905550505050600181611cf69190612cbb565b9050611b6c565b5082935050505090565b60008111611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4190613266565b60405180910390fd5b8060018190555050565b60006001548260200151610e10846040015142611d719190612c87565b611d7b91906132b5565b611d8591906132e6565b611d8f91906132b5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9061339a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e9061342c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed29190612c87565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600454611f239190612c87565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f87919061283c565b60405180910390a35050565b60008111611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90613498565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905060008203612033576120303361256b565b91505b6002828154811061204757612046612d81565b5b906000526020600020906002020160010160405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015550503373ffffffffffffffffffffffffffffffffffffffff167fb4caaf29adda3eefee3ad552a8e85058589bf834c7466cae4ee58787f70589ed84848460405161216a939291906134b8565b60405180910390a2505050565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600282815481106121d2576121d1612d81565b5b906000526020600020906002020160010184815481106121f5576121f4612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481525050905084816020015110156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613561565b60405180910390fd5b60006122d682611d54565b90508582602001516122e89190612c87565b8260200181815250506000826020015103612389576002838154811061231157612310612d81565b5b9060005260206000209060020201600101858154811061233457612333612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905560038201600090555050612428565b8160200151600284815481106123a2576123a1612d81565b5b906000526020600020906002020160010186815481106123c5576123c4612d81565b5b90600052602060002090600402016001018190555042600284815481106123ef576123ee612d81565b5b9060005260206000209060020201600101868154811061241257612411612d81565b5b9060005260206000209060040201600201819055505b80866124349190612cbb565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a5906135f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002600181600181540180825580915050039060005260206000209050506000600160028054905061259f9190612c87565b905082600282815481106125b6576125b5612d81565b5b906000526020600020906002020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080915050919050565b604051806040016040528060008152602001606081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156126a657808201518184015260208101905061268b565b60008484015250505050565b6000601f19601f8301169050919050565b60006126ce8261266c565b6126d88185612677565b93506126e8818560208601612688565b6126f1816126b2565b840191505092915050565b6000602082019050818103600083015261271681846126c3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061274e82612723565b9050919050565b61275e81612743565b811461276957600080fd5b50565b60008135905061277b81612755565b92915050565b6000819050919050565b61279481612781565b811461279f57600080fd5b50565b6000813590506127b18161278b565b92915050565b600080604083850312156127ce576127cd61271e565b5b60006127dc8582860161276c565b92505060206127ed858286016127a2565b9150509250929050565b60008115159050919050565b61280c816127f7565b82525050565b60006020820190506128276000830184612803565b92915050565b61283681612781565b82525050565b6000602082019050612851600083018461282d565b92915050565b6000806000606084860312156128705761286f61271e565b5b600061287e8682870161276c565b935050602061288f8682870161276c565b92505060406128a0868287016127a2565b9150509250925092565b600060ff82169050919050565b6128c0816128aa565b82525050565b60006020820190506128db60008301846128b7565b92915050565b6000602082840312156128f7576128f661271e565b5b60006129058482850161276c565b91505092915050565b6000602082840312156129245761292361271e565b5b6000612932848285016127a2565b91505092915050565b61294481612743565b82525050565b600060208201905061295f600083018461293b565b92915050565b6000806040838503121561297c5761297b61271e565b5b600061298a8582860161276c565b925050602061299b8582860161276c565b9150509250929050565b6129ae81612781565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6129e981612743565b82525050565b608082016000820151612a0560008501826129e0565b506020820151612a1860208501826129a5565b506040820151612a2b60408501826129a5565b506060820151612a3e60608501826129a5565b50505050565b6000612a5083836129ef565b60808301905092915050565b6000602082019050919050565b6000612a74826129b4565b612a7e81856129bf565b9350612a89836129d0565b8060005b83811015612aba578151612aa18882612a44565b9750612aac83612a5c565b925050600181019050612a8d565b5085935050505092915050565b6000604083016000830151612adf60008601826129a5565b5060208301518482036020860152612af78282612a69565b9150508091505092915050565b60006020820190508181036000830152612b1e8184612ac7565b905092915050565b60008060408385031215612b3d57612b3c61271e565b5b6000612b4b858286016127a2565b9250506020612b5c858286016127a2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bad57607f821691505b602082108103612bc057612bbf612b66565b5b50919050565b7f416c6661436f696e3a20596f752063616e6e6f74207370656e6420746861742060008201527f6d756368206f6e2074686973206163636f756e74000000000000000000000000602082015250565b6000612c22603483612677565b9150612c2d82612bc6565b604082019050919050565b60006020820190508181036000830152612c5181612c15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c9282612781565b9150612c9d83612781565b9250828203905081811115612cb557612cb4612c58565b5b92915050565b6000612cc682612781565b9150612cd183612781565b9250828201905080821115612ce957612ce8612c58565b5b92915050565b7f4f776e61626c653a206f6e6c79206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000612d4b602a83612677565b9150612d5682612cef565b604082019050919050565b60006020820190508181036000830152612d7a81612d3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f72650000000000600082015250565b6000612de6601b83612677565b9150612df182612db0565b602082019050919050565b60006020820190508181036000830152612e1581612dd9565b9050919050565b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f7265207468616e60008201527f20796f75206f776e000000000000000000000000000000000000000000000000602082015250565b6000612e78602883612677565b9150612e8382612e1c565b604082019050919050565b60006020820190508181036000830152612ea781612e6b565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520646f6e6560008201527f2066726f6d207a65726f20616464726573730000000000000000000000000000602082015250565b6000612f0a603283612677565b9150612f1582612eae565b604082019050919050565b60006020820190508181036000830152612f3981612efd565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520746f207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612f9c602b83612677565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f416c6661436f696e3a207472616e736665722066726f6d207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e602483612677565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f416c6661436f696e3a207472616e7366657220746f207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c0602283612677565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f416c6661436f696e3a2063616e74207472616e73666572206d6f72652074686160008201527f6e20796f7572206163636f756e7420686f6c6473000000000000000000000000602082015250565b6000613152603483612677565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f416c6661436f696e3a2063616e6e6f74206d696e7420746f207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e4602583612677565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b7f43616e6e6f742062652030250000000000000000000000000000000000000000600082015250565b6000613250600c83612677565b915061325b8261321a565b602082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c082612781565b91506132cb83612781565b9250826132db576132da613286565b5b828204905092915050565b60006132f182612781565b91506132fc83612781565b925082820261330a81612781565b9150828204841483151761332157613320612c58565b5b5092915050565b7f416c6661436f696e3a2063616e6e6f74206275726e2066726f6d207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613384602783612677565b915061338f82613328565b604082019050919050565b600060208201905081810360008301526133b381613377565b9050919050565b7f416c6661436f696e3a2043616e6e6f74206275726e206d6f7265207468616e2060008201527f746865206163636f756e74206f776e7300000000000000000000000000000000602082015250565b6000613416603083612677565b9150613421826133ba565b604082019050919050565b6000602082019050818103600083015261344581613409565b9050919050565b7f43616e6e6f74207374616b65206e6f7468696e67000000000000000000000000600082015250565b6000613482601483612677565b915061348d8261344c565b602082019050919050565b600060208201905081810360008301526134b181613475565b9050919050565b60006060820190506134cd600083018661282d565b6134da602083018561282d565b6134e7604083018461282d565b949350505050565b7f5374616b696e673a2043616e6e6f74207769746864726177206d6f726520746860008201527f616e20796f752068617665207374616b65640000000000000000000000000000602082015250565b600061354b603283612677565b9150613556826134ef565b604082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135dd602683612677565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b905091905056fea264697066735822122099d9160d23a2d29b6f374a1654f7cbfb96697bf44b733fe25e160221371c569664736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000000000000000000000009416c666120436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004416c666100000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : token_name (string): Alfa Coin
Arg [1] : short_symbol (string): Alfa
Arg [2] : token_decimals (uint8): 18
Arg [3] : token_totalSupply (uint256): 16000000000000000000000000
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000d3c21bcecceda10000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [5] : 416c666120436f696e0000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 416c666100000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
249:11502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7776:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2991:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8989:639;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2474:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9757:268;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5581:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11496:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3190:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1509:140:1;;;:::i;:::-;;11313:173:0;;;:::i;:::-;;11608:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7283:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1175:80:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8389:709:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2639:89:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5205:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10164:268;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10526:443;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6098:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7467:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7460:921:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11076:231:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1751:109:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2806:85:0;2845:13;2878:5;2871:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:85;:::o;7776:152::-;7844:4;7861:37;7870:10;7882:7;7891:6;7861:8;:37::i;:::-;7916:4;7909:11;;7776:152;;;;:::o;2991:93::-;3037:7;3064:12;;3057:19;;2991:93;:::o;8989:639::-;9115:4;9242:6;9206:11;:20;9218:7;9206:20;;;;;;;;;;;;;;;:32;9227:10;9206:32;;;;;;;;;;;;;;;;:42;;9184:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;9366:37;9376:7;9385:9;9396:6;9366:9;:37::i;:::-;9476:122;9499:7;9521:10;9581:6;9546:11;:20;9558:7;9546:20;;;;;;;;;;;;;;;:32;9567:10;9546:32;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;9476:8;:122::i;:::-;9616:4;9609:11;;8989:639;;;;;:::o;2474:85::-;2517:5;2542:9;;;;;;;;;;;2535:16;;2474:85;:::o;9757:268::-;9851:4;9873:122;9896:10;9921:7;9978:6;9943:11;:23;9955:10;9943:23;;;;;;;;;;;;;;;:32;9967:7;9943:32;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;9873:8;:122::i;:::-;10013:4;10006:11;;9757:268;;;;:::o;5581:174::-;5681:4;808:10:1;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;5703:22:0::1;5709:7;5718:6;5703:5;:22::i;:::-;5743:4;5736:11;;5581:174:::0;;;;:::o;11496:104::-;11548:7;11575:17;:15;:17::i;:::-;11568:24;;11496:104;:::o;3190:112::-;3249:7;3276:9;:18;3286:7;3276:18;;;;;;;;;;;;;;;;3269:25;;3190:112;;;:::o;1509:140:1:-;808:10;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;1608:1:::1;1571:40;;1592:6;::::0;::::1;;;;;;;;1571:40;;;;;;;;;;;;1639:1;1622:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1509:140::o:0;11313:173:0:-;11354:22;11379:14;:12;:14::i;:::-;11354:39;;11445:33;11451:10;11463:14;11445:5;:33::i;:::-;11343:143;11313:173::o;11608:138::-;11676:4;808:10:1;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11693:23:0::1;11709:6;11693:15;:23::i;:::-;11734:4;11727:11;;11608:138:::0;;;:::o;7283:85::-;7326:7;7353;:5;:7::i;:::-;7346:14;;7283:85;:::o;1175:80:1:-;1212:7;1239:6;;;;;;;;;;;1232:13;;1175:80;:::o;8389:709:2:-;8444:7;8464:19;8494:18;8515:6;:15;8522:7;8515:15;;;;;;;;;;;;;;;;8494:36;;8543:29;8575:100;;;;;;;;8604:1;8575:100;;;;8620:12;8633:6;:15;8640:7;8633:15;;;;;;;;;;;;;;;;8620:29;;;;;;;;:::i;:::-;;;;;;;;;;;;:44;;8575:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8543:132;;8751:9;8746:314;8770:7;:14;;;:21;8766:1;:25;8746:314;;;8816:26;8845:12;8858:10;8845:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:57;;8903:1;8845:60;;;;;;;;:::i;:::-;;;;;;;;;;;;8816:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8920:23;8946:35;8967:13;8946:20;:35::i;:::-;8920:61;;9033:15;9010:13;:20;;;:38;;;;:::i;:::-;8996:52;;8801:259;;8798:1;8793:6;;;;;:::i;:::-;;;8746:314;;;;9079:11;9072:18;;;;;8389:709;;;:::o;2639:89:0:-;2680:13;2713:7;2706:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2639:89;:::o;5205:174::-;5305:4;808:10:1;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;5327:22:0::1;5333:7;5342:6;5327:5;:22::i;:::-;5367:4;5360:11;;5205:174:::0;;;;:::o;10164:268::-;10258:4;10280:122;10303:10;10328:7;10385:6;10350:11;:23;10362:10;10350:23;;;;;;;;;;;;;;;:32;10374:7;10350:32;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;10280:8;:122::i;:::-;10420:4;10413:11;;10164:268;;;;:::o;10526:443::-;10652:27;10637:12;;:42;10629:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10755:9;:21;10765:10;10755:21;;;;;;;;;;;;;;;;10744:7;:32;;10722:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;10857:15;10864:7;10857:6;:15::i;:::-;10935:26;10941:10;10953:7;10935:5;:26::i;:::-;10526:443;:::o;6098:181::-;6187:4;6209:40;6219:10;6231:9;6242:6;6209:9;:40::i;:::-;6267:4;6260:11;;6098:181;;;;:::o;7467:168::-;7568:7;7600:11;:18;7612:5;7600:18;;;;;;;;;;;;;;;:27;7619:7;7600:27;;;;;;;;;;;;;;;;7593:34;;7467:168;;;;:::o;7460:921:2:-;7543:21;;:::i;:::-;7663:24;7767:29;7799:100;;;;;;;;7828:1;7799:100;;;;7844:12;7857:6;:15;7864:7;7857:15;;;;;;;;;;;;;;;;7844:29;;;;;;;;:::i;:::-;;;;;;;;;;;;:44;;7799:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7767:132;;7973:9;7968:284;7992:7;:14;;;:21;7988:1;:25;7968:284;;;8038:23;8064:39;8085:7;:14;;;8100:1;8085:17;;;;;;;;:::i;:::-;;;;;;;;8064:20;:39::i;:::-;8038:65;;8148:15;8118:7;:14;;;8133:1;8118:17;;;;;;;;:::i;:::-;;;;;;;;:27;;:45;;;;;8216:7;:14;;;8231:1;8216:17;;;;;;;;:::i;:::-;;;;;;;;:24;;;8197:16;:43;;;;:::i;:::-;8178:62;;8023:229;8020:1;8015:6;;;;;:::i;:::-;;;7968:284;;;;8332:16;8309:7;:20;;:39;;;;;8366:7;8359:14;;;;7460:921;;;:::o;11076:231:0:-;11154:22;11179:35;11194:6;11202:11;11179:14;:35::i;:::-;11154:60;;11266:33;11272:10;11284:14;11266:5;:33::i;:::-;11143:164;11076:231;;:::o;1751:109:1:-;808:10;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;1824:28:::1;1843:8;1824:18;:28::i;:::-;1751:109:::0;:::o;8152:571:0:-;8311:1;8294:19;;:5;:19;;;8272:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;8443:1;8424:21;;:7;:21;;;8402:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8659:6;8629:11;:18;8641:5;8629:18;;;;;;;;;;;;;;;:27;8648:7;8629:27;;;;;;;;;;;;;;;:36;;;;8699:7;8683:32;;8692:5;8683:32;;;8708:6;8683:32;;;;;;:::i;:::-;;;;;;;;8152:571;;;:::o;6556:597::-;6706:1;6688:20;;:6;:20;;;6680:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;6789:1;6768:23;;:9;:23;;;6760:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6884:6;6863:9;:17;6873:6;6863:17;;;;;;;;;;;;;;;;:27;;6841:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;7023:6;7003:9;:17;7013:6;7003:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;6983:9;:17;6993:6;6983:17;;;;;;;;;;;;;;;:46;;;;7086:6;7063:9;:20;7073:9;7063:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;7040:9;:20;7050:9;7040:20;;;;;;;;;;;;;;;:52;;;;7127:9;7110:35;;7119:6;7110:35;;;7138:6;7110:35;;;;;;:::i;:::-;;;;;;;;6556:597;;;:::o;3617:461::-;3712:1;3693:21;;:7;:21;;;3685:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3834:6;3818:12;;:23;;;;:::i;:::-;3803:12;:38;;;;3966:6;3945:9;:18;3955:7;3945:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;3924:9;:18;3934:7;3924:18;;;;;;;;;;;;;;;:48;;;;4054:7;4033:37;;4050:1;4033:37;;;4063:6;4033:37;;;;;;:::i;:::-;;;;;;;;3617:461;;:::o;9886:99:2:-;9936:7;9963:14;;9956:21;;9886:99;:::o;9106:772::-;9148:7;9168:21;9200:18;9221:6;:18;9228:10;9221:18;;;;;;;;;;;;;;;;9200:39;;9252:29;9284:103;;;;;;;;9313:1;9284:103;;;;9329:12;9342:6;:18;9349:10;9342:18;;;;;;;;;;;;;;;;9329:32;;;;;;;;:::i;:::-;;;;;;;;;;;;:47;;9284:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9252:135;;9463:9;9458:380;9482:7;:14;;;:21;9478:1;:25;9458:380;;;9528:26;9557:12;9570:10;9557:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:57;;9615:1;9557:60;;;;;;;;:::i;:::-;;;;;;;;;;;;9528:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9632:23;9658:35;9679:13;9658:20;:35::i;:::-;9632:61;;9747:15;9724:13;:20;;;:38;;;;:::i;:::-;9708:54;;9784:12;9797:10;9784:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;9824:1;9784:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;9777:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9513:325;;9510:1;9505:6;;;;;:::i;:::-;;;9458:380;;;;9857:13;9850:20;;;;;9106:772;:::o;9993:138::-;10071:1;10062:6;:10;10054:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;10117:6;10100:14;:23;;;;9993:138;:::o;4773:860::-;4882:7;5611:14;;5586;:21;;;5558:7;5534:14;:20;;;5516:15;:38;;;;:::i;:::-;5515:50;;;;:::i;:::-;5514:93;;;;:::i;:::-;5513:112;;;;:::i;:::-;5493:132;;4773:860;;;:::o;4393:625:0:-;4502:1;4483:21;;:7;:21;;;4461:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4626:6;4604:9;:18;4614:7;4604:18;;;;;;;;;;;;;;;;:28;;4582:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;4818:6;4797:9;:18;4807:7;4797:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;4776:9;:18;4786:7;4776:18;;;;;;;;;;;;;;;:48;;;;4898:6;4883:12;;:21;;;;:::i;:::-;4868:12;:36;;;;4999:1;4973:37;;4982:7;4973:37;;;5003:6;4973:37;;;;;;:::i;:::-;;;;;;;;4393:625;;:::o;3352:1226:2:-;3488:1;3478:7;:11;3470:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3624:13;3640:6;:18;3647:10;3640:18;;;;;;;;;;;;;;;;3624:34;;3757:17;3777:15;3757:35;;3898:1;3889:5;:10;3885:335;;4181:27;4197:10;4181:15;:27::i;:::-;4173:35;;3885:335;4351:12;4364:5;4351:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;4405:40;;;;;;;;4411:10;4405:40;;;;;;4423:7;4405:40;;;;4432:9;4405:40;;;;4443:1;4405:40;;;4351:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4532:10;4525:45;;;4544:7;4553:5;4560:9;4525:45;;;;;;;;:::i;:::-;;;;;;;;3394:1184;;3352:1226;:::o;5986:1318::-;6077:7;6176:18;6197:6;:18;6204:10;6197:18;;;;;;;;;;;;;;;;6176:39;;6226:26;6255:12;6268:10;6255:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;6309:5;6255:70;;;;;;;;:::i;:::-;;;;;;;;;;;;6226:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6382:6;6358:13;:20;;;:30;;6336:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;6555:14;6572:35;6593:13;6572:20;:35::i;:::-;6555:52;;6717:6;6694:13;:20;;;:29;;;;:::i;:::-;6671:13;:20;;:52;;;;;6836:1;6812:13;:20;;;:25;6808:454;;6861:12;6874:10;6861:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;6901:5;6861:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;6854:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6808:454;;;7090:13;:20;;;6998:12;7011:10;6998:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:57;;7056:5;6998:64;;;;;;;;:::i;:::-;;;;;;;;;;;;:89;;:112;;;;7217:33;7162:12;7175:10;7162:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;7202:5;7162:46;;;;;;;;:::i;:::-;;;;;;;;;;;;:52;;:88;;;;6808:454;7290:6;7281;:15;;;;:::i;:::-;7274:22;;;;;5986:1318;;;;:::o;1961:229:1:-;2055:1;2035:22;;:8;:22;;;2027:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2145:8;2116:38;;2137:6;;;;;;;;;;2116:38;;;;;;;;;;;;2174:8;2165:6;;:17;;;;;;;;;;;;;;;;;;1961:229;:::o;2620:514:2:-;2679:7;2780:12;:19;;;;;;;;;;;;;;;;;;;;;;;2881:17;2923:1;2901:12;:19;;;;:23;;;;:::i;:::-;2881:43;;3014:6;2983:12;2996:9;2983:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;:37;;;;;;;;;;;;;;;;;;3090:9;3073:6;:14;3080:6;3073:14;;;;;;;;;;;;;;;:26;;;;3117:9;3110:16;;;2620:514;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:99:3:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:108::-;6432:24;6450:5;6432:24;:::i;:::-;6427:3;6420:37;6355:108;;:::o;6469:136::-;6558:6;6592:5;6586:12;6576:22;;6469:136;;;:::o;6611:196::-;6722:11;6756:6;6751:3;6744:19;6796:4;6791:3;6787:14;6772:29;;6611:196;;;;:::o;6813:154::-;6902:4;6925:3;6917:11;;6955:4;6950:3;6946:14;6938:22;;6813:154;;;:::o;6973:108::-;7050:24;7068:5;7050:24;:::i;:::-;7045:3;7038:37;6973:108;;:::o;7143:847::-;7274:4;7269:3;7265:14;7361:4;7354:5;7350:16;7344:23;7380:63;7437:4;7432:3;7428:14;7414:12;7380:63;:::i;:::-;7289:164;7537:4;7530:5;7526:16;7520:23;7556:63;7613:4;7608:3;7604:14;7590:12;7556:63;:::i;:::-;7463:166;7712:4;7705:5;7701:16;7695:23;7731:63;7788:4;7783:3;7779:14;7765:12;7731:63;:::i;:::-;7639:165;7891:4;7884:5;7880:16;7874:23;7910:63;7967:4;7962:3;7958:14;7944:12;7910:63;:::i;:::-;7814:169;7243:747;7143:847;;:::o;7996:267::-;8109:10;8130:90;8216:3;8208:6;8130:90;:::i;:::-;8252:4;8247:3;8243:14;8229:28;;7996:267;;;;:::o;8269:135::-;8361:4;8393;8388:3;8384:14;8376:22;;8269:135;;;:::o;8470:888::-;8623:3;8652:76;8722:5;8652:76;:::i;:::-;8744:98;8835:6;8830:3;8744:98;:::i;:::-;8737:105;;8866:78;8938:5;8866:78;:::i;:::-;8967:7;8998:1;8983:350;9008:6;9005:1;9002:13;8983:350;;;9084:6;9078:13;9111:107;9214:3;9199:13;9111:107;:::i;:::-;9104:114;;9241:82;9316:6;9241:82;:::i;:::-;9231:92;;9043:290;9030:1;9027;9023:9;9018:14;;8983:350;;;8987:14;9349:3;9342:10;;8628:730;;;8470:888;;;;:::o;9438:702::-;9569:3;9605:4;9600:3;9596:14;9700:4;9693:5;9689:16;9683:23;9719:63;9776:4;9771:3;9767:14;9753:12;9719:63;:::i;:::-;9620:172;9876:4;9869:5;9865:16;9859:23;9929:3;9923:4;9919:14;9912:4;9907:3;9903:14;9896:38;9955:147;10097:4;10083:12;9955:147;:::i;:::-;9947:155;;9802:311;10130:4;10123:11;;9574:566;9438:702;;;;:::o;10146:397::-;10301:4;10339:2;10328:9;10324:18;10316:26;;10388:9;10382:4;10378:20;10374:1;10363:9;10359:17;10352:47;10416:120;10531:4;10522:6;10416:120;:::i;:::-;10408:128;;10146:397;;;;:::o;10549:474::-;10617:6;10625;10674:2;10662:9;10653:7;10649:23;10645:32;10642:119;;;10680:79;;:::i;:::-;10642:119;10800:1;10825:53;10870:7;10861:6;10850:9;10846:22;10825:53;:::i;:::-;10815:63;;10771:117;10927:2;10953:53;10998:7;10989:6;10978:9;10974:22;10953:53;:::i;:::-;10943:63;;10898:118;10549:474;;;;;:::o;11029:180::-;11077:77;11074:1;11067:88;11174:4;11171:1;11164:15;11198:4;11195:1;11188:15;11215:320;11259:6;11296:1;11290:4;11286:12;11276:22;;11343:1;11337:4;11333:12;11364:18;11354:81;;11420:4;11412:6;11408:17;11398:27;;11354:81;11482:2;11474:6;11471:14;11451:18;11448:38;11445:84;;11501:18;;:::i;:::-;11445:84;11266:269;11215:320;;;:::o;11541:239::-;11681:34;11677:1;11669:6;11665:14;11658:58;11750:22;11745:2;11737:6;11733:15;11726:47;11541:239;:::o;11786:366::-;11928:3;11949:67;12013:2;12008:3;11949:67;:::i;:::-;11942:74;;12025:93;12114:3;12025:93;:::i;:::-;12143:2;12138:3;12134:12;12127:19;;11786:366;;;:::o;12158:419::-;12324:4;12362:2;12351:9;12347:18;12339:26;;12411:9;12405:4;12401:20;12397:1;12386:9;12382:17;12375:47;12439:131;12565:4;12439:131;:::i;:::-;12431:139;;12158:419;;;:::o;12583:180::-;12631:77;12628:1;12621:88;12728:4;12725:1;12718:15;12752:4;12749:1;12742:15;12769:194;12809:4;12829:20;12847:1;12829:20;:::i;:::-;12824:25;;12863:20;12881:1;12863:20;:::i;:::-;12858:25;;12907:1;12904;12900:9;12892:17;;12931:1;12925:4;12922:11;12919:37;;;12936:18;;:::i;:::-;12919:37;12769:194;;;;:::o;12969:191::-;13009:3;13028:20;13046:1;13028:20;:::i;:::-;13023:25;;13062:20;13080:1;13062:20;:::i;:::-;13057:25;;13105:1;13102;13098:9;13091:16;;13126:3;13123:1;13120:10;13117:36;;;13133:18;;:::i;:::-;13117:36;12969:191;;;;:::o;13166:229::-;13306:34;13302:1;13294:6;13290:14;13283:58;13375:12;13370:2;13362:6;13358:15;13351:37;13166:229;:::o;13401:366::-;13543:3;13564:67;13628:2;13623:3;13564:67;:::i;:::-;13557:74;;13640:93;13729:3;13640:93;:::i;:::-;13758:2;13753:3;13749:12;13742:19;;13401:366;;;:::o;13773:419::-;13939:4;13977:2;13966:9;13962:18;13954:26;;14026:9;14020:4;14016:20;14012:1;14001:9;13997:17;13990:47;14054:131;14180:4;14054:131;:::i;:::-;14046:139;;13773:419;;;:::o;14198:180::-;14246:77;14243:1;14236:88;14343:4;14340:1;14333:15;14367:4;14364:1;14357:15;14384:177;14524:29;14520:1;14512:6;14508:14;14501:53;14384:177;:::o;14567:366::-;14709:3;14730:67;14794:2;14789:3;14730:67;:::i;:::-;14723:74;;14806:93;14895:3;14806:93;:::i;:::-;14924:2;14919:3;14915:12;14908:19;;14567:366;;;:::o;14939:419::-;15105:4;15143:2;15132:9;15128:18;15120:26;;15192:9;15186:4;15182:20;15178:1;15167:9;15163:17;15156:47;15220:131;15346:4;15220:131;:::i;:::-;15212:139;;14939:419;;;:::o;15364:227::-;15504:34;15500:1;15492:6;15488:14;15481:58;15573:10;15568:2;15560:6;15556:15;15549:35;15364:227;:::o;15597:366::-;15739:3;15760:67;15824:2;15819:3;15760:67;:::i;:::-;15753:74;;15836:93;15925:3;15836:93;:::i;:::-;15954:2;15949:3;15945:12;15938:19;;15597:366;;;:::o;15969:419::-;16135:4;16173:2;16162:9;16158:18;16150:26;;16222:9;16216:4;16212:20;16208:1;16197:9;16193:17;16186:47;16250:131;16376:4;16250:131;:::i;:::-;16242:139;;15969:419;;;:::o;16394:237::-;16534:34;16530:1;16522:6;16518:14;16511:58;16603:20;16598:2;16590:6;16586:15;16579:45;16394:237;:::o;16637:366::-;16779:3;16800:67;16864:2;16859:3;16800:67;:::i;:::-;16793:74;;16876:93;16965:3;16876:93;:::i;:::-;16994:2;16989:3;16985:12;16978:19;;16637:366;;;:::o;17009:419::-;17175:4;17213:2;17202:9;17198:18;17190:26;;17262:9;17256:4;17252:20;17248:1;17237:9;17233:17;17226:47;17290:131;17416:4;17290:131;:::i;:::-;17282:139;;17009:419;;;:::o;17434:230::-;17574:34;17570:1;17562:6;17558:14;17551:58;17643:13;17638:2;17630:6;17626:15;17619:38;17434:230;:::o;17670:366::-;17812:3;17833:67;17897:2;17892:3;17833:67;:::i;:::-;17826:74;;17909:93;17998:3;17909:93;:::i;:::-;18027:2;18022:3;18018:12;18011:19;;17670:366;;;:::o;18042:419::-;18208:4;18246:2;18235:9;18231:18;18223:26;;18295:9;18289:4;18285:20;18281:1;18270:9;18266:17;18259:47;18323:131;18449:4;18323:131;:::i;:::-;18315:139;;18042:419;;;:::o;18467:223::-;18607:34;18603:1;18595:6;18591:14;18584:58;18676:6;18671:2;18663:6;18659:15;18652:31;18467:223;:::o;18696:366::-;18838:3;18859:67;18923:2;18918:3;18859:67;:::i;:::-;18852:74;;18935:93;19024:3;18935:93;:::i;:::-;19053:2;19048:3;19044:12;19037:19;;18696:366;;;:::o;19068:419::-;19234:4;19272:2;19261:9;19257:18;19249:26;;19321:9;19315:4;19311:20;19307:1;19296:9;19292:17;19285:47;19349:131;19475:4;19349:131;:::i;:::-;19341:139;;19068:419;;;:::o;19493:221::-;19633:34;19629:1;19621:6;19617:14;19610:58;19702:4;19697:2;19689:6;19685:15;19678:29;19493:221;:::o;19720:366::-;19862:3;19883:67;19947:2;19942:3;19883:67;:::i;:::-;19876:74;;19959:93;20048:3;19959:93;:::i;:::-;20077:2;20072:3;20068:12;20061:19;;19720:366;;;:::o;20092:419::-;20258:4;20296:2;20285:9;20281:18;20273:26;;20345:9;20339:4;20335:20;20331:1;20320:9;20316:17;20309:47;20373:131;20499:4;20373:131;:::i;:::-;20365:139;;20092:419;;;:::o;20517:239::-;20657:34;20653:1;20645:6;20641:14;20634:58;20726:22;20721:2;20713:6;20709:15;20702:47;20517:239;:::o;20762:366::-;20904:3;20925:67;20989:2;20984:3;20925:67;:::i;:::-;20918:74;;21001:93;21090:3;21001:93;:::i;:::-;21119:2;21114:3;21110:12;21103:19;;20762:366;;;:::o;21134:419::-;21300:4;21338:2;21327:9;21323:18;21315:26;;21387:9;21381:4;21377:20;21373:1;21362:9;21358:17;21351:47;21415:131;21541:4;21415:131;:::i;:::-;21407:139;;21134:419;;;:::o;21559:224::-;21699:34;21695:1;21687:6;21683:14;21676:58;21768:7;21763:2;21755:6;21751:15;21744:32;21559:224;:::o;21789:366::-;21931:3;21952:67;22016:2;22011:3;21952:67;:::i;:::-;21945:74;;22028:93;22117:3;22028:93;:::i;:::-;22146:2;22141:3;22137:12;22130:19;;21789:366;;;:::o;22161:419::-;22327:4;22365:2;22354:9;22350:18;22342:26;;22414:9;22408:4;22404:20;22400:1;22389:9;22385:17;22378:47;22442:131;22568:4;22442:131;:::i;:::-;22434:139;;22161:419;;;:::o;22586:162::-;22726:14;22722:1;22714:6;22710:14;22703:38;22586:162;:::o;22754:366::-;22896:3;22917:67;22981:2;22976:3;22917:67;:::i;:::-;22910:74;;22993:93;23082:3;22993:93;:::i;:::-;23111:2;23106:3;23102:12;23095:19;;22754:366;;;:::o;23126:419::-;23292:4;23330:2;23319:9;23315:18;23307:26;;23379:9;23373:4;23369:20;23365:1;23354:9;23350:17;23343:47;23407:131;23533:4;23407:131;:::i;:::-;23399:139;;23126:419;;;:::o;23551:180::-;23599:77;23596:1;23589:88;23696:4;23693:1;23686:15;23720:4;23717:1;23710:15;23737:185;23777:1;23794:20;23812:1;23794:20;:::i;:::-;23789:25;;23828:20;23846:1;23828:20;:::i;:::-;23823:25;;23867:1;23857:35;;23872:18;;:::i;:::-;23857:35;23914:1;23911;23907:9;23902:14;;23737:185;;;;:::o;23928:410::-;23968:7;23991:20;24009:1;23991:20;:::i;:::-;23986:25;;24025:20;24043:1;24025:20;:::i;:::-;24020:25;;24080:1;24077;24073:9;24102:30;24120:11;24102:30;:::i;:::-;24091:41;;24281:1;24272:7;24268:15;24265:1;24262:22;24242:1;24235:9;24215:83;24192:139;;24311:18;;:::i;:::-;24192:139;23976:362;23928:410;;;;:::o;24344:226::-;24484:34;24480:1;24472:6;24468:14;24461:58;24553:9;24548:2;24540:6;24536:15;24529:34;24344:226;:::o;24576:366::-;24718:3;24739:67;24803:2;24798:3;24739:67;:::i;:::-;24732:74;;24815:93;24904:3;24815:93;:::i;:::-;24933:2;24928:3;24924:12;24917:19;;24576:366;;;:::o;24948:419::-;25114:4;25152:2;25141:9;25137:18;25129:26;;25201:9;25195:4;25191:20;25187:1;25176:9;25172:17;25165:47;25229:131;25355:4;25229:131;:::i;:::-;25221:139;;24948:419;;;:::o;25373:235::-;25513:34;25509:1;25501:6;25497:14;25490:58;25582:18;25577:2;25569:6;25565:15;25558:43;25373:235;:::o;25614:366::-;25756:3;25777:67;25841:2;25836:3;25777:67;:::i;:::-;25770:74;;25853:93;25942:3;25853:93;:::i;:::-;25971:2;25966:3;25962:12;25955:19;;25614:366;;;:::o;25986:419::-;26152:4;26190:2;26179:9;26175:18;26167:26;;26239:9;26233:4;26229:20;26225:1;26214:9;26210:17;26203:47;26267:131;26393:4;26267:131;:::i;:::-;26259:139;;25986:419;;;:::o;26411:170::-;26551:22;26547:1;26539:6;26535:14;26528:46;26411:170;:::o;26587:366::-;26729:3;26750:67;26814:2;26809:3;26750:67;:::i;:::-;26743:74;;26826:93;26915:3;26826:93;:::i;:::-;26944:2;26939:3;26935:12;26928:19;;26587:366;;;:::o;26959:419::-;27125:4;27163:2;27152:9;27148:18;27140:26;;27212:9;27206:4;27202:20;27198:1;27187:9;27183:17;27176:47;27240:131;27366:4;27240:131;:::i;:::-;27232:139;;26959:419;;;:::o;27384:442::-;27533:4;27571:2;27560:9;27556:18;27548:26;;27584:71;27652:1;27641:9;27637:17;27628:6;27584:71;:::i;:::-;27665:72;27733:2;27722:9;27718:18;27709:6;27665:72;:::i;:::-;27747;27815:2;27804:9;27800:18;27791:6;27747:72;:::i;:::-;27384:442;;;;;;:::o;27832:237::-;27972:34;27968:1;27960:6;27956:14;27949:58;28041:20;28036:2;28028:6;28024:15;28017:45;27832:237;:::o;28075:366::-;28217:3;28238:67;28302:2;28297:3;28238:67;:::i;:::-;28231:74;;28314:93;28403:3;28314:93;:::i;:::-;28432:2;28427:3;28423:12;28416:19;;28075:366;;;:::o;28447:419::-;28613:4;28651:2;28640:9;28636:18;28628:26;;28700:9;28694:4;28690:20;28686:1;28675:9;28671:17;28664:47;28728:131;28854:4;28728:131;:::i;:::-;28720:139;;28447:419;;;:::o;28872:225::-;29012:34;29008:1;29000:6;28996:14;28989:58;29081:8;29076:2;29068:6;29064:15;29057:33;28872:225;:::o;29103:366::-;29245:3;29266:67;29330:2;29325:3;29266:67;:::i;:::-;29259:74;;29342:93;29431:3;29342:93;:::i;:::-;29460:2;29455:3;29451:12;29444:19;;29103:366;;;:::o;29475:419::-;29641:4;29679:2;29668:9;29664:18;29656:26;;29728:9;29722:4;29718:20;29714:1;29703:9;29699:17;29692:47;29756:131;29882:4;29756:131;:::i;:::-;29748:139;;29475:419;;;:::o
Swarm Source
ipfs://99d9160d23a2d29b6f374a1654f7cbfb96697bf44b733fe25e160221371c5696
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.