Contract Address Details
contract
token

0xB81AFe27c103bcd42f4026CF719AF6D802928765

Token
Arianee Token Test (ARIA)
Creator
0xd03ea8–89b117 at 0xe0c5cb–6d919e
Balance
0 POA
Tokens
Fetching tokens...
Transactions
Transfers
Gas Used
Last Balance Update
23238542
Contract name:
Aria




Optimization enabled
true
Compiler version
v0.5.6+commit.b259423e




Verified at
2019-06-11 10:06:08.096864Z

Contract source code

// File: @0xcert/ethereum-utils-contracts/src/contracts/math/safe-math.sol
pragma solidity 0.5.6;
/**
* @dev Math operations with safety checks that throw on error. This contract is based on the
* source code at:
* https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol.
*/
library SafeMath
{
/**
* @dev Error constants.
*/
string constant OVERFLOW = "008001";
string constant SUBTRAHEND_GREATER_THEN_MINUEND = "008002";
string constant DIVISION_BY_ZERO = "008003";
/**
* @dev Multiplies two numbers, reverts on overflow.
* @param _factor1 Factor number.
* @param _factor2 Factor number.
* @return The product of the two factors.
*/
function mul(
uint256 _factor1,
uint256 _factor2
)
internal
pure
returns (uint256 product)
{
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (_factor1 == 0)
{
return 0;
}
product = _factor1 * _factor2;
require(product / _factor1 == _factor2, OVERFLOW);
}
/**
* @dev Integer division of two numbers, truncating the quotient, reverts on division by zero.
* @param _dividend Dividend number.
* @param _divisor Divisor number.
* @return The quotient.
*/
function div(
uint256 _dividend,
uint256 _divisor
)
internal
pure
returns (uint256 quotient)
{
// Solidity automatically asserts when dividing by 0, using all gas.
require(_divisor > 0, DIVISION_BY_ZERO);
quotient = _dividend / _divisor;
// assert(_dividend == _divisor * quotient + _dividend % _divisor); // There is no case in which this doesn't hold.
}
/**
* @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
* @param _minuend Minuend number.
* @param _subtrahend Subtrahend number.
* @return Difference.
*/
function sub(
uint256 _minuend,
uint256 _subtrahend
)
internal
pure
returns (uint256 difference)
{
require(_subtrahend <= _minuend, SUBTRAHEND_GREATER_THEN_MINUEND);
difference = _minuend - _subtrahend;
}
/**
* @dev Adds two numbers, reverts on overflow.
* @param _addend1 Number.
* @param _addend2 Number.
* @return Sum.
*/
function add(
uint256 _addend1,
uint256 _addend2
)
internal
pure
returns (uint256 sum)
{
sum = _addend1 + _addend2;
require(sum >= _addend1, OVERFLOW);
}
/**
* @dev Divides two numbers and returns the remainder (unsigned integer modulo), reverts when
* dividing by zero.
* @param _dividend Number.
* @param _divisor Number.
* @return Remainder.
*/
function mod(
uint256 _dividend,
uint256 _divisor
)
internal
pure
returns (uint256 remainder)
{
require(_divisor != 0, DIVISION_BY_ZERO);
remainder = _dividend % _divisor;
}
}
// File: @0xcert/ethereum-utils-contracts/src/contracts/utils/erc165.sol
pragma solidity 0.5.6;
/**
* @dev A standard for detecting smart contract interfaces.
* See: https://eips.ethereum.org/EIPS/eip-165.
*/
interface ERC165
{
/**
* @dev Checks if the smart contract implements a specific interface.
* @notice This function uses less than 30,000 gas.
* @param _interfaceID The interface identifier, as specified in ERC-165.
*/
function supportsInterface(
bytes4 _interfaceID
)
external
view
returns (bool);
}
// File: @0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol
pragma solidity 0.5.6;
/**
* @dev Implementation of standard to publish supported interfaces.
*/
contract SupportsInterface is
ERC165
{
/**
* @dev Mapping of supported intefraces.
* @notice You must not set element 0xffffffff to true.
*/
mapping(bytes4 => bool) internal supportedInterfaces;
/**
* @dev Contract constructor.
*/
constructor()
public
{
supportedInterfaces[0x01ffc9a7] = true; // ERC165
}
/**
* @dev Function to check which interfaces are suported by this contract.
* @param _interfaceID Id of the interface.
*/
function supportsInterface(
bytes4 _interfaceID
)
external
view
returns (bool)
{
return supportedInterfaces[_interfaceID];
}
}
// File: @0xcert/ethereum-erc20-contracts/src/contracts/erc20.sol
pragma solidity 0.5.6;
/**
* @title A standard interface for tokens.
* @dev This interface uses the official ERC-20 specification from
* https://eips.ethereum.org/EIPS/eip-20 with the additional requirement that
* the functions specificed as optional have become required.
*/
interface ERC20
{
/**
* @dev Returns the name of the token.
* @return Token name.
*/
function name()
external
view
returns (string memory _name);
/**
* @dev Returns the symbol of the token.
* @return Token symbol.
*/
function symbol()
external
view
returns (string memory _symbol);
/**
* @dev Returns the number of decimals the token uses.
* @return Number of decimals.
*/
function decimals()
external
view
returns (uint8 _decimals);
/**
* @dev Returns the total token supply.
* @return Total supply.
*/
function totalSupply()
external
view
returns (uint256 _totalSupply);
/**
* @dev Returns the account balance of another account with address _owner.
* @param _owner The address from which the balance will be retrieved.
* @return Balance of _owner.
*/
function balanceOf(
address _owner
)
external
view
returns (uint256 _balance);
/**
* @dev Transfers _value amount of tokens to address _to, and MUST fire the Transfer event. The
* function SHOULD throw if the message caller's account balance does not have enough tokens to
* spend.
* @param _to The address of the recipient.
* @param _value The amount of token to be transferred.
* @return Success of operation.
*/
function transfer(
address _to,
uint256 _value
)
external
returns (bool _success);
/**
* @dev Transfers _value amount of tokens from address _from to address _to, and MUST fire the
* Transfer event.
* @param _from The address of the sender.
* @param _to The address of the recipient.
* @param _value The amount of token to be transferred.
* @return Success of operation.
*/
function transferFrom(
address _from,
address _to,
uint256 _value
)
external
returns (bool _success);
/**
* @dev Allows _spender to withdraw from your account multiple times, up to
* the _value amount. If this function is called again it overwrites the current
* allowance with _value.
* @param _spender The address of the account able to transfer the tokens.
* @param _value The amount of tokens to be approved for transfer.
* @return Success of operation.
*/
function approve(
address _spender,
uint256 _value
)
external
returns (bool _success);
/**
* @dev Returns the amount which _spender is still allowed to withdraw from _owner.
* @param _owner The address of the account owning tokens.
* @param _spender The address of the account able to transfer the tokens.
* @return Remaining allowance.
*/
function allowance(
address _owner,
address _spender
)
external
view
returns (uint256 _remaining);
/**
* @dev Triggers when tokens are transferred, including zero value transfers.
*/
event Transfer(
address indexed _from,
address indexed _to,
uint256 _value
);
/**
* @dev Triggers on any successful call to approve(address _spender, uint256 _value).
*/
event Approval(
address indexed _owner,
address indexed _spender,
uint256 _value
);
}
// File: contracts/Aria.sol
pragma solidity 0.5.6;
/**
* @title ERC20 standard token implementation.
* @dev This interface uses the official ERC-20 specification from
* https://eips.ethereum.org/EIPS/eip-20 and also implements every optional
* function.
*/
contract Aria is
ERC20,
SupportsInterface
{
using SafeMath for uint256;
/**
* @dev Error constants.
*/
string constant NOT_ENOUGH_BALANCE = "001001";
string constant ALLOWANCE_ALREADY_SET = "001002";
string constant NOT_ENOUGH_ALLOWANCE = "001003";
/**
* Token name.
*/
string internal tokenName = "Arianee Token Test";
/**
* Token symbol.
*/
string internal tokenSymbol = "ARIA";
/**
* Number of decimals.
*/
uint8 internal tokenDecimals = 18;
/**
* Total supply of tokens.
*/
uint256 internal tokenTotalSupply= 1000000000000000000000000;
/**
* Balance information map.
*/
mapping (address => uint256) internal balances;
/**
* Token allowance mapping.
*/
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Trigger when tokens are transferred, including zero value transfers.
*/
event Transfer(
address indexed _from,
address indexed _to,
uint256 _value
);
/**
* @dev Trigger on any successful call to approve(address _spender, uint256 _value).
*/
event Approval(
address indexed _owner,
address indexed _spender,
uint256 _value
);
/**
* @dev Contract constructor.
*/
constructor()
public
{
supportedInterfaces[0x36372b07] = true; // ERC20
supportedInterfaces[0x06fdde03] = true; // ERC20 name
supportedInterfaces[0x95d89b41] = true; // ERC20 symbol
supportedInterfaces[0x313ce567] = true; // ERC20 decimals
balances[msg.sender] = tokenTotalSupply;
}
/**
* @notice Returns the name of the token.
* @return Name of the token.
*/
function name()
external
view
returns (string memory _name)
{
_name = tokenName;
}
/**
* @notice Returns the symbol of the token.
* @return Symbol of the token.
*/
function symbol()
external
view
returns (string memory _symbol)
{
_symbol = tokenSymbol;
}
/**
* @notice Returns the number of decimals the token uses.
* @return Decimal of the token.
*/
function decimals()
external
view
returns (uint8 _decimals)
{
_decimals = tokenDecimals;
}
/**
* @notice Returns the total token supply.
* @return Total supply of the token.
*/
function totalSupply()
external
view
returns (uint256 _totalSupply)
{
_totalSupply = tokenTotalSupply;
}
/**
* @notice Returns the account balance of another account with address _owner.
* @param _owner The address from which the balance will be retrieved.
* @return Balance of the given address.
*/
function balanceOf(
address _owner
)
external
view
returns (uint256 _balance)
{
_balance = balances[_owner];
}
/**
* @dev Returns the amount which _spender is still allowed to withdraw from _owner.
* @param _owner The address of the account owning tokens.
* @param _spender The address of the account able to transfer the tokens.
* @return the amount of token the spender is allowed to withdraw.
*/
function allowance(
address _owner,
address _spender
)
external
view
returns (uint256 _remaining)
{
_remaining = allowed[_owner][_spender];
}
/**
* @dev Transfers _value amount of tokens to address _to, and MUST fire the Transfer event. The
* function SHOULD throw if the _from account balance does not have enough tokens to spend.
* @param _to The address of the recipient.
* @param _value The amount of token to be transferred.
* @return true if the transfer succeed.
*/
function transfer(
address _to,
uint256 _value
)
public
returns (bool _success)
{
require(_value <= balances[msg.sender], NOT_ENOUGH_BALANCE);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
_success = true;
}
/**
* @dev Allows _spender to withdraw from your account multiple times, up to the _value amount. If
* this function is called again it overwrites the current allowance with _value.
* @param _spender The address of the account able to transfer the tokens.
* @param _value The amount of tokens to be approved for transfer.
* @return true if the approve succeed.
*/
function approve(
address _spender,
uint256 _value
)
public
returns (bool _success)
{
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
_success = true;
}
/**
* @dev Transfers _value amount of tokens from address _from to address _to, and MUST fire the
* Transfer event.
* @param _from The address of the sender.
* @param _to The address of the recipient.
* @param _value The amount of token to be transferred.
* @return true if the transfer succeed.
*/
function transferFrom(
address _from,
address _to,
uint256 _value
)
public
returns (bool _success)
{
require(_value <= balances[_from], NOT_ENOUGH_BALANCE);
require(_value <= allowed[_from][msg.sender], NOT_ENOUGH_ALLOWANCE);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
_success = true;
}
}

