Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 4,517 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Trade | 7117925 | 2616 days ago | IN | 0 ETH | 0.00294519 | ||||
| Trade | 7117709 | 2616 days ago | IN | 0 ETH | 0.00279381 | ||||
| Trade | 7117685 | 2616 days ago | IN | 0 ETH | 0.00284682 | ||||
| Trade | 7117442 | 2616 days ago | IN | 0 ETH | 0.00107932 | ||||
| User Repay | 7117029 | 2616 days ago | IN | 0 ETH | 0.00087645 | ||||
| User Repay | 7117028 | 2616 days ago | IN | 0 ETH | 0.00099193 | ||||
| User Repay | 7117026 | 2616 days ago | IN | 0 ETH | 0.00100344 | ||||
| User Repay | 7117024 | 2616 days ago | IN | 0 ETH | 0.00101966 | ||||
| Trade | 7117009 | 2616 days ago | IN | 0 ETH | 0.00176614 | ||||
| Trade | 7116667 | 2616 days ago | IN | 0 ETH | 0.00231409 | ||||
| User Repay | 7116185 | 2616 days ago | IN | 0 ETH | 0.00097548 | ||||
| User Repay | 7116183 | 2616 days ago | IN | 0 ETH | 0.00105267 | ||||
| User Repay | 7116182 | 2616 days ago | IN | 0 ETH | 0.00106045 | ||||
| User Repay | 7116180 | 2616 days ago | IN | 0 ETH | 0.00106863 | ||||
| User Repay | 7116178 | 2616 days ago | IN | 0 ETH | 0.00111787 | ||||
| Trade | 7115715 | 2616 days ago | IN | 0 ETH | 0.0030889 | ||||
| Trade | 7115618 | 2616 days ago | IN | 0 ETH | 0.00294665 | ||||
| Trade | 7115473 | 2616 days ago | IN | 0 ETH | 0.00115997 | ||||
| Trade | 7115369 | 2616 days ago | IN | 0 ETH | 0.00170942 | ||||
| User Repay | 7115355 | 2616 days ago | IN | 0 ETH | 0.00101647 | ||||
| User Repay | 7115352 | 2616 days ago | IN | 0 ETH | 0.0010524 | ||||
| User Repay | 7115350 | 2616 days ago | IN | 0 ETH | 0.00108513 | ||||
| Trade | 7114928 | 2617 days ago | IN | 0 ETH | 0.00176774 | ||||
| User Repay | 7114925 | 2617 days ago | IN | 0 ETH | 0.00064117 | ||||
| Trade | 7114916 | 2617 days ago | IN | 0 ETH | 0.00176704 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BiLinkLoan
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-10-31
*/
pragma solidity ^0.4.13;
contract IToken {
/// @notice send `_value` token to `_to` from `msg.sender`
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transfer(address _to, uint256 _value) public returns (bool success);
/// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
/// @param _from The address of the sender
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
function approve(address _spender, uint256 _value) public returns (bool success);
}
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
return c;
}
/**
* @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
}
contract Ownable
{
address public owner;
constructor(address _owner) public
{
owner = _owner;
}
modifier onlyOwner()
{
require(msg.sender == owner);
_;
}
function transferOwnership(address newOwner) onlyOwner
{
require(newOwner != address(0));
owner = newOwner;
}
}
contract BiLinkLoan is Ownable {
using SafeMath for uint256;
address public contractLoanLogic;
address public contractBalance;
address public contractMarketData;
address public accountCost;
uint256 public commissionRatio;//percentage
mapping (address => mapping ( bytes32 => uint256)) public account2Order2TradeAmount;
mapping (address => mapping (address => uint16)) public tokenPledgeRatio;//pledge 2 borrow percentage
bool public isLegacy;//if true, not allow new trade,new deposit
event OnTrade(bytes32 guid,address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountPledge, uint256 amountInterest, uint256 amountBorrow, uint256 timestamp);
event OnUserRepay(uint256 id, address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountPledge, uint256 amountOriginInterest, uint256 amountActualInterest
, uint256 amountRepaied, uint256 amountRepaiedPledgeToken, uint256 timestamp);
event OnForceRepay(uint256 id, address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountPledge, uint256 amountOriginInterest, uint256 amountActualInterest
, uint256 amountRepaied, uint256 amountRepaiedPledgeToken, uint256 timestamp);
event OnLossCompensated(address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountLoss, uint256 amountCompensated, uint256 timestamp);
event OnLossCompensatedByAssurance(address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountLoss, uint256 amountCompensated, uint256 timestamp);
constructor(address _owner, address _accountCost, address _contractLoanLogic, address _contractMarketData, uint256 _commissionRatio) public Ownable(_owner) {
contractLoanLogic= _contractLoanLogic;
contractMarketData= _contractMarketData;
isLegacy= false;
commissionRatio= _commissionRatio;
accountCost= _accountCost;
}
function setTokenPledgeRatio(address[] _pledgeTokens, address[] _borrowTokens, uint16[] _ratioPledges) public onlyOwner {
for(uint256 i= 0; i< _pledgeTokens.length; i++) {
tokenPledgeRatio[_pledgeTokens[i]][_borrowTokens[i]]= _ratioPledges[i];
}
}
function setThisContractAsLegacy() public onlyOwner {
isLegacy= true;
}
function setBalanceContract(address _contractBalance) public onlyOwner {
contractBalance= _contractBalance;
}
//_arr1:tokenPledge,tokenBorrow,borrower,lender
//_arr2:amountOrigin,amountInterest,periodDays,expireTime,amountTake
//_arr3:rMaker,sMaker
function trade(address[] _arr1, uint256[] _arr2, bool _borrowOrLend, bytes32 _guid, uint8 _vMaker, bytes32[] _arr3) public {
require(isLegacy== false&& _arr2[4]<= _arr2[0]&& verifyInput( _arr1, _arr2, _borrowOrLend, _vMaker, _arr3)&& tokenPledgeRatio[_arr1[0]][_arr1[1]]> 0);
if(_borrowOrLend)
require(msg.sender== _arr1[2]);
else
require(msg.sender== _arr1[3]);
uint256 amountPledge= ILoanLogic(contractLoanLogic).getPledgeAmount(_arr1[0], _arr1[1], _arr2[4], tokenPledgeRatio[_arr1[0]][_arr1[1]]);
require(amountPledge!= 0);
uint256 amountInterest = amountPledge.mul(_arr2[1]).mul(_arr2[2]).mul(100).div(tokenPledgeRatio[_arr1[0]][_arr1[1]]).div(100000);
require(amountPledge.add(amountInterest)<= IBalance(contractBalance).getAvailableBalance(_arr1[0], _arr1[2])&&_arr2[4]<= IBalance(contractBalance).getAvailableBalance(_arr1[1], _arr1[3]));
IBalance(contractBalance).modifyBalance(_arr1[3], _arr1[1], _arr2[4], false);
IBalance(contractBalance).modifyBalance(_arr1[2], _arr1[1], _arr2[4], true);
require(ILoanLogic(contractLoanLogic).updateDataAfterTrade(_arr1[0], _arr1[1], _arr1[2], _arr1[3], _arr2[4], amountPledge, amountInterest, _arr2[2]));
emit OnTrade(_guid, _arr1[0], _arr1[1], _arr1[2], _arr1[3], amountPledge, amountInterest, _arr2[4], now);
}
function verifyInput( address[] _arr1, uint256[] _arr2, bool _borrowOrLend, uint8 _vMaker, bytes32[] _arr3) private returns (bool) {
require(now <= _arr2[3]);
address _accountPledgeAssurance= IBalance(contractBalance).getTokenAssuranceAccount(_arr1[0]);
address _accountBorrowAssurance= IBalance(contractBalance).getTokenAssuranceAccount(_arr1[1]);
require(_accountPledgeAssurance!= _arr1[2]&& _accountPledgeAssurance!= _arr1[3]&& _accountBorrowAssurance!= _arr1[2]&& _accountBorrowAssurance!= _arr1[3]);
bytes32 _hash= keccak256(abi.encodePacked(this, _arr1[0], _arr1[1], _arr2[1], _arr2[2], _arr2[3]));
require(ecrecover(_hash, _vMaker, _arr3[0], _arr3[1]) == (_borrowOrLend? _arr1[3] : _arr1[2]));
if(_borrowOrLend) {
require(account2Order2TradeAmount[_arr1[3]][_hash].add(_arr2[4])<= _arr2[0]);
account2Order2TradeAmount[_arr1[3]][_hash]= account2Order2TradeAmount[_arr1[3]][_hash].add(_arr2[4]);
}
else {
require(account2Order2TradeAmount[_arr1[2]][_hash].add(_arr2[4])<= _arr2[0]);
account2Order2TradeAmount[_arr1[2]][_hash]= account2Order2TradeAmount[_arr1[2]][_hash].add(_arr2[4]);
}
return true;
}
function getNeedRepayPledgeTokenAmount(uint256 _amountUnRepaiedPledgeTokenAmount, address _pledgeToken, address _borrowToken) private returns (uint256) {
return _amountUnRepaiedPledgeTokenAmount.mul((tokenPledgeRatio[_pledgeToken][_borrowToken] - 100)/4 + 100).div(100);
}
function doRepay(uint256 _id, bool _userOrForce) private {
var (_tokenPledge,_tokenBorrow,_borrower,_lender)= ILoanLogic(contractLoanLogic).getLoanDataPart(_id);
require(_borrower!= address(0));
uint256 _available= IBalance(contractBalance).getAvailableBalance(_tokenBorrow, _borrower);
var (_amount, _amountOriginInterest, _amountActualInterest,_amountUnRepaiedAmount, _amountPledge)= ILoanLogic(contractLoanLogic).updateDataAfterRepay(_id, _available);
require(_amount!= 0);
uint256 _amountUnRepaiedPledgeToken= tryCompensateLossByAssurance(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountPledge, _amountUnRepaiedAmount);
_available= IBalance(contractBalance).getAvailableBalance(_tokenBorrow, _borrower);
uint256 _amountRepaiedPledgeToken= getNeedRepayPledgeTokenAmount(_amountUnRepaiedPledgeToken, _tokenPledge, _tokenBorrow);
adjustBalancesAfterRepay(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountActualInterest, (_amountRepaiedPledgeToken< _amountPledge? _amountRepaiedPledgeToken: _amountPledge), (_available> _amount? _amount: _available)
, (_amountUnRepaiedPledgeToken > _amountPledge? _amountUnRepaiedPledgeToken - _amountPledge: 0));
if(_userOrForce)
emit OnUserRepay(_id, _tokenPledge, _tokenBorrow, _borrower, _lender, _amountPledge, _amountOriginInterest, _amountActualInterest, _amount, _amountRepaiedPledgeToken, now);
else
emit OnForceRepay(_id, _tokenPledge, _tokenBorrow, _borrower, _lender, _amountPledge, _amountOriginInterest, _amountActualInterest, _amount, _amountRepaiedPledgeToken, now);
}
function tryCompensateLossByAssurance(address _tokenPledge, address _tokenBorrow, address _borrower, address _lender, uint256 _amountPledge, uint256 _amountUnRepaiedAmount) private returns (uint256) {
uint256 _amountUnRepaiedPledgeToken= 0;
address _accountAssurance= IBalance(contractBalance).getTokenAssuranceAccount(_tokenBorrow);
uint256 _available= IBalance(contractBalance).getAvailableBalance(_tokenBorrow, _accountAssurance);
(uint256 _num, uint256 _denom)= IMarketData(contractMarketData).getTokenExchangeRatio(_tokenPledge, _tokenBorrow);
uint256 _equalAmount= _amountPledge.mul(_denom).div(_num);
if(_amountUnRepaiedAmount > _equalAmount&& _available> 0) {
uint256 _actualCompensatedAmountByAssurance= _amountUnRepaiedAmount.sub(_equalAmount);
if(_available< _amountUnRepaiedAmount)
_actualCompensatedAmountByAssurance= _available;
IBalance(contractBalance).modifyBalance(_accountAssurance, _tokenBorrow, _actualCompensatedAmountByAssurance, false);
IBalance(contractBalance).modifyBalance(_borrower, _tokenBorrow, _actualCompensatedAmountByAssurance, true);
emit OnLossCompensatedByAssurance(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountUnRepaiedAmount, _actualCompensatedAmountByAssurance, now);
_amountUnRepaiedAmount= _amountUnRepaiedAmount.sub(_actualCompensatedAmountByAssurance);
}
_amountUnRepaiedPledgeToken= _amountUnRepaiedAmount.mul(_num).div(_denom);
return _amountUnRepaiedPledgeToken;
}
function userRepay(uint256 _id) public {
var (_tokenPledge, _tokenBorrow, _borrower, _lender)= ILoanLogic(contractLoanLogic).getLoanDataPart(_id);
require(msg.sender == _borrower);
doRepay(_id, true);
}
function forceRepay(uint256[] _arr) public onlyOwner {
for(uint256 i= 0; i< _arr.length; i++) {
if(ILoanLogic(contractLoanLogic).needForceClose(_arr[i])) {
doRepay(_arr[i], false);
}
}
}
function adjustBalancesAfterRepay(address _tokenPledge, address _tokenBorrow, address _borrower, address _lender, uint256 _amountActualInterest, uint256 _amountRepaiedPeldgeToken, uint256 _amountRepaiedBorrowToken, uint256 _amountLoss) private {
uint256 _amountProfit= (_amountActualInterest.mul(commissionRatio))/ 100;
IBalance(contractBalance).modifyBalance(_borrower, _tokenPledge, _amountRepaiedPeldgeToken.add(_amountActualInterest), false);
IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, _amountActualInterest.sub(_amountProfit), true);
if(_amountRepaiedBorrowToken> 0) {
IBalance(contractBalance).modifyBalance(_borrower, _tokenBorrow, _amountRepaiedBorrowToken, false);
IBalance(contractBalance).modifyBalance(_lender, _tokenBorrow, _amountRepaiedBorrowToken, true);
}
if(_amountLoss> 0) {
if(IBalance(contractBalance).getAvailableBalance(_tokenPledge, accountCost)/ 10> _amountLoss) {
IBalance(contractBalance).modifyBalance(accountCost, _tokenPledge, _amountLoss, false);
IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, _amountLoss, true);
emit OnLossCompensated(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountLoss, _amountLoss, now);
}
else {
uint256 uActualPaiedLoss= IBalance(contractBalance).getAvailableBalance(_tokenPledge, accountCost)/ 10;
IBalance(contractBalance).modifyBalance(accountCost, _tokenPledge, uActualPaiedLoss, false);
IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, uActualPaiedLoss, true);
emit OnLossCompensated(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountLoss, uActualPaiedLoss, now);
}
}
IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, _amountRepaiedPeldgeToken, true);
if(_tokenPledge== address(0)) {
IBalance(contractBalance).distributeEthProfit(_lender, _amountProfit);
}
else {
IBalance(contractBalance).distributeTokenProfit(_lender, _tokenPledge, _amountProfit);
}
}
}
contract ILoanLogic {
function setTokenExchangeRatio(address[] tokenPledge, address[] tokenBorrow, uint256[] amountDenom, uint256[] amountNum) public returns (bool);
function getPledgeAmount(address tokenPledge, address tokenBorrow, uint256 amount,uint16 ratioPledge) public constant returns (uint256);
function updateDataAfterTrade(address tokenPledge, address tokenBorrow, address borrower, address lender,
uint256 amountPledge, uint256 amount, uint256 amountInterest, uint256 periodDays) public returns(bool);
function updateDataAfterRepay(uint256 id, uint256 uBorrowerAvailableAmount) public returns (uint256, uint256, uint256, uint256, uint256);
function getLoanDataPart(uint256 id) public constant returns (address, address, address, address);
function needForceClose(uint256 id) public constant returns (bool);
}
contract IMarketData {
function getTokenExchangeRatio(address _tokenNum, address _tokenDenom) public returns (uint256 num, uint256 denom);
}
contract IBalance {
function distributeEthProfit(address profitMaker, uint256 amount) public ;
function distributeTokenProfit (address profitMaker, address token, uint256 amount) public ;
function modifyBalance(address _account, address _token, uint256 _amount, bool _addOrSub) public;
function getAvailableBalance(address _token, address _account) public constant returns (uint256);
function getTokenAssuranceAccount(address _token) public constant returns (address);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"contractMarketData","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"accountCost","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setThisContractAsLegacy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokenPledgeRatio","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pledgeTokens","type":"address[]"},{"name":"_borrowTokens","type":"address[]"},{"name":"_ratioPledges","type":"uint16[]"}],"name":"setTokenPledgeRatio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractLoanLogic","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"userRepay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contractBalance","type":"address"}],"name":"setBalanceContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractBalance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_arr1","type":"address[]"},{"name":"_arr2","type":"uint256[]"},{"name":"_borrowOrLend","type":"bool"},{"name":"_guid","type":"bytes32"},{"name":"_vMaker","type":"uint8"},{"name":"_arr3","type":"bytes32[]"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_arr","type":"uint256[]"}],"name":"forceRepay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"account2Order2TradeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"commissionRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isLegacy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_accountCost","type":"address"},{"name":"_contractLoanLogic","type":"address"},{"name":"_contractMarketData","type":"address"},{"name":"_commissionRatio","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"guid","type":"bytes32"},{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountPledge","type":"uint256"},{"indexed":false,"name":"amountInterest","type":"uint256"},{"indexed":false,"name":"amountBorrow","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountPledge","type":"uint256"},{"indexed":false,"name":"amountOriginInterest","type":"uint256"},{"indexed":false,"name":"amountActualInterest","type":"uint256"},{"indexed":false,"name":"amountRepaied","type":"uint256"},{"indexed":false,"name":"amountRepaiedPledgeToken","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnUserRepay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountPledge","type":"uint256"},{"indexed":false,"name":"amountOriginInterest","type":"uint256"},{"indexed":false,"name":"amountActualInterest","type":"uint256"},{"indexed":false,"name":"amountRepaied","type":"uint256"},{"indexed":false,"name":"amountRepaiedPledgeToken","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnForceRepay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountLoss","type":"uint256"},{"indexed":false,"name":"amountCompensated","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnLossCompensated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountLoss","type":"uint256"},{"indexed":false,"name":"amountCompensated","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnLossCompensatedByAssurance","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b5060405160a080614c0e833981018060405281019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548160ff0219169083151502179055508060058190555083600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050614a78806101966000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fc77e2d146100eb57806330b2079b14610142578063313cb4dd14610199578063365e78f7146101b05780634e3a67741461022f57806357a299b91461031b57806374edab5a14610372578063898786ac1461039f5780638b7afe2e146103e25780638da5cb5b146104395780639353d0f1146104905780639dab5308146105a3578063a2ba6ef814610609578063bc3dfaf11461066e578063ca5e1f8d14610699578063f2fde38b146106c8575b600080fd5b3480156100f757600080fd5b5061010061070b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014e57600080fd5b50610157610731565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610757565b005b3480156101bc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107cf565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561023b57600080fd5b506103196004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107ff565b005b34801561032757600080fd5b50610330610959565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037e57600080fd5b5061039d6004803603810190808035906020019092919050505061097f565b005b3480156103ab57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ac3565b005b3480156103ee57600080fd5b506103f7610b62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044557600080fd5b5061044e610b88565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049c57600080fd5b506105a160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291908035600019169060200190929190803560ff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bad565b005b3480156105af57600080fd5b5061060760048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611b0b565b005b34801561061557600080fd5b50610658600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c92565b6040518082815260200191505060405180910390f35b34801561067a57600080fd5b50610683611cb7565b6040518082815260200191505060405180910390f35b3480156106a557600080fd5b506106ae611cbd565b604051808215151515815260200191505060405180910390f35b3480156106d457600080fd5b50610709600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd0565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107b257600080fd5b6001600860006101000a81548160ff021916908315150217905550565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900461ffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085c57600080fd5b600090505b835181101561095357818181518110151561087857fe5b9060200190602002015160076000868481518110151561089457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811015156108e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055508080600101915050610861565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359028853866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015610a1657600080fd5b505af1158015610a2a573d6000803e3d6000fd5b505050506040513d6080811015610a4057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505093509350935093508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab157600080fd5b610abc856001611daa565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b1e57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060001515600860009054906101000a900460ff161515148015610c035750866000815181101515610bdd57fe5b90602001906020020151876004815181101515610bf657fe5b9060200190602002015111155b8015610c185750610c178888888787612540565b5b8015610ce257506000600760008a6000815181101515610c3457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a6001815181101515610c8957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff16115b1515610ced57600080fd5b8515610d4a57876002815181101515610d0257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4557600080fd5b610d9d565b876003815181101515610d5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9c57600080fd5b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637afc964c896000815181101515610dea57fe5b906020019060200201518a6001815181101515610e0357fe5b906020019060200201518a6004815181101515610e1c57fe5b90602001906020020151600760008e6000815181101515610e3957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e6001815181101515610e8e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff166040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018261ffff1661ffff168152602001945050505050602060405180830381600087803b158015610fa857600080fd5b505af1158015610fbc573d6000803e3d6000fd5b505050506040513d6020811015610fd257600080fd5b8101908080519060200190929190505050915060008214151515610ff557600080fd5b611142620186a0611134600760008c600081518110151561101257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c600181518110151561106757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661112660646111188d60028151811015156110d557fe5b9060200190602002015161110a8f60018151811015156110f157fe5b906020019060200201518b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612fc990919063ffffffff16565b612fc990919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600081518110151561119157fe5b906020019060200201518a60028151811015156111aa57fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d602081101561128f57600080fd5b81019080805190602001909291905050506112b38284612ff390919063ffffffff16565b111580156114345750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600181518110151561130957fe5b906020019060200201518a600381518110151561132257fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156113dd57600080fd5b505af11580156113f1573d6000803e3d6000fd5b505050506040513d602081101561140757600080fd5b810190808051906020019092919050505087600481518110151561142757fe5b9060200190602002015111155b151561143f57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c9689600381518110151561148c57fe5b906020019060200201518a60018151811015156114a557fe5b906020019060200201518a60048151811015156114be57fe5b9060200190602002015160006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561158d57600080fd5b505af11580156115a1573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968960028151811015156115f257fe5b906020019060200201518a600181518110151561160b57fe5b906020019060200201518a600481518110151561162457fe5b9060200190602002015160016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1de44e189600081518110151561175857fe5b906020019060200201518a600181518110151561177157fe5b906020019060200201518b600281518110151561178a57fe5b906020019060200201518c60038151811015156117a357fe5b906020019060200201518c60048151811015156117bc57fe5b9060200190602002015188888f60028151811015156117d757fe5b906020019060200201516040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200182815260200198505050505050505050602060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b505050506040513d602081101561193e57600080fd5b8101908080519060200190929190505050151561195a57600080fd5b7fb22aa78ea09a55aa3481a2ccab361989913e9aa97cd6d9cbce9a7666279758a88589600081518110151561198b57fe5b906020019060200201518a60018151811015156119a457fe5b906020019060200201518b60028151811015156119bd57fe5b906020019060200201518c60038151811015156119d657fe5b9060200190602002015187878e60048151811015156119f157fe5b9060200190602002015142604051808a600019166000191681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390a15050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b6857600080fd5b600090505b8151811015611c8e57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663264a8d2e8383815181101515611bc257fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611c1e57600080fd5b505af1158015611c32573d6000803e3d6000fd5b505050506040513d6020811015611c4857600080fd5b810190808051906020019092919050505015611c8157611c808282815181101515611c6f57fe5b906020019060200201516000611daa565b5b8080600101915050611b6d565b5050565b6006602052816000526040600020602052806000526040600020600091509150505481565b60055481565b600860009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d2b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d6757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663590288538f6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d6080811015611e7757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509b509b509b509b50600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515611eea57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611fdb57600080fd5b505af1158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b81019080805190602001909291905050509750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663104584548f8a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060a060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b505050506040513d60a08110156120db57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096506000871415151561212e57600080fd5b61213c8c8c8c8c8789613014565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d602081101561225957600080fd5b81019080805190602001909291905050509750612277828d8d613785565b90506122b68c8c8c8c8988871061228e5788612290565b865b8d8f1161229d578e61229f565b8d5b8a8a116122ad5760006122b1565b8a8a035b61385a565b8c156123f8577f0889e4048b5afe70ea6de8592cfc535605f946ca5e5f1743b2b22f83e00d7eaf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1612530565b7fee77b01bcc1a819fe9856426fe7572f4583ed925dc8e2766babe3e12258fefbf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b5050505050505050505050505050565b60008060008087600381518110151561255557fe5b90602001906020020151421115151561256d57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60008151811015156125ba57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506040513d602081101561266c57600080fd5b81019080805190602001909291905050509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60018151811015156126cc57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561275457600080fd5b505af1158015612768573d6000803e3d6000fd5b505050506040513d602081101561277e57600080fd5b810190808051906020019092919050505091508860028151811015156127a057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282957508860038151811015156127ef57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612879575088600281518110151561283f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c9575088600381518110151561288f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156128d457600080fd5b308960008151811015156128e457fe5b906020019060200201518a60018151811015156128fd57fe5b906020019060200201518a600181518110151561291657fe5b906020019060200201518b600281518110151561292f57fe5b906020019060200201518c600381518110151561294857fe5b90602001906020020151604051602001808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515612a7a5780518252602082019150602081019050602083039250612a55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905086612acc57886002815181101515612abd57fe5b90602001906020020151612ae6565b886003815181101515612adb57fe5b906020019060200201515b73ffffffffffffffffffffffffffffffffffffffff1660018288886000815181101515612b0f57fe5b90602001906020020151896001815181101515612b2857fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612ba3573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16141515612bcf57600080fd5b8615612daa57876000815181101515612be457fe5b90602001906020020151612c89896004815181101515612c0057fe5b90602001906020020151600660008d6003815181101515612c1d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612c9657600080fd5b612d31886004815181101515612ca857fe5b90602001906020020151600660008c6003815181101515612cc557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6003815181101515612d4457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002081905550612f7b565b876000815181101515612db957fe5b90602001906020020151612e5e896004815181101515612dd557fe5b90602001906020020151600660008d6002815181101515612df257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612e6b57600080fd5b612f06886004815181101515612e7d57fe5b90602001906020020151600660008c6002815181101515612e9a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6002815181101515612f1957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055505b6001935050505095945050505050565b6000806000841415612fa05760009150612fc2565b8284029050828482811515612fb157fe5b04141515612fbe57600080fd5b8091505b5092915050565b600080600083111515612fdb57600080fd5b8284811515612fe657fe5b0490508091505092915050565b600080828401905083811015151561300a57600080fd5b8091505092915050565b60008060008060008060008060009650600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156130e157600080fd5b505af11580156130f5573d6000803e3d6000fd5b505050506040513d602081101561310b57600080fd5b81019080805190602001909291905050509550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738e886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561320f57600080fd5b505af1158015613223573d6000803e3d6000fd5b505050506040513d602081101561323957600080fd5b81019080805190602001909291905050509450600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c07b2ca8f8f6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561333c57600080fd5b505af1158015613350573d6000803e3d6000fd5b505050506040513d604081101561336657600080fd5b810190808051906020019092919080519060200190929190505050935093506133aa8461339c858d612f8b90919063ffffffff16565b612fc990919063ffffffff16565b915081891180156133bb5750600085115b1561374a576133d3828a614a3090919063ffffffff16565b9050888510156133e1578490505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96878f8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156134e757600080fd5b505af11580156134fb573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968d8f8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b505050507ff069b0bcbba7c248c8393101cb8c3f02c2bef79af362e9ded7bdda48f59f5d798e8e8e8e8d8642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a1613747818a614a3090919063ffffffff16565b98505b61376f83613761868c612f8b90919063ffffffff16565b612fc990919063ffffffff16565b9650869750505050505050509695505050505050565b60006138516064613843606460046064600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff160361ffff1681151561382e57fe5b040161ffff1687612f8b90919063ffffffff16565b612fc990919063ffffffff16565b90509392505050565b600080606461387460055488612f8b90919063ffffffff16565b81151561387d57fe5b049150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898c6138d38a8a612ff390919063ffffffff16565b60006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561399857600080fd5b505af11580156139ac573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c613a03868b614a3090919063ffffffff16565b60016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613ac857600080fd5b505af1158015613adc573d6000803e3d6000fd5b505050506000841115613d2657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898b8760006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613bef57600080fd5b505af1158015613c03573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888b8760016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613d0d57600080fd5b505af1158015613d21573d6000803e3d6000fd5b505050505b60008311156146dd5782600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015613e4557600080fd5b505af1158015613e59573d6000803e3d6000fd5b505050506040513d6020811015613e6f57600080fd5b8101908080519060200190929190505050811515613e8957fe5b04111561420a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613fb857600080fd5b505af1158015613fcc573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8660016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878842604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a16146dc565b600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561431f57600080fd5b505af1158015614333573d6000803e3d6000fd5b505050506040513d602081101561434957600080fd5b810190808051906020019092919050505081151561436357fe5b049050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156145ac57600080fd5b505af11580156145c0573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a15b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8860016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156147e357600080fd5b505af11580156147f7573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561491257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb2e379a88846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156148f557600080fd5b505af1158015614909573d6000803e3d6000fd5b50505050614a24565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757060a5888c856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015614a0b57600080fd5b505af1158015614a1f573d6000803e3d6000fd5b505050505b50505050505050505050565b6000828211151515614a4157600080fd5b8183039050929150505600a165627a7a72305820b4ffeaa5a3996c0cc81778e808d5c5bbc7fd5bac2c0abb6a7b7ae91bfca918cb0029000000000000000000000000e4e3627034a97b75d899ee7525d446bf2d42ad6600000000000000000000000019350aa51f45965b783ec8e40538d4b88d24698a000000000000000000000000aea870ca4ad2ee820050124a7580e78176d9c806000000000000000000000000611ce695290729805e138c9c14dbddf132e76de3000000000000000000000000000000000000000000000000000000000000000a
Deployed Bytecode
0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fc77e2d146100eb57806330b2079b14610142578063313cb4dd14610199578063365e78f7146101b05780634e3a67741461022f57806357a299b91461031b57806374edab5a14610372578063898786ac1461039f5780638b7afe2e146103e25780638da5cb5b146104395780639353d0f1146104905780639dab5308146105a3578063a2ba6ef814610609578063bc3dfaf11461066e578063ca5e1f8d14610699578063f2fde38b146106c8575b600080fd5b3480156100f757600080fd5b5061010061070b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014e57600080fd5b50610157610731565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610757565b005b3480156101bc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107cf565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561023b57600080fd5b506103196004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107ff565b005b34801561032757600080fd5b50610330610959565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037e57600080fd5b5061039d6004803603810190808035906020019092919050505061097f565b005b3480156103ab57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ac3565b005b3480156103ee57600080fd5b506103f7610b62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044557600080fd5b5061044e610b88565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049c57600080fd5b506105a160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291908035600019169060200190929190803560ff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bad565b005b3480156105af57600080fd5b5061060760048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611b0b565b005b34801561061557600080fd5b50610658600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c92565b6040518082815260200191505060405180910390f35b34801561067a57600080fd5b50610683611cb7565b6040518082815260200191505060405180910390f35b3480156106a557600080fd5b506106ae611cbd565b604051808215151515815260200191505060405180910390f35b3480156106d457600080fd5b50610709600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd0565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107b257600080fd5b6001600860006101000a81548160ff021916908315150217905550565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900461ffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085c57600080fd5b600090505b835181101561095357818181518110151561087857fe5b9060200190602002015160076000868481518110151561089457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811015156108e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055508080600101915050610861565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359028853866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015610a1657600080fd5b505af1158015610a2a573d6000803e3d6000fd5b505050506040513d6080811015610a4057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505093509350935093508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab157600080fd5b610abc856001611daa565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b1e57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060001515600860009054906101000a900460ff161515148015610c035750866000815181101515610bdd57fe5b90602001906020020151876004815181101515610bf657fe5b9060200190602002015111155b8015610c185750610c178888888787612540565b5b8015610ce257506000600760008a6000815181101515610c3457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a6001815181101515610c8957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff16115b1515610ced57600080fd5b8515610d4a57876002815181101515610d0257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4557600080fd5b610d9d565b876003815181101515610d5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9c57600080fd5b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637afc964c896000815181101515610dea57fe5b906020019060200201518a6001815181101515610e0357fe5b906020019060200201518a6004815181101515610e1c57fe5b90602001906020020151600760008e6000815181101515610e3957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e6001815181101515610e8e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff166040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018261ffff1661ffff168152602001945050505050602060405180830381600087803b158015610fa857600080fd5b505af1158015610fbc573d6000803e3d6000fd5b505050506040513d6020811015610fd257600080fd5b8101908080519060200190929190505050915060008214151515610ff557600080fd5b611142620186a0611134600760008c600081518110151561101257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c600181518110151561106757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661112660646111188d60028151811015156110d557fe5b9060200190602002015161110a8f60018151811015156110f157fe5b906020019060200201518b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612fc990919063ffffffff16565b612fc990919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600081518110151561119157fe5b906020019060200201518a60028151811015156111aa57fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d602081101561128f57600080fd5b81019080805190602001909291905050506112b38284612ff390919063ffffffff16565b111580156114345750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600181518110151561130957fe5b906020019060200201518a600381518110151561132257fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156113dd57600080fd5b505af11580156113f1573d6000803e3d6000fd5b505050506040513d602081101561140757600080fd5b810190808051906020019092919050505087600481518110151561142757fe5b9060200190602002015111155b151561143f57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c9689600381518110151561148c57fe5b906020019060200201518a60018151811015156114a557fe5b906020019060200201518a60048151811015156114be57fe5b9060200190602002015160006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561158d57600080fd5b505af11580156115a1573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968960028151811015156115f257fe5b906020019060200201518a600181518110151561160b57fe5b906020019060200201518a600481518110151561162457fe5b9060200190602002015160016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1de44e189600081518110151561175857fe5b906020019060200201518a600181518110151561177157fe5b906020019060200201518b600281518110151561178a57fe5b906020019060200201518c60038151811015156117a357fe5b906020019060200201518c60048151811015156117bc57fe5b9060200190602002015188888f60028151811015156117d757fe5b906020019060200201516040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200182815260200198505050505050505050602060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b505050506040513d602081101561193e57600080fd5b8101908080519060200190929190505050151561195a57600080fd5b7fb22aa78ea09a55aa3481a2ccab361989913e9aa97cd6d9cbce9a7666279758a88589600081518110151561198b57fe5b906020019060200201518a60018151811015156119a457fe5b906020019060200201518b60028151811015156119bd57fe5b906020019060200201518c60038151811015156119d657fe5b9060200190602002015187878e60048151811015156119f157fe5b9060200190602002015142604051808a600019166000191681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390a15050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b6857600080fd5b600090505b8151811015611c8e57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663264a8d2e8383815181101515611bc257fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611c1e57600080fd5b505af1158015611c32573d6000803e3d6000fd5b505050506040513d6020811015611c4857600080fd5b810190808051906020019092919050505015611c8157611c808282815181101515611c6f57fe5b906020019060200201516000611daa565b5b8080600101915050611b6d565b5050565b6006602052816000526040600020602052806000526040600020600091509150505481565b60055481565b600860009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d2b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d6757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663590288538f6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d6080811015611e7757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509b509b509b509b50600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515611eea57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611fdb57600080fd5b505af1158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b81019080805190602001909291905050509750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663104584548f8a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060a060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b505050506040513d60a08110156120db57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096506000871415151561212e57600080fd5b61213c8c8c8c8c8789613014565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d602081101561225957600080fd5b81019080805190602001909291905050509750612277828d8d613785565b90506122b68c8c8c8c8988871061228e5788612290565b865b8d8f1161229d578e61229f565b8d5b8a8a116122ad5760006122b1565b8a8a035b61385a565b8c156123f8577f0889e4048b5afe70ea6de8592cfc535605f946ca5e5f1743b2b22f83e00d7eaf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1612530565b7fee77b01bcc1a819fe9856426fe7572f4583ed925dc8e2766babe3e12258fefbf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b5050505050505050505050505050565b60008060008087600381518110151561255557fe5b90602001906020020151421115151561256d57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60008151811015156125ba57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506040513d602081101561266c57600080fd5b81019080805190602001909291905050509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60018151811015156126cc57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561275457600080fd5b505af1158015612768573d6000803e3d6000fd5b505050506040513d602081101561277e57600080fd5b810190808051906020019092919050505091508860028151811015156127a057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282957508860038151811015156127ef57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612879575088600281518110151561283f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c9575088600381518110151561288f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156128d457600080fd5b308960008151811015156128e457fe5b906020019060200201518a60018151811015156128fd57fe5b906020019060200201518a600181518110151561291657fe5b906020019060200201518b600281518110151561292f57fe5b906020019060200201518c600381518110151561294857fe5b90602001906020020151604051602001808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515612a7a5780518252602082019150602081019050602083039250612a55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905086612acc57886002815181101515612abd57fe5b90602001906020020151612ae6565b886003815181101515612adb57fe5b906020019060200201515b73ffffffffffffffffffffffffffffffffffffffff1660018288886000815181101515612b0f57fe5b90602001906020020151896001815181101515612b2857fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612ba3573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16141515612bcf57600080fd5b8615612daa57876000815181101515612be457fe5b90602001906020020151612c89896004815181101515612c0057fe5b90602001906020020151600660008d6003815181101515612c1d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612c9657600080fd5b612d31886004815181101515612ca857fe5b90602001906020020151600660008c6003815181101515612cc557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6003815181101515612d4457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002081905550612f7b565b876000815181101515612db957fe5b90602001906020020151612e5e896004815181101515612dd557fe5b90602001906020020151600660008d6002815181101515612df257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612e6b57600080fd5b612f06886004815181101515612e7d57fe5b90602001906020020151600660008c6002815181101515612e9a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6002815181101515612f1957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055505b6001935050505095945050505050565b6000806000841415612fa05760009150612fc2565b8284029050828482811515612fb157fe5b04141515612fbe57600080fd5b8091505b5092915050565b600080600083111515612fdb57600080fd5b8284811515612fe657fe5b0490508091505092915050565b600080828401905083811015151561300a57600080fd5b8091505092915050565b60008060008060008060008060009650600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156130e157600080fd5b505af11580156130f5573d6000803e3d6000fd5b505050506040513d602081101561310b57600080fd5b81019080805190602001909291905050509550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738e886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561320f57600080fd5b505af1158015613223573d6000803e3d6000fd5b505050506040513d602081101561323957600080fd5b81019080805190602001909291905050509450600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c07b2ca8f8f6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561333c57600080fd5b505af1158015613350573d6000803e3d6000fd5b505050506040513d604081101561336657600080fd5b810190808051906020019092919080519060200190929190505050935093506133aa8461339c858d612f8b90919063ffffffff16565b612fc990919063ffffffff16565b915081891180156133bb5750600085115b1561374a576133d3828a614a3090919063ffffffff16565b9050888510156133e1578490505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96878f8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156134e757600080fd5b505af11580156134fb573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968d8f8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b505050507ff069b0bcbba7c248c8393101cb8c3f02c2bef79af362e9ded7bdda48f59f5d798e8e8e8e8d8642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a1613747818a614a3090919063ffffffff16565b98505b61376f83613761868c612f8b90919063ffffffff16565b612fc990919063ffffffff16565b9650869750505050505050509695505050505050565b60006138516064613843606460046064600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff160361ffff1681151561382e57fe5b040161ffff1687612f8b90919063ffffffff16565b612fc990919063ffffffff16565b90509392505050565b600080606461387460055488612f8b90919063ffffffff16565b81151561387d57fe5b049150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898c6138d38a8a612ff390919063ffffffff16565b60006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561399857600080fd5b505af11580156139ac573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c613a03868b614a3090919063ffffffff16565b60016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613ac857600080fd5b505af1158015613adc573d6000803e3d6000fd5b505050506000841115613d2657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898b8760006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613bef57600080fd5b505af1158015613c03573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888b8760016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613d0d57600080fd5b505af1158015613d21573d6000803e3d6000fd5b505050505b60008311156146dd5782600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015613e4557600080fd5b505af1158015613e59573d6000803e3d6000fd5b505050506040513d6020811015613e6f57600080fd5b8101908080519060200190929190505050811515613e8957fe5b04111561420a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613fb857600080fd5b505af1158015613fcc573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8660016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878842604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a16146dc565b600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561431f57600080fd5b505af1158015614333573d6000803e3d6000fd5b505050506040513d602081101561434957600080fd5b810190808051906020019092919050505081151561436357fe5b049050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156145ac57600080fd5b505af11580156145c0573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a15b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8860016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156147e357600080fd5b505af11580156147f7573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561491257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb2e379a88846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156148f557600080fd5b505af1158015614909573d6000803e3d6000fd5b50505050614a24565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757060a5888c856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015614a0b57600080fd5b505af1158015614a1f573d6000803e3d6000fd5b505050505b50505050505050505050565b6000828211151515614a4157600080fd5b8183039050929150505600a165627a7a72305820b4ffeaa5a3996c0cc81778e808d5c5bbc7fd5bac2c0abb6a7b7ae91bfca918cb0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e4e3627034a97b75d899ee7525d446bf2d42ad6600000000000000000000000019350aa51f45965b783ec8e40538d4b88d24698a000000000000000000000000aea870ca4ad2ee820050124a7580e78176d9c806000000000000000000000000611ce695290729805e138c9c14dbddf132e76de3000000000000000000000000000000000000000000000000000000000000000a
-----Decoded View---------------
Arg [0] : _owner (address): 0xe4e3627034a97b75d899eE7525D446bF2D42AD66
Arg [1] : _accountCost (address): 0x19350AA51f45965B783EC8e40538D4b88D24698a
Arg [2] : _contractLoanLogic (address): 0xAea870CA4aD2ee820050124A7580e78176D9C806
Arg [3] : _contractMarketData (address): 0x611ce695290729805e138C9c14dBddf132E76De3
Arg [4] : _commissionRatio (uint256): 10
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000e4e3627034a97b75d899ee7525d446bf2d42ad66
Arg [1] : 00000000000000000000000019350aa51f45965b783ec8e40538d4b88d24698a
Arg [2] : 000000000000000000000000aea870ca4ad2ee820050124a7580e78176d9c806
Arg [3] : 000000000000000000000000611ce695290729805e138c9c14dbddf132e76de3
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Swarm Source
bzzr://b4ffeaa5a3996c0cc81778e808d5c5bbc7fd5bac2c0abb6a7b7ae91bfca918cb
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.