Contract ABI

[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"supportsInterface","inputs":[{"type":"bytes4","name":"_interfaceID"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"_name"}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"_success"}],"name":"approve","inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_totalSupply"}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"_success"}],"name":"transferFrom","inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":"_decimals"}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_balance"}],"name":"balanceOf","inputs":[{"type":"address","name":"_owner"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"_symbol"}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"_success"}],"name":"transfer","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_remaining"}],"name":"allowance","inputs":[{"type":"address","name":"_owner"},{"type":"address","name":"_spender"}],"constant":true},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[]},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"_from","indexed":true},{"type":"address","name":"_to","indexed":true},{"type":"uint256","name":"_value","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"_owner","indexed":true},{"type":"address","name":"_spender","indexed":true},{"type":"uint256","name":"_value","indexed":false}],"anonymous":false}]
            

Contract Creation Code

0x60c0604052601260808190527f417269616e656520546f6b656e2054657374000000000000000000000000000060a090815261003e916001919061019a565b506040805180820190915260048082527f415249410000000000000000000000000000000000000000000000000000000060209092019182526100839160029161019a565b506003805460ff1916601217905569d3c21bcecceda10000006004553480156100ab57600080fd5b507f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c58054600160ff1991821681179092557f9047944217cf7a5a57cc49e67181a64066b571778b37f1b501b5b2483c404e7480548216831790557fda3cefe610fb16fb609e83632d9bfe397c73a53e0e3889c3c671f29203793f8280548216831790557f0648b88cb4f83f2d3a24d50bb67a4b7e9cfc7f04811e84ba831e24e1b44237e280548216831790557f57c3f48cc00ca48466de578a46bac144b80c7e62e6b209102e549439d6cf9afa8054909116909117905560045433600090815260056020526040902055610235565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101db57805160ff1916838001178555610208565b82800160010185558215610208579182015b828111156102085782518255916020019190600101906101ed565b50610214929150610218565b5090565b61023291905b80821115610214576000815560010161021e565b90565b610902806102446000396000f3fe608060405234801561001057600080fd5b50600436106100915760e060020a600035046301ffc9a7811461009657806306fdde03146100d1578063095ea7b31461014e57806318160ddd1461017a57806323b872dd14610194578063313ce567146101ca57806370a08231146101e857806395d89b411461020e578063a9059cbb14610216578063dd62ed3e14610242575b600080fd5b6100bd600480360360208110156100ac57600080fd5b5035600160e060020a031916610270565b604080519115158252519081900360200190f35b6100d961028f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101135781810151838201526020016100fb565b50505050905090810190601f1680156101405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100bd6004803603604081101561016457600080fd5b50600160a060020a038135169060200135610324565b61018261038a565b60408051918252519081900360200190f35b6100bd600480360360608110156101aa57600080fd5b50600160a060020a03813581169160208101359091169060400135610390565b6101d26105ea565b6040805160ff9092168252519081900360200190f35b610182600480360360208110156101fe57600080fd5b5035600160a060020a03166105f3565b6100d961060e565b6100bd6004803603604081101561022c57600080fd5b50600160a060020a03813516906020013561066c565b6101826004803603604081101561025857600080fd5b50600160a060020a0381358116916020013516610790565b600160e060020a03191660009081526020819052604090205460ff1690565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561031a5780601f106102ef5761010080835404028352916020019161031a565b820191906000526020600020905b8154815290600101906020018083116102fd57829003601f168201915b5050505050905090565b336000818152600660209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60045490565b600160a060020a03831660009081526005602090815260408083205481518083019092526006825260d060020a6530303130303102928201929092529083111561045b5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610420578181015183820152602001610408565b50505050905090810190601f16801561044d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600160a060020a038416600090815260066020818152604080842033855282529283902054835180850190945291835260d060020a6530303130303302908301528311156104ee5760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b50600160a060020a038416600090815260056020526040902054610518908363ffffffff6107bb16565b600160a060020a03808616600090815260056020526040808220939093559085168152205461054d908363ffffffff61083916565b600160a060020a038085166000908152600560209081526040808320949094559187168152600682528281203382529091522054610591908363ffffffff6107bb16565b600160a060020a03808616600081815260066020908152604080832033845282529182902094909455805186815290519287169391926000805160206108b7833981519152929181900390910190a35060019392505050565b60035460ff1690565b600160a060020a031660009081526005602052604090205490565b60028054604080516020601f600019610100600187161502019094168590049384018190048102820181019092528281526060939092909183018282801561031a5780601f106102ef5761010080835404028352916020019161031a565b3360009081526005602090815260408083205481518083019092526006825260d060020a653030313030310292820192909252908311156106f15760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b5033600090815260056020526040902054610712908363ffffffff6107bb16565b3360009081526005602052604080822092909255600160a060020a03851681522054610744908363ffffffff61083916565b600160a060020a0384166000818152600560209081526040918290209390935580518581529051919233926000805160206108b78339815191529281900390910190a350600192915050565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b60008282111560405180604001604052806006815260200160d160020a6518181c18181902815250906108325760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b5050900390565b604080518082019091526006815260d060020a6530303830303102602082015282820190838210156108af5760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b509291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820ac9c7d0c63e455d0980a1c608efb09329867c6a92d31510b4e1379af92a8035d0029

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100915760e060020a600035046301ffc9a7811461009657806306fdde03146100d1578063095ea7b31461014e57806318160ddd1461017a57806323b872dd14610194578063313ce567146101ca57806370a08231146101e857806395d89b411461020e578063a9059cbb14610216578063dd62ed3e14610242575b600080fd5b6100bd600480360360208110156100ac57600080fd5b5035600160e060020a031916610270565b604080519115158252519081900360200190f35b6100d961028f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101135781810151838201526020016100fb565b50505050905090810190601f1680156101405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100bd6004803603604081101561016457600080fd5b50600160a060020a038135169060200135610324565b61018261038a565b60408051918252519081900360200190f35b6100bd600480360360608110156101aa57600080fd5b50600160a060020a03813581169160208101359091169060400135610390565b6101d26105ea565b6040805160ff9092168252519081900360200190f35b610182600480360360208110156101fe57600080fd5b5035600160a060020a03166105f3565b6100d961060e565b6100bd6004803603604081101561022c57600080fd5b50600160a060020a03813516906020013561066c565b6101826004803603604081101561025857600080fd5b50600160a060020a0381358116916020013516610790565b600160e060020a03191660009081526020819052604090205460ff1690565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561031a5780601f106102ef5761010080835404028352916020019161031a565b820191906000526020600020905b8154815290600101906020018083116102fd57829003601f168201915b5050505050905090565b336000818152600660209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60045490565b600160a060020a03831660009081526005602090815260408083205481518083019092526006825260d060020a6530303130303102928201929092529083111561045b5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610420578181015183820152602001610408565b50505050905090810190601f16801561044d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600160a060020a038416600090815260066020818152604080842033855282529283902054835180850190945291835260d060020a6530303130303302908301528311156104ee5760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b50600160a060020a038416600090815260056020526040902054610518908363ffffffff6107bb16565b600160a060020a03808616600090815260056020526040808220939093559085168152205461054d908363ffffffff61083916565b600160a060020a038085166000908152600560209081526040808320949094559187168152600682528281203382529091522054610591908363ffffffff6107bb16565b600160a060020a03808616600081815260066020908152604080832033845282529182902094909455805186815290519287169391926000805160206108b7833981519152929181900390910190a35060019392505050565b60035460ff1690565b600160a060020a031660009081526005602052604090205490565b60028054604080516020601f600019610100600187161502019094168590049384018190048102820181019092528281526060939092909183018282801561031a5780601f106102ef5761010080835404028352916020019161031a565b3360009081526005602090815260408083205481518083019092526006825260d060020a653030313030310292820192909252908311156106f15760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b5033600090815260056020526040902054610712908363ffffffff6107bb16565b3360009081526005602052604080822092909255600160a060020a03851681522054610744908363ffffffff61083916565b600160a060020a0384166000818152600560209081526040918290209390935580518581529051919233926000805160206108b78339815191529281900390910190a350600192915050565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b60008282111560405180604001604052806006815260200160d160020a6518181c18181902815250906108325760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b5050900390565b604080518082019091526006815260d060020a6530303830303102602082015282820190838210156108af5760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315610420578181015183820152602001610408565b509291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820ac9c7d0c63e455d0980a1c608efb09329867c6a92d31510b4e1379af92a8035d0029