Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
|||
|---|---|---|---|---|---|---|---|---|
| Execute Signatur... | 24514062 | 29 hrs ago | 0 ETH | |||||
| Execute Signatur... | 24436769 | 12 days ago | 0 ETH | |||||
| Execute Signatur... | 24366624 | 21 days ago | 0 ETH | |||||
| Execute Signatur... | 24363246 | 22 days ago | 0 ETH | |||||
| Execute Signatur... | 24356332 | 23 days ago | 0 ETH | |||||
| Execute Signatur... | 23971678 | 76 days ago | 0 ETH | |||||
| Execute Signatur... | 23919048 | 84 days ago | 0 ETH | |||||
| Execute Signatur... | 23918729 | 84 days ago | 0 ETH | |||||
| Execute Signatur... | 23917226 | 84 days ago | 0 ETH | |||||
| Execute Signatur... | 23852817 | 93 days ago | 0 ETH | |||||
| Execute Signatur... | 23846527 | 94 days ago | 0 ETH | |||||
| Execute Signatur... | 23846509 | 94 days ago | 0 ETH | |||||
| Execute Signatur... | 23727760 | 111 days ago | 0 ETH | |||||
| Execute Signatur... | 23701689 | 114 days ago | 0 ETH | |||||
| Execute Signatur... | 23684423 | 117 days ago | 0 ETH | |||||
| Execute Signatur... | 23613462 | 127 days ago | 0 ETH | |||||
| Execute Signatur... | 23556269 | 135 days ago | 0 ETH | |||||
| Execute Signatur... | 23551361 | 135 days ago | 0 ETH | |||||
| Execute Signatur... | 23550264 | 136 days ago | 0 ETH | |||||
| Execute Signatur... | 23509460 | 141 days ago | 0 ETH | |||||
| Execute Signatur... | 23448073 | 150 days ago | 0 ETH | |||||
| Execute Signatur... | 23271505 | 175 days ago | 0 ETH | |||||
| Execute Signatur... | 23268737 | 175 days ago | 0 ETH | |||||
| Execute Signatur... | 23262002 | 176 days ago | 0 ETH | |||||
| Execute Signatur... | 23250401 | 177 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ForeignBridgeErcToErc
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-02-04
*/
// File: contracts/libraries/SafeMath.sol
pragma solidity 0.4.24;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
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;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
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) {
assert(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;
assert(c >= a);
return c;
}
}
// File: contracts/IBridgeValidators.sol
pragma solidity 0.4.24;
interface IBridgeValidators {
function isValidator(address _validator) public view returns(bool);
function requiredSignatures() public view returns(uint256);
function owner() public view returns(address);
function validatorsList() public view returns(address[]);
}
// File: contracts/libraries/Message.sol
pragma solidity 0.4.24;
library Message {
function addressArrayContains(address[] array, address value) internal pure returns (bool) {
for (uint256 i = 0; i < array.length; i++) {
if (array[i] == value) {
return true;
}
}
return false;
}
// layout of message :: bytes:
// offset 0: 32 bytes :: uint256 - message length
// offset 32: 20 bytes :: address - recipient address
// offset 52: 32 bytes :: uint256 - value
// offset 84: 32 bytes :: bytes32 - transaction hash
// offset 104: 20 bytes :: address - contract address to prevent double spending
// bytes 1 to 32 are 0 because message length is stored as little endian.
// mload always reads 32 bytes.
// so we can and have to start reading recipient at offset 20 instead of 32.
// if we were to read at 32 the address would contain part of value and be corrupted.
// when reading from offset 20 mload will read 12 zero bytes followed
// by the 20 recipient address bytes and correctly convert it into an address.
// this saves some storage/gas over the alternative solution
// which is padding address to 32 bytes and reading recipient at offset 32.
// for more details see discussion in:
// https://github.com/paritytech/parity-bridge/issues/61
function parseMessage(bytes message)
internal
pure
returns(address recipient, uint256 amount, bytes32 txHash, address contractAddress)
{
require(isMessageValid(message));
assembly {
recipient := and(mload(add(message, 20)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
amount := mload(add(message, 52))
txHash := mload(add(message, 84))
contractAddress := mload(add(message, 104))
}
}
function isMessageValid(bytes _msg) internal pure returns(bool) {
return _msg.length == requiredMessageLength();
}
function requiredMessageLength() internal pure returns(uint256) {
return 104;
}
function recoverAddressFromSignedMessage(bytes signature, bytes message) internal pure returns (address) {
require(signature.length == 65);
bytes32 r;
bytes32 s;
bytes1 v;
// solium-disable-next-line security/no-inline-assembly
assembly {
r := mload(add(signature, 0x20))
s := mload(add(signature, 0x40))
v := mload(add(signature, 0x60))
}
return ecrecover(hashMessage(message), uint8(v), r, s);
}
function hashMessage(bytes message) internal pure returns (bytes32) {
bytes memory prefix = "\x19Ethereum Signed Message:\n";
// message is always 84 length
string memory msgLength = "104";
return keccak256(abi.encodePacked(prefix, msgLength, message));
}
function hasEnoughValidSignatures(
bytes _message,
uint8[] _vs,
bytes32[] _rs,
bytes32[] _ss,
IBridgeValidators _validatorContract) internal view {
require(isMessageValid(_message));
uint256 requiredSignatures = _validatorContract.requiredSignatures();
require(_vs.length >= requiredSignatures);
bytes32 hash = hashMessage(_message);
address[] memory encounteredAddresses = new address[](requiredSignatures);
for (uint256 i = 0; i < requiredSignatures; i++) {
address recoveredAddress = ecrecover(hash, _vs[i], _rs[i], _ss[i]);
require(_validatorContract.isValidator(recoveredAddress));
if (addressArrayContains(encounteredAddresses, recoveredAddress)) {
revert();
}
encounteredAddresses[i] = recoveredAddress;
}
}
}
// File: contracts/IOwnedUpgradeabilityProxy.sol
pragma solidity 0.4.24;
interface IOwnedUpgradeabilityProxy {
function proxyOwner() public view returns (address);
}
// File: contracts/upgradeable_contracts/OwnedUpgradeability.sol
pragma solidity 0.4.24;
contract OwnedUpgradeability {
function upgradeabilityAdmin() public view returns (address) {
return IOwnedUpgradeabilityProxy(this).proxyOwner();
}
// Avoid using onlyProxyOwner name to prevent issues with implementation from proxy contract
modifier onlyIfOwnerOfProxy() {
require(msg.sender == upgradeabilityAdmin());
_;
}
}
// File: contracts/upgradeability/EternalStorage.sol
pragma solidity 0.4.24;
/**
* @title EternalStorage
* @dev This contract holds all the necessary state variables to carry out the storage of any contract.
*/
contract EternalStorage {
mapping(bytes32 => uint256) internal uintStorage;
mapping(bytes32 => string) internal stringStorage;
mapping(bytes32 => address) internal addressStorage;
mapping(bytes32 => bytes) internal bytesStorage;
mapping(bytes32 => bool) internal boolStorage;
mapping(bytes32 => int256) internal intStorage;
}
// File: contracts/upgradeable_contracts/Validatable.sol
pragma solidity 0.4.24;
contract Validatable is EternalStorage {
function validatorContract() public view returns(IBridgeValidators) {
return IBridgeValidators(addressStorage[keccak256(abi.encodePacked("validatorContract"))]);
}
modifier onlyValidator() {
require(validatorContract().isValidator(msg.sender));
_;
}
function requiredSignatures() public view returns(uint256) {
return validatorContract().requiredSignatures();
}
}
// File: contracts/upgradeable_contracts/Ownable.sol
pragma solidity 0.4.24;
/**
* @title Ownable
* @dev This contract has an owner address providing basic authorization control
*/
contract Ownable is EternalStorage {
/**
* @dev Event to show ownership has been transferred
* @param previousOwner representing the address of the previous owner
* @param newOwner representing the address of the new owner
*/
event OwnershipTransferred(address previousOwner, address newOwner);
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner());
_;
}
/**
* @dev Tells the address of the owner
* @return the address of the owner
*/
function owner() public view returns (address) {
return addressStorage[keccak256(abi.encodePacked("owner"))];
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner the address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
setOwner(newOwner);
}
/**
* @dev Sets a new owner address
*/
function setOwner(address newOwner) internal {
emit OwnershipTransferred(owner(), newOwner);
addressStorage[keccak256(abi.encodePacked("owner"))] = newOwner;
}
}
// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol
pragma solidity ^0.4.23;
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/179
*/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
// File: contracts/upgradeable_contracts/BasicBridge.sol
pragma solidity 0.4.24;
contract BasicBridge is EternalStorage, Validatable, Ownable, OwnedUpgradeability {
using SafeMath for uint256;
event GasPriceChanged(uint256 gasPrice);
event RequiredBlockConfirmationChanged(uint256 requiredBlockConfirmations);
event DailyLimitChanged(uint256 newLimit);
event ExecutionDailyLimitChanged(uint256 newLimit);
function getBridgeInterfacesVersion() public pure returns(uint64 major, uint64 minor, uint64 patch) {
return (2, 2, 0);
}
function setGasPrice(uint256 _gasPrice) public onlyOwner {
require(_gasPrice > 0);
uintStorage[keccak256(abi.encodePacked("gasPrice"))] = _gasPrice;
emit GasPriceChanged(_gasPrice);
}
function gasPrice() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("gasPrice"))];
}
function setRequiredBlockConfirmations(uint256 _blockConfirmations) public onlyOwner {
require(_blockConfirmations > 0);
uintStorage[keccak256(abi.encodePacked("requiredBlockConfirmations"))] = _blockConfirmations;
emit RequiredBlockConfirmationChanged(_blockConfirmations);
}
function requiredBlockConfirmations() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("requiredBlockConfirmations"))];
}
function deployedAtBlock() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("deployedAtBlock"))];
}
function setTotalSpentPerDay(uint256 _day, uint256 _value) internal {
uintStorage[keccak256(abi.encodePacked("totalSpentPerDay", _day))] = _value;
}
function totalSpentPerDay(uint256 _day) public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("totalSpentPerDay", _day))];
}
function setTotalExecutedPerDay(uint256 _day, uint256 _value) internal {
uintStorage[keccak256(abi.encodePacked("totalExecutedPerDay", _day))] = _value;
}
function totalExecutedPerDay(uint256 _day) public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("totalExecutedPerDay", _day))];
}
function minPerTx() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("minPerTx"))];
}
function maxPerTx() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("maxPerTx"))];
}
function executionMaxPerTx() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("executionMaxPerTx"))];
}
function setInitialize(bool _status) internal {
boolStorage[keccak256(abi.encodePacked("isInitialized"))] = _status;
}
function isInitialized() public view returns(bool) {
return boolStorage[keccak256(abi.encodePacked("isInitialized"))];
}
function getCurrentDay() public view returns(uint256) {
return now / 1 days;
}
function setDailyLimit(uint256 _dailyLimit) public onlyOwner {
uintStorage[keccak256(abi.encodePacked("dailyLimit"))] = _dailyLimit;
emit DailyLimitChanged(_dailyLimit);
}
function dailyLimit() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("dailyLimit"))];
}
function setExecutionDailyLimit(uint256 _dailyLimit) public onlyOwner {
uintStorage[keccak256(abi.encodePacked("executionDailyLimit"))] = _dailyLimit;
emit ExecutionDailyLimitChanged(_dailyLimit);
}
function executionDailyLimit() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("executionDailyLimit"))];
}
function setExecutionMaxPerTx(uint256 _maxPerTx) external onlyOwner {
require(_maxPerTx < executionDailyLimit());
uintStorage[keccak256(abi.encodePacked("executionMaxPerTx"))] = _maxPerTx;
}
function setMaxPerTx(uint256 _maxPerTx) external onlyOwner {
require(_maxPerTx < dailyLimit());
uintStorage[keccak256(abi.encodePacked("maxPerTx"))] = _maxPerTx;
}
function setMinPerTx(uint256 _minPerTx) external onlyOwner {
require(_minPerTx < dailyLimit() && _minPerTx < maxPerTx());
uintStorage[keccak256(abi.encodePacked("minPerTx"))] = _minPerTx;
}
function withinLimit(uint256 _amount) public view returns(bool) {
uint256 nextLimit = totalSpentPerDay(getCurrentDay()).add(_amount);
return dailyLimit() >= nextLimit && _amount <= maxPerTx() && _amount >= minPerTx();
}
function withinExecutionLimit(uint256 _amount) public view returns(bool) {
uint256 nextLimit = totalExecutedPerDay(getCurrentDay()).add(_amount);
return executionDailyLimit() >= nextLimit && _amount <= executionMaxPerTx();
}
function claimTokens(address _token, address _to) public onlyIfOwnerOfProxy {
require(_to != address(0));
if (_token == address(0)) {
_to.transfer(address(this).balance);
return;
}
ERC20Basic token = ERC20Basic(_token);
uint256 balance = token.balanceOf(this);
require(token.transfer(_to, balance));
}
function isContract(address _addr) internal view returns (bool)
{
uint length;
assembly { length := extcodesize(_addr) }
return length > 0;
}
}
// File: contracts/upgradeable_contracts/BasicForeignBridge.sol
pragma solidity 0.4.24;
contract BasicForeignBridge is EternalStorage, Validatable {
using SafeMath for uint256;
/// triggered when relay of deposit from HomeBridge is complete
event RelayedMessage(address recipient, uint value, bytes32 transactionHash);
function executeSignatures(uint8[] vs, bytes32[] rs, bytes32[] ss, bytes message) external {
Message.hasEnoughValidSignatures(message, vs, rs, ss, validatorContract());
address recipient;
uint256 amount;
bytes32 txHash;
address contractAddress;
(recipient, amount, txHash, contractAddress) = Message.parseMessage(message);
if (messageWithinLimits(amount)) {
require(contractAddress == address(this));
require(!relayedMessages(txHash));
setRelayedMessages(txHash, true);
require(onExecuteMessage(recipient, amount));
emit RelayedMessage(recipient, amount, txHash);
} else {
onFailedMessage(recipient, amount, txHash);
}
}
function onExecuteMessage(address, uint256) internal returns(bool);
function setRelayedMessages(bytes32 _txHash, bool _status) internal {
boolStorage[keccak256(abi.encodePacked("relayedMessages", _txHash))] = _status;
}
function relayedMessages(bytes32 _txHash) public view returns(bool) {
return boolStorage[keccak256(abi.encodePacked("relayedMessages", _txHash))];
}
function messageWithinLimits(uint256) internal view returns(bool);
function onFailedMessage(address, uint256, bytes32) internal;
}
// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol
pragma solidity ^0.4.23;
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender)
public view returns (uint256);
function transferFrom(address from, address to, uint256 value)
public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
// File: contracts/ERC677.sol
pragma solidity 0.4.24;
contract ERC677 is ERC20 {
event Transfer(address indexed from, address indexed to, uint value, bytes data);
function transferAndCall(address, uint, bytes) external returns (bool);
}
// File: contracts/IBurnableMintableERC677Token.sol
pragma solidity 0.4.24;
contract IBurnableMintableERC677Token is ERC677 {
function mint(address, uint256) public returns (bool);
function burn(uint256 _value) public;
function claimTokens(address _token, address _to) public;
}
// File: contracts/ERC677Receiver.sol
pragma solidity 0.4.24;
contract ERC677Receiver {
function onTokenTransfer(address _from, uint _value, bytes _data) external returns(bool);
}
// File: contracts/upgradeable_contracts/FeeManager.sol
pragma solidity 0.4.24;
contract FeeManager is EternalStorage, Ownable {
using SafeMath for uint256;
event FeePercentChanged(uint newFeePercent);
/**
* @dev Sets current fee percent. It has 2 decimal places.
* e.g. value 1337 has to be interpreted as 13.37%
* @param _feePercent Fee percent.
*/
function setFeePercent(uint256 _feePercent) public onlyOwner {
require(_feePercent < 10000, "Invalid fee percent");
uintStorage[keccak256(abi.encodePacked("feePercent"))] = _feePercent;
emit FeePercentChanged(_feePercent);
}
/**
* @dev Returns current fee percent. It has 2 decimal places.
* e.g. value 1337 has to be interpreted as 13.37%
* @return fee percent.
*/
function feePercent() public view returns(uint256) {
return uintStorage[keccak256(abi.encodePacked("feePercent"))];
}
function subtractFee(uint _value) public view returns(uint256) {
uint256 fullPercent = 10000;
return _value.sub(_value.mul(feePercent()).div(fullPercent));
}
}
// File: contracts/upgradeable_contracts/erc20_to_erc20/ForeignBridgeErcToErc.sol
pragma solidity 0.4.24;
contract ForeignBridgeErcToErc is BasicBridge, BasicForeignBridge, FeeManager {
event RelayedMessage(address recipient, uint value, bytes32 transactionHash);
function initialize(
address _validatorContract,
address _erc20token,
uint256 _requiredBlockConfirmations,
uint256 _gasPrice,
uint256 _maxPerTx,
uint256 _homeDailyLimit,
uint256 _homeMaxPerTx,
address _owner,
uint256 _feePercent
) public returns(bool) {
require(!isInitialized());
require(_validatorContract != address(0) && isContract(_validatorContract));
require(_requiredBlockConfirmations != 0);
require(_gasPrice > 0);
require(_homeMaxPerTx < _homeDailyLimit);
require(_owner != address(0));
require(_feePercent < 10000, "Invalid fee percent");
addressStorage[keccak256(abi.encodePacked("validatorContract"))] = _validatorContract;
setErc20token(_erc20token);
uintStorage[keccak256(abi.encodePacked("deployedAtBlock"))] = block.number;
uintStorage[keccak256(abi.encodePacked("requiredBlockConfirmations"))] = _requiredBlockConfirmations;
uintStorage[keccak256(abi.encodePacked("gasPrice"))] = _gasPrice;
uintStorage[keccak256(abi.encodePacked("maxPerTx"))] = _maxPerTx;
uintStorage[keccak256(abi.encodePacked("executionDailyLimit"))] = _homeDailyLimit;
uintStorage[keccak256(abi.encodePacked("executionMaxPerTx"))] = _homeMaxPerTx;
uintStorage[keccak256(abi.encodePacked("feePercent"))] = _feePercent;
setOwner(_owner);
setInitialize(true);
return isInitialized();
}
function getBridgeMode() public pure returns(bytes4 _data) {
return bytes4(keccak256(abi.encodePacked("erc-to-erc-core")));
}
function claimTokens(address _token, address _to) public onlyIfOwnerOfProxy {
require(_token != address(erc20token()));
super.claimTokens(_token, _to);
}
function erc20token() public view returns(ERC20Basic) {
return ERC20Basic(addressStorage[keccak256(abi.encodePacked("erc20token"))]);
}
function tokenTransfer(address _recipient, uint256 _amount) internal returns(bool) {
return erc20token().call(bytes4(keccak256("transfer(address,uint256)")), _recipient, _amount);
}
function onExecuteMessage(address _recipient, uint256 _amount) internal returns(bool){
setTotalExecutedPerDay(getCurrentDay(), totalExecutedPerDay(getCurrentDay()).add(_amount));
if (feePercent() == 0) {
return tokenTransfer(_recipient, _amount);
} else {
bool result = true;
uint256 userValue = subtractFee(_amount);
address[] memory validators = validatorContract().validatorsList();
uint256 entireValidatorValue = _amount.sub(userValue);
uint256 particularValidatorValue = entireValidatorValue.div(validators.length);
for(uint256 i = 0; i < validators.length - 1; i++) {
result = result && tokenTransfer(validators[i], particularValidatorValue);
}
// to avoid round error we need to calculate the fee value in other way for the last validator
uint256 lastValidatorValue = entireValidatorValue.sub(
particularValidatorValue.mul(validators.length.sub(1))
);
result = result && tokenTransfer(validators[validators.length - 1], lastValidatorValue);
result = result && tokenTransfer(_recipient, userValue);
return result;
}
}
function setErc20token(address _token) private {
require(_token != address(0) && isContract(_token));
addressStorage[keccak256(abi.encodePacked("erc20token"))] = _token;
}
function messageWithinLimits(uint256 _amount) internal view returns(bool) {
return withinExecutionLimit(_amount);
}
function onFailedMessage(address, uint256, bytes32) internal {
revert();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"erc20token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_txHash","type":"bytes32"}],"name":"relayedMessages","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"},{"name":"message","type":"bytes"}],"name":"executeSignatures","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_day","type":"uint256"}],"name":"totalSpentPerDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInitialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dailyLimit","type":"uint256"}],"name":"setExecutionDailyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requiredBlockConfirmations","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBridgeMode","outputs":[{"name":"_data","type":"bytes4"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"executionDailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_day","type":"uint256"}],"name":"totalExecutedPerDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_validatorContract","type":"address"},{"name":"_erc20token","type":"address"},{"name":"_requiredBlockConfirmations","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_maxPerTx","type":"uint256"},{"name":"_homeDailyLimit","type":"uint256"},{"name":"_homeMaxPerTx","type":"uint256"},{"name":"_owner","type":"address"},{"name":"_feePercent","type":"uint256"}],"name":"initialize","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_feePercent","type":"uint256"}],"name":"setFeePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feePercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withinExecutionLimit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"executionMaxPerTx","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requiredSignatures","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"validatorContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deployedAtBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBridgeInterfacesVersion","outputs":[{"name":"major","type":"uint64"},{"name":"minor","type":"uint64"},{"name":"patch","type":"uint64"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_minPerTx","type":"uint256"}],"name":"setMinPerTx","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_blockConfirmations","type":"uint256"}],"name":"setRequiredBlockConfirmations","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_dailyLimit","type":"uint256"}],"name":"setDailyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gasPrice","type":"uint256"}],"name":"setGasPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"subtractFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxPerTx","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradeabilityAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minPerTx","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withinLimit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxPerTx","type":"uint256"}],"name":"setExecutionMaxPerTx","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxPerTx","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gasPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"transactionHash","type":"bytes32"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newFeePercent","type":"uint256"}],"name":"FeePercentChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gasPrice","type":"uint256"}],"name":"GasPriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"requiredBlockConfirmations","type":"uint256"}],"name":"RequiredBlockConfirmationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newLimit","type":"uint256"}],"name":"DailyLimitChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newLimit","type":"uint256"}],"name":"ExecutionDailyLimitChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b50612fe1806100206000396000f3006080604052600436106101a85763ffffffff60e060020a6000350416631dcea42781146101ad57806321d800ec146101de578063232a2c1d1461020a5780632bd0bb0514610250578063392e53cd1461027a5780633dd95d1b1461028f5780633e6968b6146102a75780633f0a9f65146102bc578063437764df146102d157806343b37dd31461031b5780634fb3fef71461033057806351c764e01461034857806367eeba0c1461038d57806369ffa08a146103a25780637ce3489b146103c95780637fd6f15c146103e1578063879ce676146103f65780638aa1949a1461040e5780638d068043146104235780638da5cb5b14610438578063994390891461044d5780639a454b99146104625780639cb7595a14610477578063a2a6ca27146104b8578063acf5c689146104d0578063b20d30a9146104e8578063bf1fe42014610500578063c056765614610518578063c6f6f21614610530578063df0ad3de14610548578063df25f3f01461055d578063ea9f496814610572578063f20151e11461058a578063f2fde38b146105a2578063f968adbe146105c3578063fe173b97146105d8575b600080fd5b3480156101b957600080fd5b506101c26105ed565b60408051600160a060020a039092168252519081900360200190f35b3480156101ea57600080fd5b506101f66004356106ab565b604080519115158252519081900360200190f35b34801561021657600080fd5b5061024e6024600480358281019290820135918135808301929082013591604435808301929082013591606435918201910135610774565b005b34801561025c57600080fd5b5061026860043561094c565b60408051918252519081900360200190f35b34801561028657600080fd5b506101f6610a09565b34801561029b57600080fd5b5061024e600435610ac1565b3480156102b357600080fd5b50610268610bc3565b3480156102c857600080fd5b50610268610bcc565b3480156102dd57600080fd5b506102e6610c80565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561032757600080fd5b50610268610d23565b34801561033c57600080fd5b50610268600435610d96565b34801561035457600080fd5b506101f6600160a060020a0360043581169060243581169060443590606435906084359060a4359060c4359060e4351661010435610e11565b34801561039957600080fd5b506102686114b3565b3480156103ae57600080fd5b5061024e600160a060020a0360043581169060243516611526565b3480156103d557600080fd5b5061024e600435611570565b3480156103ed57600080fd5b506102686116e2565b34801561040257600080fd5b506101f6600435611755565b34801561041a57600080fd5b5061026861179f565b34801561042f57600080fd5b50610268611812565b34801561044457600080fd5b506101c261188a565b34801561045957600080fd5b506101c26118fe565b34801561046e57600080fd5b50610268611972565b34801561048357600080fd5b5061048c6119e5565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156104c457600080fd5b5061024e6004356119ef565b3480156104dc57600080fd5b5061024e600435611ae6565b3480156104f457600080fd5b5061024e600435611bf5565b34801561050c57600080fd5b5061024e600435611cf7565b34801561052457600080fd5b50610268600435611e06565b34801561053c57600080fd5b5061024e600435611e43565b34801561055457600080fd5b506101c2611ee4565b34801561056957600080fd5b50610268611f24565b34801561057e57600080fd5b506101f6600435611f97565b34801561059657600080fd5b5061024e600435611fe7565b3480156105ae57600080fd5b5061024e600160a060020a0360043516612088565b3480156105cf57600080fd5b506102686120c5565b3480156105e457600080fd5b50610268612138565b60006002600060405160200180807f6572633230746f6b656e00000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b602083106106625780518252601f199092019160209182019101610643565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002054600160a060020a0316949350505050565b6000600460008360405160200180807f72656c617965644d657373616765730000000000000000000000000000000000815250600f0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106107305780518252601f199092019160209182019101610711565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1695945050505050565b60008060008061084c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050508d8d808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508c8c808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508b8b808060200260200160405190810160405280939291908181526020018383602002808284375061084794506118fe9350505050565b6121ab565b61088586868080601f01602080910402602001604051908101604052809392919081815260200183838082843750612418945050505050565b929650909450925090506108988361245e565b1561093357600160a060020a03811630146108b257600080fd5b6108bb826106ab565b156108c557600080fd5b6108d082600161246f565b6108da8484612541565b15156108e557600080fd5b60408051600160a060020a03861681526020810185905280820184905290517f4ab7d581336d92edbea22636a613e8e76c99ac7f91137c1523db38dbfb3bf3299181900360600190a161093e565b61093e8484846101a8565b505050505050505050505050565b60008060008360405160200180807f746f74616c5370656e74506572446179000000000000000000000000000000008152506010018281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106109c85780518252601f1990920191602091820191016109a9565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b60006004600060405160200180807f6973496e697469616c697a656400000000000000000000000000000000000000815250600d0190506040516020818303038152906040526040518082805190602001908083835b60208310610a7e5780518252601f199092019160209182019101610a5f565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff16949350505050565b610ac961188a565b600160a060020a03163314610add57600080fd5b8060008060405160200180807f657865637574696f6e4461696c794c696d69740000000000000000000000000081525060130190506040516020818303038152906040526040518082805190602001908083835b60208310610b505780518252601f199092019160209182019101610b31565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f9bebf928b90863f24cc31f726a3a7545efd409f1dcf552301b1ee3710da70d3b9350918290030190a150565b62015180420490565b600080600060405160200180807f7265717569726564426c6f636b436f6e6669726d6174696f6e73000000000000815250601a0190506040516020818303038152906040526040518082805190602001908083835b60208310610c405780518252601f199092019160209182019101610c21565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002054949350505050565b600060405160200180807f6572632d746f2d6572632d636f72650000000000000000000000000000000000815250600f0190506040516020818303038152906040526040518082805190602001908083835b60208310610cf15780518252601f199092019160209182019101610cd2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905090565b600080600060405160200180807f657865637574696f6e4461696c794c696d697400000000000000000000000000815250601301905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b60008060008360405160200180807f746f74616c457865637574656450657244617900000000000000000000000000815250601301828152602001915050604051602081830303815290604052604051808280519060200190808383602083106109c85780518252601f1990920191602091820191016109a9565b6000610e1b610a09565b15610e2557600080fd5b600160a060020a038a1615801590610e415750610e418a61276a565b1515610e4c57600080fd5b871515610e5857600080fd5b60008711610e6557600080fd5b848410610e7157600080fd5b600160a060020a0383161515610e8657600080fd5b6127108210610ef657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b896002600060405160200180807f76616c696461746f72436f6e747261637400000000000000000000000000000081525060110190506040516020818303038152906040526040518082805190602001908083835b60208310610f6a5780518252601f199092019160209182019101610f4b565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03959095169490941790935550610fdb91508a9050612772565b4360008060405160200180807f6465706c6f7965644174426c6f636b0000000000000000000000000000000000815250600f0190506040516020818303038152906040526040518082805190602001908083835b6020831061104e5780518252601f19909201916020918201910161102f565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f7265717569726564426c6f636b436f6e6669726d6174696f6e73000000000000818401528151601a818303018152603a9091019182905280518c949384939182918401908083835b602083106110f85780518252601f1990920191602091820191016110d9565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f6761735072696365000000000000000000000000000000000000000000000000818401528151600881830301815260289091019182905280518b949384939182918401908083835b602083106111a25780518252601f199092019160209182019101611183565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f6d61785065725478000000000000000000000000000000000000000000000000818401528151600881830301815260289091019182905280518a949384939182918401908083835b6020831061124c5780518252601f19909201916020918201910161122d565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f657865637574696f6e4461696c794c696d6974000000000000000000000000008184015281516013818303018152603390910191829052805189949384939182918401908083835b602083106112f65780518252601f1990920191602091820191016112d7565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f657865637574696f6e4d617850657254780000000000000000000000000000008184015281516011818303018152603190910191829052805188949384939182918401908083835b602083106113a05780518252601f199092019160209182019101611381565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f66656550657263656e7400000000000000000000000000000000000000000000818401528151600a818303018152602a90910191829052805186949384939182918401908083835b6020831061144a5780518252601f19909201916020918201910161142b565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002093909355506114939150849050612876565b61149d6001612934565b6114a5610a09565b9a9950505050505050505050565b600080600060405160200180807f6461696c794c696d697400000000000000000000000000000000000000000000815250600a01905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b61152e611ee4565b600160a060020a0316331461154257600080fd5b61154a6105ed565b600160a060020a038381169116141561156257600080fd5b61156c82826129f5565b5050565b61157861188a565b600160a060020a0316331461158c57600080fd5b61271081106115fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b8060008060405160200180807f66656550657263656e7400000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b6020831061166f5780518252601f199092019160209182019101611650565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f91955c12515f4eb8f1ff79df82d1933ff11b6d3b9a3019c6568840616ec36a749350918290030190a150565b600080600060405160200180807f66656550657263656e7400000000000000000000000000000000000000000000815250600a01905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b6000806117788361176c611767610bc3565b610d96565b9063ffffffff612bb116565b905080611783610d23565b10158015611798575061179461179f565b8311155b9392505050565b600080600060405160200180807f657865637574696f6e4d61785065725478000000000000000000000000000000815250601101905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b600061181c6118fe565b600160a060020a0316638d0680436040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561185957600080fd5b505af115801561186d573d6000803e3d6000fd5b505050506040513d602081101561188357600080fd5b5051905090565b60006002600060405160200180807f6f776e65720000000000000000000000000000000000000000000000000000008152506005019050604051602081830303815290604052604051808280519060200190808383602083106106625780518252601f199092019160209182019101610643565b60006002600060405160200180807f76616c696461746f72436f6e74726163740000000000000000000000000000008152506011019050604051602081830303815290604052604051808280519060200190808383602083106106625780518252601f199092019160209182019101610643565b600080600060405160200180807f6465706c6f7965644174426c6f636b0000000000000000000000000000000000815250600f01905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b6002806000909192565b6119f761188a565b600160a060020a03163314611a0b57600080fd5b611a136114b3565b81108015611a275750611a246120c5565b81105b1515611a3257600080fd5b8060008060405160200180807f6d696e506572547800000000000000000000000000000000000000000000000081525060080190506040516020818303038152906040526040518082805190602001908083835b60208310611aa55780518252601f199092019160209182019101611a86565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000209390935550505050565b611aee61188a565b600160a060020a03163314611b0257600080fd5b60008111611b0f57600080fd5b8060008060405160200180807f7265717569726564426c6f636b436f6e6669726d6174696f6e73000000000000815250601a0190506040516020818303038152906040526040518082805190602001908083835b60208310611b825780518252601f199092019160209182019101611b63565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f4fb76205cd57c896b21511d2114137d8e901b4ccd659e1a0f97d6306795264fb9350918290030190a150565b611bfd61188a565b600160a060020a03163314611c1157600080fd5b8060008060405160200180807f6461696c794c696d697400000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b60208310611c845780518252601f199092019160209182019101611c65565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517fad4123ae17c414d9c6d2fec478b402e6b01856cc250fd01fbfd252fda0089d3c9350918290030190a150565b611cff61188a565b600160a060020a03163314611d1357600080fd5b60008111611d2057600080fd5b8060008060405160200180807f676173507269636500000000000000000000000000000000000000000000000081525060080190506040516020818303038152906040526040518082805190602001908083835b60208310611d935780518252601f199092019160209182019101611d74565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f52264b89e0fceafb26e79fd49ef8a366eb6297483bf4035b027f0c99a7ad512e9350918290030190a150565b6000612710611798611e3682611e2a611e1d6116e2565b879063ffffffff612bcb16565b9063ffffffff612bf616565b849063ffffffff612c0d16565b611e4b61188a565b600160a060020a03163314611e5f57600080fd5b611e676114b3565b8110611e7257600080fd5b8060008060405160200180807f6d61785065725478000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310611aa55780518252601f199092019160209182019101611a86565b600030600160a060020a031663025313a26040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561185957600080fd5b600080600060405160200180807f6d696e5065725478000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b600080611fae8361176c611fa9610bc3565b61094c565b905080611fb96114b3565b10158015611fce5750611fca6120c5565b8311155b80156117985750611fdd611f24565b9092101592915050565b611fef61188a565b600160a060020a0316331461200357600080fd5b61200b610d23565b811061201657600080fd5b8060008060405160200180807f657865637574696f6e4d61785065725478000000000000000000000000000000815250601101905060405160208183030381529060405260405180828051906020019080838360208310611aa55780518252601f199092019160209182019101611a86565b61209061188a565b600160a060020a031633146120a457600080fd5b600160a060020a03811615156120b957600080fd5b6120c281612876565b50565b600080600060405160200180807f6d61785065725478000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b600080600060405160200180807f6761735072696365000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b60008060606000806121bc8a612c1f565b15156121c757600080fd5b85600160a060020a0316638d0680436040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561220557600080fd5b505af1158015612219573d6000803e3d6000fd5b505050506040513d602081101561222f57600080fd5b5051895190955085111561224257600080fd5b61224b8a612c33565b935084604051908082528060200260200182016040528015612277578160200160208202803883390190505b509250600091505b8482101561240c576001848a8481518110151561229857fe5b906020019060200201518a858151811015156122b057fe5b906020019060200201518a868151811015156122c857fe5b60209081029091018101516040805160008082528185018084529790975260ff9095168582015260608501939093526080840152905160a0808401949293601f19830193908390039091019190865af1158015612329573d6000803e3d6000fd5b50505060206040510351905085600160a060020a031663facd743b826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b505050506040513d60208110156123ba57600080fd5b505115156123c757600080fd5b6123d18382612df8565b156123db57600080fd5b8083838151811015156123ea57fe5b600160a060020a0390921660209283029091019091015260019091019061227f565b50505050505050505050565b60008060008061242785612c1f565b151561243257600080fd5b600160a060020a0360148601511693506034850151925060548501519150606885015190509193509193565b600061246982611755565b92915050565b80600460008460405160200180807f72656c617965644d657373616765730000000000000000000000000000000000815250600f0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106124f35780518252601f1990920191602091820191016124d4565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805460ff1916941515949094179093555050505050565b6000806000606060008060008061256d612559610bc3565b6125688b61176c611767610bc3565b612e51565b6125756116e2565b151561258c576125858a8a612f0e565b975061275d565b6001965061259989611e06565b95506125a36118fe565b600160a060020a031663bb8ac08f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156125e057600080fd5b505af11580156125f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561261d57600080fd5b81019080805164010000000081111561263557600080fd5b8201602081018481111561264857600080fd5b815185602082028301116401000000008211171561266557600080fd5b5090985061268093508c92508991505063ffffffff612c0d16565b9350612696855185612bf690919063ffffffff16565b9250600091505b60018551038210156126df578680156126d257506126d285838151811015156126c257fe5b9060200190602002015184612f0e565b965060019091019061269d565b6127146127076126fa60018851612c0d90919063ffffffff16565b859063ffffffff612bcb16565b859063ffffffff612c0d16565b9050868015612743575061274385600187510381518110151561273357fe5b9060200190602002015182612f0e565b965086801561275757506127578a87612f0e565b96508697505b5050505050505092915050565b6000903b1190565b600160a060020a0381161580159061278e575061278e8161276a565b151561279957600080fd5b806002600060405160200180807f6572633230746f6b656e00000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b6020831061280d5780518252601f1990920191602091820191016127ee565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03959095169490941790935550505050565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e061289f61188a565b60408051600160a060020a03928316815291841660208301528051918290030190a1806002600060405160200180807f6f776e657200000000000000000000000000000000000000000000000000000081525060050190506040516020818303038152906040526040518082805190602001908083836020831061280d5780518252601f1990920191602091820191016127ee565b806004600060405160200180807f6973496e697469616c697a656400000000000000000000000000000000000000815250600d0190506040516020818303038152906040526040518082805190602001908083835b602083106129a85780518252601f199092019160209182019101612989565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805460ff19169415159490941790935550505050565b600080612a00611ee4565b600160a060020a03163314612a1457600080fd5b600160a060020a0383161515612a2957600080fd5b600160a060020a0384161515612a7557604051600160a060020a03841690303180156108fc02916000818181858888f19350505050158015612a6f573d6000803e3d6000fd5b50612bab565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051859350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050506040513d6020811015612b0357600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015612b7457600080fd5b505af1158015612b88573d6000803e3d6000fd5b505050506040513d6020811015612b9e57600080fd5b50511515612bab57600080fd5b50505050565b600082820183811015612bc057fe5b8091505b5092915050565b600080831515612bde5760009150612bc4565b50828202828482811515612bee57fe5b0414612bc057fe5b6000808284811515612c0457fe5b04949350505050565b600082821115612c1957fe5b50900390565b6000612c29612fb0565b8251149050919050565b604080518082018252601a81527f19457468657265756d205369676e6564204d6573736167653a0a000000000000602080830191825283518085018552600381527f313034000000000000000000000000000000000000000000000000000000000081830152935183516000959385938593899391019182918083835b60208310612ccf5780518252601f199092019160209182019101612cb0565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b60208310612d175780518252601f199092019160209182019101612cf8565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310612d5f5780518252601f199092019160209182019101612d40565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518082805190602001908083835b60208310612dc45780518252601f199092019160209182019101612da5565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b6000805b8351811015612e475782600160a060020a03168482815181101515612e1d57fe5b90602001906020020151600160a060020a03161415612e3f5760019150612bc4565b600101612dfc565b5060009392505050565b806000808460405160200180807f746f74616c4578656375746564506572446179000000000000000000000000008152506013018281526020019150506040516020818303038152906040526040518082805190602001908083835b60208310612ecc5780518252601f199092019160209182019101612ead565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b6000612f186105ed565b600160a060020a031660405180807f7472616e7366657228616464726573732c75696e7432353629000000000000008152506019019050604051809103902060e060020a900484846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a03168152602001828152602001925050506000604051808303816000875af19695505050505050565b6068905600a165627a7a7230582075d2b32b4b7bf50203ed6ebca25284c3a216d9412e9688de1d16e6e5f5a685210029
Deployed Bytecode
0x6080604052600436106101a85763ffffffff60e060020a6000350416631dcea42781146101ad57806321d800ec146101de578063232a2c1d1461020a5780632bd0bb0514610250578063392e53cd1461027a5780633dd95d1b1461028f5780633e6968b6146102a75780633f0a9f65146102bc578063437764df146102d157806343b37dd31461031b5780634fb3fef71461033057806351c764e01461034857806367eeba0c1461038d57806369ffa08a146103a25780637ce3489b146103c95780637fd6f15c146103e1578063879ce676146103f65780638aa1949a1461040e5780638d068043146104235780638da5cb5b14610438578063994390891461044d5780639a454b99146104625780639cb7595a14610477578063a2a6ca27146104b8578063acf5c689146104d0578063b20d30a9146104e8578063bf1fe42014610500578063c056765614610518578063c6f6f21614610530578063df0ad3de14610548578063df25f3f01461055d578063ea9f496814610572578063f20151e11461058a578063f2fde38b146105a2578063f968adbe146105c3578063fe173b97146105d8575b600080fd5b3480156101b957600080fd5b506101c26105ed565b60408051600160a060020a039092168252519081900360200190f35b3480156101ea57600080fd5b506101f66004356106ab565b604080519115158252519081900360200190f35b34801561021657600080fd5b5061024e6024600480358281019290820135918135808301929082013591604435808301929082013591606435918201910135610774565b005b34801561025c57600080fd5b5061026860043561094c565b60408051918252519081900360200190f35b34801561028657600080fd5b506101f6610a09565b34801561029b57600080fd5b5061024e600435610ac1565b3480156102b357600080fd5b50610268610bc3565b3480156102c857600080fd5b50610268610bcc565b3480156102dd57600080fd5b506102e6610c80565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561032757600080fd5b50610268610d23565b34801561033c57600080fd5b50610268600435610d96565b34801561035457600080fd5b506101f6600160a060020a0360043581169060243581169060443590606435906084359060a4359060c4359060e4351661010435610e11565b34801561039957600080fd5b506102686114b3565b3480156103ae57600080fd5b5061024e600160a060020a0360043581169060243516611526565b3480156103d557600080fd5b5061024e600435611570565b3480156103ed57600080fd5b506102686116e2565b34801561040257600080fd5b506101f6600435611755565b34801561041a57600080fd5b5061026861179f565b34801561042f57600080fd5b50610268611812565b34801561044457600080fd5b506101c261188a565b34801561045957600080fd5b506101c26118fe565b34801561046e57600080fd5b50610268611972565b34801561048357600080fd5b5061048c6119e5565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156104c457600080fd5b5061024e6004356119ef565b3480156104dc57600080fd5b5061024e600435611ae6565b3480156104f457600080fd5b5061024e600435611bf5565b34801561050c57600080fd5b5061024e600435611cf7565b34801561052457600080fd5b50610268600435611e06565b34801561053c57600080fd5b5061024e600435611e43565b34801561055457600080fd5b506101c2611ee4565b34801561056957600080fd5b50610268611f24565b34801561057e57600080fd5b506101f6600435611f97565b34801561059657600080fd5b5061024e600435611fe7565b3480156105ae57600080fd5b5061024e600160a060020a0360043516612088565b3480156105cf57600080fd5b506102686120c5565b3480156105e457600080fd5b50610268612138565b60006002600060405160200180807f6572633230746f6b656e00000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b602083106106625780518252601f199092019160209182019101610643565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002054600160a060020a0316949350505050565b6000600460008360405160200180807f72656c617965644d657373616765730000000000000000000000000000000000815250600f0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106107305780518252601f199092019160209182019101610711565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1695945050505050565b60008060008061084c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050508d8d808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508c8c808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508b8b808060200260200160405190810160405280939291908181526020018383602002808284375061084794506118fe9350505050565b6121ab565b61088586868080601f01602080910402602001604051908101604052809392919081815260200183838082843750612418945050505050565b929650909450925090506108988361245e565b1561093357600160a060020a03811630146108b257600080fd5b6108bb826106ab565b156108c557600080fd5b6108d082600161246f565b6108da8484612541565b15156108e557600080fd5b60408051600160a060020a03861681526020810185905280820184905290517f4ab7d581336d92edbea22636a613e8e76c99ac7f91137c1523db38dbfb3bf3299181900360600190a161093e565b61093e8484846101a8565b505050505050505050505050565b60008060008360405160200180807f746f74616c5370656e74506572446179000000000000000000000000000000008152506010018281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106109c85780518252601f1990920191602091820191016109a9565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b60006004600060405160200180807f6973496e697469616c697a656400000000000000000000000000000000000000815250600d0190506040516020818303038152906040526040518082805190602001908083835b60208310610a7e5780518252601f199092019160209182019101610a5f565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff16949350505050565b610ac961188a565b600160a060020a03163314610add57600080fd5b8060008060405160200180807f657865637574696f6e4461696c794c696d69740000000000000000000000000081525060130190506040516020818303038152906040526040518082805190602001908083835b60208310610b505780518252601f199092019160209182019101610b31565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f9bebf928b90863f24cc31f726a3a7545efd409f1dcf552301b1ee3710da70d3b9350918290030190a150565b62015180420490565b600080600060405160200180807f7265717569726564426c6f636b436f6e6669726d6174696f6e73000000000000815250601a0190506040516020818303038152906040526040518082805190602001908083835b60208310610c405780518252601f199092019160209182019101610c21565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002054949350505050565b600060405160200180807f6572632d746f2d6572632d636f72650000000000000000000000000000000000815250600f0190506040516020818303038152906040526040518082805190602001908083835b60208310610cf15780518252601f199092019160209182019101610cd2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905090565b600080600060405160200180807f657865637574696f6e4461696c794c696d697400000000000000000000000000815250601301905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b60008060008360405160200180807f746f74616c457865637574656450657244617900000000000000000000000000815250601301828152602001915050604051602081830303815290604052604051808280519060200190808383602083106109c85780518252601f1990920191602091820191016109a9565b6000610e1b610a09565b15610e2557600080fd5b600160a060020a038a1615801590610e415750610e418a61276a565b1515610e4c57600080fd5b871515610e5857600080fd5b60008711610e6557600080fd5b848410610e7157600080fd5b600160a060020a0383161515610e8657600080fd5b6127108210610ef657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b896002600060405160200180807f76616c696461746f72436f6e747261637400000000000000000000000000000081525060110190506040516020818303038152906040526040518082805190602001908083835b60208310610f6a5780518252601f199092019160209182019101610f4b565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03959095169490941790935550610fdb91508a9050612772565b4360008060405160200180807f6465706c6f7965644174426c6f636b0000000000000000000000000000000000815250600f0190506040516020818303038152906040526040518082805190602001908083835b6020831061104e5780518252601f19909201916020918201910161102f565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f7265717569726564426c6f636b436f6e6669726d6174696f6e73000000000000818401528151601a818303018152603a9091019182905280518c949384939182918401908083835b602083106110f85780518252601f1990920191602091820191016110d9565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f6761735072696365000000000000000000000000000000000000000000000000818401528151600881830301815260289091019182905280518b949384939182918401908083835b602083106111a25780518252601f199092019160209182019101611183565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f6d61785065725478000000000000000000000000000000000000000000000000818401528151600881830301815260289091019182905280518a949384939182918401908083835b6020831061124c5780518252601f19909201916020918201910161122d565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f657865637574696f6e4461696c794c696d6974000000000000000000000000008184015281516013818303018152603390910191829052805189949384939182918401908083835b602083106112f65780518252601f1990920191602091820191016112d7565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f657865637574696f6e4d617850657254780000000000000000000000000000008184015281516011818303018152603190910191829052805188949384939182918401908083835b602083106113a05780518252601f199092019160209182019101611381565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812095909555505080517f66656550657263656e7400000000000000000000000000000000000000000000818401528151600a818303018152602a90910191829052805186949384939182918401908083835b6020831061144a5780518252601f19909201916020918201910161142b565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002093909355506114939150849050612876565b61149d6001612934565b6114a5610a09565b9a9950505050505050505050565b600080600060405160200180807f6461696c794c696d697400000000000000000000000000000000000000000000815250600a01905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b61152e611ee4565b600160a060020a0316331461154257600080fd5b61154a6105ed565b600160a060020a038381169116141561156257600080fd5b61156c82826129f5565b5050565b61157861188a565b600160a060020a0316331461158c57600080fd5b61271081106115fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b8060008060405160200180807f66656550657263656e7400000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b6020831061166f5780518252601f199092019160209182019101611650565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f91955c12515f4eb8f1ff79df82d1933ff11b6d3b9a3019c6568840616ec36a749350918290030190a150565b600080600060405160200180807f66656550657263656e7400000000000000000000000000000000000000000000815250600a01905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b6000806117788361176c611767610bc3565b610d96565b9063ffffffff612bb116565b905080611783610d23565b10158015611798575061179461179f565b8311155b9392505050565b600080600060405160200180807f657865637574696f6e4d61785065725478000000000000000000000000000000815250601101905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b600061181c6118fe565b600160a060020a0316638d0680436040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561185957600080fd5b505af115801561186d573d6000803e3d6000fd5b505050506040513d602081101561188357600080fd5b5051905090565b60006002600060405160200180807f6f776e65720000000000000000000000000000000000000000000000000000008152506005019050604051602081830303815290604052604051808280519060200190808383602083106106625780518252601f199092019160209182019101610643565b60006002600060405160200180807f76616c696461746f72436f6e74726163740000000000000000000000000000008152506011019050604051602081830303815290604052604051808280519060200190808383602083106106625780518252601f199092019160209182019101610643565b600080600060405160200180807f6465706c6f7965644174426c6f636b0000000000000000000000000000000000815250600f01905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b6002806000909192565b6119f761188a565b600160a060020a03163314611a0b57600080fd5b611a136114b3565b81108015611a275750611a246120c5565b81105b1515611a3257600080fd5b8060008060405160200180807f6d696e506572547800000000000000000000000000000000000000000000000081525060080190506040516020818303038152906040526040518082805190602001908083835b60208310611aa55780518252601f199092019160209182019101611a86565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000209390935550505050565b611aee61188a565b600160a060020a03163314611b0257600080fd5b60008111611b0f57600080fd5b8060008060405160200180807f7265717569726564426c6f636b436f6e6669726d6174696f6e73000000000000815250601a0190506040516020818303038152906040526040518082805190602001908083835b60208310611b825780518252601f199092019160209182019101611b63565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f4fb76205cd57c896b21511d2114137d8e901b4ccd659e1a0f97d6306795264fb9350918290030190a150565b611bfd61188a565b600160a060020a03163314611c1157600080fd5b8060008060405160200180807f6461696c794c696d697400000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b60208310611c845780518252601f199092019160209182019101611c65565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517fad4123ae17c414d9c6d2fec478b402e6b01856cc250fd01fbfd252fda0089d3c9350918290030190a150565b611cff61188a565b600160a060020a03163314611d1357600080fd5b60008111611d2057600080fd5b8060008060405160200180807f676173507269636500000000000000000000000000000000000000000000000081525060080190506040516020818303038152906040526040518082805190602001908083835b60208310611d935780518252601f199092019160209182019101611d74565b51815160001960209485036101000a019081169019919091161790526040805194909201849003909320865285830196909652509284016000209490945550815184815291517f52264b89e0fceafb26e79fd49ef8a366eb6297483bf4035b027f0c99a7ad512e9350918290030190a150565b6000612710611798611e3682611e2a611e1d6116e2565b879063ffffffff612bcb16565b9063ffffffff612bf616565b849063ffffffff612c0d16565b611e4b61188a565b600160a060020a03163314611e5f57600080fd5b611e676114b3565b8110611e7257600080fd5b8060008060405160200180807f6d61785065725478000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310611aa55780518252601f199092019160209182019101611a86565b600030600160a060020a031663025313a26040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561185957600080fd5b600080600060405160200180807f6d696e5065725478000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b600080611fae8361176c611fa9610bc3565b61094c565b905080611fb96114b3565b10158015611fce5750611fca6120c5565b8311155b80156117985750611fdd611f24565b9092101592915050565b611fef61188a565b600160a060020a0316331461200357600080fd5b61200b610d23565b811061201657600080fd5b8060008060405160200180807f657865637574696f6e4d61785065725478000000000000000000000000000000815250601101905060405160208183030381529060405260405180828051906020019080838360208310611aa55780518252601f199092019160209182019101611a86565b61209061188a565b600160a060020a031633146120a457600080fd5b600160a060020a03811615156120b957600080fd5b6120c281612876565b50565b600080600060405160200180807f6d61785065725478000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b600080600060405160200180807f6761735072696365000000000000000000000000000000000000000000000000815250600801905060405160208183030381529060405260405180828051906020019080838360208310610c405780518252601f199092019160209182019101610c21565b60008060606000806121bc8a612c1f565b15156121c757600080fd5b85600160a060020a0316638d0680436040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561220557600080fd5b505af1158015612219573d6000803e3d6000fd5b505050506040513d602081101561222f57600080fd5b5051895190955085111561224257600080fd5b61224b8a612c33565b935084604051908082528060200260200182016040528015612277578160200160208202803883390190505b509250600091505b8482101561240c576001848a8481518110151561229857fe5b906020019060200201518a858151811015156122b057fe5b906020019060200201518a868151811015156122c857fe5b60209081029091018101516040805160008082528185018084529790975260ff9095168582015260608501939093526080840152905160a0808401949293601f19830193908390039091019190865af1158015612329573d6000803e3d6000fd5b50505060206040510351905085600160a060020a031663facd743b826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b505050506040513d60208110156123ba57600080fd5b505115156123c757600080fd5b6123d18382612df8565b156123db57600080fd5b8083838151811015156123ea57fe5b600160a060020a0390921660209283029091019091015260019091019061227f565b50505050505050505050565b60008060008061242785612c1f565b151561243257600080fd5b600160a060020a0360148601511693506034850151925060548501519150606885015190509193509193565b600061246982611755565b92915050565b80600460008460405160200180807f72656c617965644d657373616765730000000000000000000000000000000000815250600f0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106124f35780518252601f1990920191602091820191016124d4565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805460ff1916941515949094179093555050505050565b6000806000606060008060008061256d612559610bc3565b6125688b61176c611767610bc3565b612e51565b6125756116e2565b151561258c576125858a8a612f0e565b975061275d565b6001965061259989611e06565b95506125a36118fe565b600160a060020a031663bb8ac08f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156125e057600080fd5b505af11580156125f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561261d57600080fd5b81019080805164010000000081111561263557600080fd5b8201602081018481111561264857600080fd5b815185602082028301116401000000008211171561266557600080fd5b5090985061268093508c92508991505063ffffffff612c0d16565b9350612696855185612bf690919063ffffffff16565b9250600091505b60018551038210156126df578680156126d257506126d285838151811015156126c257fe5b9060200190602002015184612f0e565b965060019091019061269d565b6127146127076126fa60018851612c0d90919063ffffffff16565b859063ffffffff612bcb16565b859063ffffffff612c0d16565b9050868015612743575061274385600187510381518110151561273357fe5b9060200190602002015182612f0e565b965086801561275757506127578a87612f0e565b96508697505b5050505050505092915050565b6000903b1190565b600160a060020a0381161580159061278e575061278e8161276a565b151561279957600080fd5b806002600060405160200180807f6572633230746f6b656e00000000000000000000000000000000000000000000815250600a0190506040516020818303038152906040526040518082805190602001908083835b6020831061280d5780518252601f1990920191602091820191016127ee565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03959095169490941790935550505050565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e061289f61188a565b60408051600160a060020a03928316815291841660208301528051918290030190a1806002600060405160200180807f6f776e657200000000000000000000000000000000000000000000000000000081525060050190506040516020818303038152906040526040518082805190602001908083836020831061280d5780518252601f1990920191602091820191016127ee565b806004600060405160200180807f6973496e697469616c697a656400000000000000000000000000000000000000815250600d0190506040516020818303038152906040526040518082805190602001908083835b602083106129a85780518252601f199092019160209182019101612989565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805460ff19169415159490941790935550505050565b600080612a00611ee4565b600160a060020a03163314612a1457600080fd5b600160a060020a0383161515612a2957600080fd5b600160a060020a0384161515612a7557604051600160a060020a03841690303180156108fc02916000818181858888f19350505050158015612a6f573d6000803e3d6000fd5b50612bab565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051859350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050506040513d6020811015612b0357600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015612b7457600080fd5b505af1158015612b88573d6000803e3d6000fd5b505050506040513d6020811015612b9e57600080fd5b50511515612bab57600080fd5b50505050565b600082820183811015612bc057fe5b8091505b5092915050565b600080831515612bde5760009150612bc4565b50828202828482811515612bee57fe5b0414612bc057fe5b6000808284811515612c0457fe5b04949350505050565b600082821115612c1957fe5b50900390565b6000612c29612fb0565b8251149050919050565b604080518082018252601a81527f19457468657265756d205369676e6564204d6573736167653a0a000000000000602080830191825283518085018552600381527f313034000000000000000000000000000000000000000000000000000000000081830152935183516000959385938593899391019182918083835b60208310612ccf5780518252601f199092019160209182019101612cb0565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b60208310612d175780518252601f199092019160209182019101612cf8565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310612d5f5780518252601f199092019160209182019101612d40565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518082805190602001908083835b60208310612dc45780518252601f199092019160209182019101612da5565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b6000805b8351811015612e475782600160a060020a03168482815181101515612e1d57fe5b90602001906020020151600160a060020a03161415612e3f5760019150612bc4565b600101612dfc565b5060009392505050565b806000808460405160200180807f746f74616c4578656375746564506572446179000000000000000000000000008152506013018281526020019150506040516020818303038152906040526040518082805190602001908083835b60208310612ecc5780518252601f199092019160209182019101612ead565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b6000612f186105ed565b600160a060020a031660405180807f7472616e7366657228616464726573732c75696e7432353629000000000000008152506019019050604051809103902060e060020a900484846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a03168152602001828152602001925050506000604051808303816000875af19695505050505050565b6068905600a165627a7a7230582075d2b32b4b7bf50203ed6ebca25284c3a216d9412e9688de1d16e6e5f5a685210029
Deployed Bytecode Sourcemap
19269:4123:0:-;;;;;;;;;-1:-1:-1;;;19269:4123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21314:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21314:149:0;;;;;;;;-1:-1:-1;;;;;21314:149:0;;;;;;;;;;;;;;16301:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16301:162:0;;;;;;;;;;;;;;;;;;;;;;;15261:784;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15261:784:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11131:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11131:161:0;;;;;;;;;;;;;;;;;;;;;12214:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12214:134:0;;;;12797:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12797:221:0;;;;;12356:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12356:92:0;;;;10641:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10641:163:0;;;;20983:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20983:139:0;;;;;;;;;;;;;;;;;;;;;;;13026:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13026:149:0;;;;11476:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11476:167:0;;;;;19441:1534;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19441:1534:0;-1:-1:-1;;;;;19441:1534:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12658:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12658:131:0;;;;21130:176;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21130:176:0;-1:-1:-1;;;;;21130:176:0;;;;;;;;;;18385:256;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18385:256:0;;;;;18815:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18815:131:0;;;;14068:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14068:247:0;;;;;11921:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11921:145:0;;;;7203:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7203:125:0;;;;8140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8140:125:0;;;;6902:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6902:177:0;;;;10812:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10812:141:0;;;;9824:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9824:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13598:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13598:212:0;;;;;10325:308;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10325:308:0;;;;;12456:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12456:194:0;;;;;9967:215;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9967:215:0;;;;;18954:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18954:180:0;;;;;13404:186;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13404:186:0;;;;;5824:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5824:131:0;;;;11651:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11651:127:0;;;;13818:242;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13818:242:0;;;;;13183:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13183:213:0;;;;;8439:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8439:141:0;-1:-1:-1;;;;;8439:141:0;;;;;11786:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11786:127:0;;;;10190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10190:127:0;;;;21314:149;21356:10;21397:14;:57;21422:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;21422:30:0;;;21412:41;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;21412:41:0;;;;;;;;;;;;;21397:57;;;;;;;;;;;;-1:-1:-1;21397:57:0;;-1:-1:-1;;;;;21397:57:0;;21314:149;-1:-1:-1;;;;21314:149:0:o;16301:162::-;16363:4;16387:11;:68;16445:7;16409:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16409:44:0;;;16399:55;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16399:55:0;;;;;;;;;;;;;16387:68;;;;;;;;;;;;-1:-1:-1;16387:68:0;;;;;16301:162;-1:-1:-1;;;;;16301:162:0:o;15261:784::-;15448:17;15476:14;15501;15526:23;15363:74;15396:7;;15363:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15405:2;;15363:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15409:2;;15363:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15413:2;;15363:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15417:19:0;;-1:-1:-1;15417:17:0;;-1:-1:-1;;;;15417:19:0:i;:::-;15363:32;:74::i;:::-;15607:29;15628:7;;15607:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15607:20:0;;-1:-1:-1;;;;;15607:29:0:i;:::-;15560:76;;-1:-1:-1;15560:76:0;;-1:-1:-1;15560:76:0;-1:-1:-1;15560:76:0;-1:-1:-1;15651:27:0;15560:76;15651:19;:27::i;:::-;15647:391;;;-1:-1:-1;;;;;15703:32:0;;15730:4;15703:32;15695:41;;;;;;15760:23;15776:6;15760:15;:23::i;:::-;15759:24;15751:33;;;;;;15799:32;15818:6;15826:4;15799:18;:32::i;:::-;15854:35;15871:9;15882:6;15854:16;:35::i;:::-;15846:44;;;;;;;;15910:41;;;-1:-1:-1;;;;;15910:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15647:391;;;15984:42;16000:9;16011:6;16019;15984:15;:42::i;:::-;15261:784;;;;;;;;;;;;:::o;11131:161::-;11191:7;11218:11;:66;11277:4;11240:42;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11240:42:0;;;11230:53;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11230:53:0;;;;;;;;;;;;;11218:66;;;;;;;;;;;;-1:-1:-1;11218:66:0;;;11131:161;-1:-1:-1;;;;;11131:161:0:o;12214:134::-;12259:4;12283:11;:57;12305:33;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12305:33:0;;;12295:44;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;12295:44:0;;;;;;;;;;;;;12283:57;;;;;;;;;;;;-1:-1:-1;12283:57:0;;;;;12214:134;-1:-1:-1;;;;12214:134:0:o;12797:221::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;12944:11;12878;:63;12900:39;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12900:39:0;;;12890:50;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;;377:20;365:33;;12890:50:0;;;;;;;;;;;;;12878:63;;;;;;;;;-1:-1:-1;12878:63:0;;;-1:-1:-1;12878:63:0;:77;;;;-1:-1:-1;12971:39:0;;;;;;;;;-1:-1:-1;12971:39:0;;;;;;;12797:221;:::o;12356:92::-;12434:6;12428:3;:12;;12356:92::o;10641:163::-;10699:7;10726:11;:70;10748:46;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10748:46:0;;;10738:57;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;10738:57:0;;;;;;;;;;;;;10726:70;;;;;;;;;;;;-1:-1:-1;10726:70:0;;;10641:163;-1:-1:-1;;;;10641:163:0:o;20983:139::-;21028:12;21077:35;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;21077:35:0;;;21067:46;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;21067:46:0;;;;;;;;;;;;;;;;21053:61;;20983:139;:::o;13026:149::-;13077:7;13104:11;:63;13126:39;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13126:39:0;;;13116:50;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;11476:167:0;11539:7;11566:11;:69;11628:4;11588:45;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11588:45:0;;;11578:56;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;19441:1534:0;19773:4;19799:15;:13;:15::i;:::-;19798:16;19790:25;;;;;;-1:-1:-1;;;;;19834:32:0;;;;;;:66;;;19870:30;19881:18;19870:10;:30::i;:::-;19826:75;;;;;;;;19920:32;;;19912:41;;;;;;19984:1;19972:13;;19964:22;;;;;;20005:31;;;19997:40;;;;;;-1:-1:-1;;;;;20056:20:0;;;;20048:29;;;;;;20110:5;20096:19;;20088:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20217:18;20150:14;:64;20175:37;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20175:37:0;;;20165:48;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20165:48:0;;;;;;;;;;;;;20150:64;;;;;;;;;;;;-1:-1:-1;20150:64:0;:85;;-1:-1:-1;;20150:85:0;-1:-1:-1;;;;;20150:85:0;;;;;;;;;;;-1:-1:-1;20246:26:0;;-1:-1:-1;20260:11:0;;-1:-1:-1;20246:13:0;:26::i;:::-;20345:12;20283:11;:59;20305:35;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20305:35:0;;;20295:46;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20295:46:0;;;;;;;;;;;;;20283:59;;;;;;;;;-1:-1:-1;20283:59:0;;;-1:-1:-1;20283:59:0;;;:74;;;;-1:-1:-1;;20390:46:0;;;;;;;;;;26:21:-1;;;22:32;6:49;;20390:46:0;;;;;;;;20380:57;;20441:27;;-1:-1:-1;;;20390:46:0;;;20380:57;;;;20390:46;20380:57;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20380:57:0;;;;;;;;;;;;;20368:70;;;;;;;;;-1:-1:-1;20368:70:0;;;-1:-1:-1;20368:70:0;;;:100;;;;-1:-1:-1;;20501:28:0;;;;;;;;;;26:21:-1;;;22:32;6:49;;20501:28:0;;;;;;;;20491:39;;20534:9;;-1:-1:-1;;;20501:28:0;;;20491:39;;;;20501:28;20491:39;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20491:39:0;;;;;;;;;;;;;20479:52;;;;;;;;;-1:-1:-1;20479:52:0;;;-1:-1:-1;20479:52:0;;;:64;;;;-1:-1:-1;;20576:28:0;;;;;;;;;;26:21:-1;;;22:32;6:49;;20576:28:0;;;;;;;;20566:39;;20609:9;;-1:-1:-1;;;20576:28:0;;;20566:39;;;;20576:28;20566:39;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20566:39:0;;;;;;;;;;;;;20554:52;;;;;;;;;-1:-1:-1;20554:52:0;;;-1:-1:-1;20554:52:0;;;:64;;;;-1:-1:-1;;20651:39:0;;;;;;;;;;26:21:-1;;;22:32;6:49;;20651:39:0;;;;;;;;20641:50;;20695:15;;-1:-1:-1;;;20651:39:0;;;20641:50;;;;20651:39;20641:50;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20641:50:0;;;;;;;;;;;;;20629:63;;;;;;;;;-1:-1:-1;20629:63:0;;;-1:-1:-1;20629:63:0;;;:81;;;;-1:-1:-1;;20743:37:0;;;;;;;;;;26:21:-1;;;22:32;6:49;;20743:37:0;;;;;;;;20733:48;;20785:13;;-1:-1:-1;;;20743:37:0;;;20733:48;;;;20743:37;20733:48;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20733:48:0;;;;;;;;;;;;;20721:61;;;;;;;;;-1:-1:-1;20721:61:0;;;-1:-1:-1;20721:61:0;;;:77;;;;-1:-1:-1;;20831:30:0;;;;;;;;;;26:21:-1;;;22:32;6:49;;20831:30:0;;;;;;;;20821:41;;20866:11;;-1:-1:-1;;;20831:30:0;;;20821:41;;;;20831:30;20821:41;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;20821:41:0;;;;;;;;;;;;;20809:54;;;;;;;;;;;;-1:-1:-1;20809:54:0;:68;;;;-1:-1:-1;20888:16:0;;-1:-1:-1;20897:6:0;;-1:-1:-1;20888:8:0;:16::i;:::-;20915:19;20929:4;20915:13;:19::i;:::-;20952:15;:13;:15::i;:::-;20945:22;19441:1534;-1:-1:-1;;;;;;;;;;19441:1534:0:o;12658:131::-;12700:7;12727:11;:54;12749:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12749:30:0;;;12739:41;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;21130:176:0;6124:21;:19;:21::i;:::-;-1:-1:-1;;;;;6110:35:0;:10;:35;6102:44;;;;;;21243:12;:10;:12::i;:::-;-1:-1:-1;;;;;21225:31:0;;;;;;;21217:40;;;;;;21268:30;21286:6;21294:3;21268:17;:30::i;:::-;21130:176;;:::o;18385:256::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;18479:5;18465:19;;18457:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18576:11;18519;:54;18541:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18541:30:0;;;18531:41;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;;377:20;365:33;;18531:41:0;;;;;;;;;;;;;18519:54;;;;;;;;;-1:-1:-1;18519:54:0;;;-1:-1:-1;18519:54:0;:68;;;;-1:-1:-1;18603:30:0;;;;;;;;;-1:-1:-1;18603:30:0;;;;;;;18385:256;:::o;18815:131::-;18857:7;18884:11;:54;18906:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18906:30:0;;;18896:41;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;14068:247:0;14135:4;14152:17;14172:49;14213:7;14172:36;14192:15;:13;:15::i;:::-;14172:19;:36::i;:::-;:40;:49;:40;:49;:::i;:::-;14152:69;;14264:9;14239:21;:19;:21::i;:::-;:34;;:68;;;;;14288:19;:17;:19::i;:::-;14277:7;:30;;14239:68;14232:75;14068:247;-1:-1:-1;;;14068:247:0:o;11921:145::-;11970:7;11997:11;:61;12019:37;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12019:37:0;;;12009:48;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;7203:125:0;7253:7;7280:19;:17;:19::i;:::-;-1:-1:-1;;;;;7280:38:0;;:40;;;;;-1:-1:-1;;;7280:40:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7280:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7280:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7280:40:0;;-1:-1:-1;7203:125:0;:::o;8140:::-;8178:7;8205:14;:52;8230:25;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8230:25:0;;;8220:36;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;6902:177:0;6951:17;7006:14;:64;7031:37;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7031:37:0;;;7021:48;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;10812:141:0;10859:7;10886:11;:59;10908:35;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10908:35:0;;;10898:46;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;9824:135:0;9943:1;;9882:12;9824:135;;;:::o;13598:212::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;13688:12;:10;:12::i;:::-;13676:9;:24;:50;;;;;13716:10;:8;:10::i;:::-;13704:9;:22;13676:50;13668:59;;;;;;;;13793:9;13738:11;:52;13760:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13760:28:0;;;13750:39;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;13750:39:0;;;;;;;;;;;;;13738:52;;;;;;;;;;;;-1:-1:-1;13738:52:0;:64;;;;-1:-1:-1;;;;13598:212:0:o;10325:308::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;10451:1;10429:23;;10421:32;;;;;;10537:19;10464:11;:70;10486:46;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10486:46:0;;;10476:57;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;;377:20;365:33;;10476:57:0;;;;;;;;;;;;;10464:70;;;;;;;;;-1:-1:-1;10464:70:0;;;-1:-1:-1;10464:70:0;:92;;;;-1:-1:-1;10572:53:0;;;;;;;;;-1:-1:-1;10572:53:0;;;;;;;10325:308;:::o;12456:194::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;12585:11;12528;:54;12550:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12550:30:0;;;12540:41;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;;377:20;365:33;;12540:41:0;;;;;;;;;;;;;12528:54;;;;;;;;;-1:-1:-1;12528:54:0;;;-1:-1:-1;12528:54:0;:68;;;;-1:-1:-1;12612:30:0;;;;;;;;;-1:-1:-1;12612:30:0;;;;;;;12456:194;:::o;9967:215::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;10055:1;10043:13;;10035:22;;;;;;10123:9;10068:11;:52;10090:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10090:28:0;;;10080:39;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;;377:20;365:33;;10080:39:0;;;;;;;;;;;;;10068:52;;;;;;;;;-1:-1:-1;10068:52:0;;;-1:-1:-1;10068:52:0;:64;;;;-1:-1:-1;10148:26:0;;;;;;;;;-1:-1:-1;10148:26:0;;;;;;;9967:215;:::o;18954:180::-;19008:7;19050:5;19073:53;19084:41;19050:5;19084:24;19095:12;:10;:12::i;:::-;19084:6;;:24;:10;:24;:::i;:::-;:28;:41;:28;:41;:::i;:::-;19073:6;;:53;:10;:53;:::i;13404:186::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;13494:12;:10;:12::i;:::-;13482:24;;13474:33;;;;;;13573:9;13518:11;:52;13540:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13540:28:0;;;13530:39;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;5824:131:0;5876:7;5929:4;-1:-1:-1;;;;;5903:42:0;;:44;;;;;-1:-1:-1;;;5903:44:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;11651:127:0;11691:7;11718:11;:52;11740:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11740:28:0;;;11730:39;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;13818:242:0;13876:4;13893:17;13913:46;13951:7;13913:33;13930:15;:13;:15::i;:::-;13913:16;:33::i;:46::-;13893:66;;13993:9;13977:12;:10;:12::i;:::-;:25;;:50;;;;;14017:10;:8;:10::i;:::-;14006:7;:21;;13977:50;:75;;;;;14042:10;:8;:10::i;:::-;14031:21;;;;;13818:242;-1:-1:-1;;13818:242:0:o;13183:213::-;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;13282:21;:19;:21::i;:::-;13270:33;;13262:42;;;;;;13379:9;13315:11;:61;13337:37;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13337:37:0;;;13327:48;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;8439:141:0;8004:7;:5;:7::i;:::-;-1:-1:-1;;;;;7990:21:0;:10;:21;7982:30;;;;;;-1:-1:-1;;;;;8520:22:0;;;;8512:31;;;;;;8554:18;8563:8;8554;:18::i;:::-;8439:141;:::o;11786:127::-;11826:7;11853:11;:52;11875:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11875:28:0;;;11865:39;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;10190:127:0;10230:7;10257:11;:52;10279:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10279:28:0;;;10269:39;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;4586:911:0;4832:26;4963:12;5010:37;5101:9;5160:24;4796;4811:8;4796:14;:24::i;:::-;4788:33;;;;;;;;4861:18;-1:-1:-1;;;;;4861:37:0;;:39;;;;;-1:-1:-1;;;4861:39:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4861:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4861:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4861:39:0;4919:10;;4861:39;;-1:-1:-1;4919:32:0;-1:-1:-1;4919:32:0;4911:41;;;;;;4978:21;4990:8;4978:11;:21::i;:::-;4963:36;;5064:18;5050:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;5050:33:0;;5010:73;;5113:1;5101:13;;5096:394;5120:18;5116:1;:22;5096:394;;;5187:39;5197:4;5203:3;5207:1;5203:6;;;;;;;;;;;;;;;;;;5211:3;5215:1;5211:6;;;;;;;;;;;;;;;;;;5219:3;5223:1;5219:6;;;;;;;;;;;;;;;;;;;;5187:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5219:6;;-1:-1:-1;;5187:39:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5187:39:0;;;;;;;;5160:66;;5249:18;-1:-1:-1;;;;;5249:30:0;;5280:16;5249:48;;;;;-1:-1:-1;;;5249:48:0;;;;;;;-1:-1:-1;;;;;5249:48:0;-1:-1:-1;;;;;5249:48:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5249:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5249:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5249:48:0;5241:57;;;;;;;;5317:60;5338:20;5360:16;5317:20;:60::i;:::-;5313:109;;;5398:8;;;5313:109;5462:16;5436:20;5457:1;5436:23;;;;;;;;;;-1:-1:-1;;;;;5436:42:0;;;:23;;;;;;;;;;:42;5140:3;;;;;5096:394;;;4586:911;;;;;;;;;;:::o;3017:499::-;3103:17;3122:14;3138;3154:23;3203;3218:7;3203:14;:23::i;:::-;3195:32;;;;;;;;-1:-1:-1;;;;;3298:2:0;3289:7;3285:16;3279:23;3275:72;3262:85;;3390:2;3381:7;3377:16;3371:23;3361:33;;3437:2;3428:7;3424:16;3418:23;3408:33;;3493:3;3484:7;3480:17;3474:24;3455:43;;3247:262;;;;;:::o;23164:129::-;23232:4;23256:29;23277:7;23256:20;:29::i;:::-;23249:36;23164:129;-1:-1:-1;;23164:129:0:o;16128:165::-;16278:7;16207:11;:68;16265:7;16229:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16229:44:0;;;16219:55;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16219:55:0;;;;;;;;;;;;;16207:68;;;;;;;;;;;;-1:-1:-1;16207:68:0;:78;;-1:-1:-1;;16207:78:0;;;;;;;;;;;-1:-1:-1;;;;;16128:165:0:o;21674:1280::-;21754:4;21983:11;22016:17;22071:27;22152:28;22220:32;22317:9;22594:26;21770:90;21793:15;:13;:15::i;:::-;21810:49;21851:7;21810:36;21830:15;:13;:15::i;21810:49::-;21770:22;:90::i;:::-;21875:12;:10;:12::i;:::-;:17;21871:1076;;;21916:34;21930:10;21942:7;21916:13;:34::i;:::-;21909:41;;;;21871:1076;21997:4;21983:18;;22036:20;22048:7;22036:11;:20::i;:::-;22016:40;;22101:19;:17;:19::i;:::-;-1:-1:-1;;;;;22101:34:0;;:36;;;;;-1:-1:-1;;;22101:36:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22101:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22101:36:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;22101:36:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;22101:36:0;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;-1:-1;22101:36:0;;-1:-1:-1;22183:22:0;;-1:-1:-1;22183:7:0;;-1:-1:-1;22195:9:0;;-1:-1:-1;;22183:22:0;:11;:22;:::i;:::-;22152:53;;22255:43;22280:10;:17;22255:20;:24;;:43;;;;:::i;:::-;22220:78;;22329:1;22317:13;;22313:159;22356:1;22336:10;:17;:21;22332:1;:25;22313:159;;;22392:6;:64;;;;;22402:54;22416:10;22427:1;22416:13;;;;;;;;;;;;;;;;;;22431:24;22402:13;:54::i;:::-;22383:73;-1:-1:-1;22359:3:0;;;;;22313:159;;;22623:112;22666:54;22695:24;22717:1;22695:10;:17;:21;;:24;;;;:::i;:::-;22666;;:54;:28;:54;:::i;:::-;22623:20;;:112;:24;:112;:::i;:::-;22594:141;;22759:6;:78;;;;;22769:68;22783:10;22814:1;22794:10;:17;:21;22783:33;;;;;;;;;;;;;;;;;;22818:18;22769:13;:68::i;:::-;22750:87;;22861:6;:46;;;;;22871:36;22885:10;22897:9;22871:13;:36::i;:::-;22852:55;;22929:6;22922:13;;21871:1076;21674:1280;;;;;;;;;;;:::o;14721:178::-;14779:4;14844:18;;14881:10;;14721:178::o;22962:194::-;-1:-1:-1;;;;;23028:20:0;;;;;;:42;;;23052:18;23063:6;23052:10;:18::i;:::-;23020:51;;;;;;;;23142:6;23082:14;:57;23107:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;23107:30:0;;;23097:41;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;23097:41:0;;;;;;;;;;;;;23082:57;;;;;;;;;;;;-1:-1:-1;23082:57:0;:66;;-1:-1:-1;;23082:66:0;-1:-1:-1;;;;;23082:66:0;;;;;;;;;;;-1:-1:-1;;;;22962:194:0:o;8642:182::-;8703:39;8724:7;:5;:7::i;:::-;8703:39;;;-1:-1:-1;;;;;8703:39:0;;;;;;;;;;;;;;;;;;;;;8808:8;8753:14;:52;8778:25;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8778:25:0;;;8768:36;;;;;;;;;;;;;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;12074:132:0;12191:7;12131:11;:57;12153:33;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12153:33:0;;;12143:44;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;12143:44:0;;;;;;;;;;;;;12131:57;;;;;;;;;;;;-1:-1:-1;12131:57:0;:67;;-1:-1:-1;;12131:67:0;;;;;;;;;;;-1:-1:-1;;;;12074:132:0:o;14323:388::-;14568:16;14616:15;6124:21;:19;:21::i;:::-;-1:-1:-1;;;;;6110:35:0;:10;:35;6102:44;;;;;;-1:-1:-1;;;;;14418:17:0;;;;14410:26;;;;;;-1:-1:-1;;;;;14451:20:0;;;14447:109;;;14488:35;;-1:-1:-1;;;;;14488:12:0;;;14509:4;14501:21;14488:35;;;;;;;;;14501:21;14488:12;:35;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14488:35:0;14538:7;;14447:109;14634:21;;;;;;14650:4;14634:21;;;;;;14598:6;;-1:-1:-1;;;;;;14634:15:0;;;;;:21;;;;;;;;;;;;;;-1:-1:-1;14634:15:0;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;14634:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14634:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14634:21:0;14674:28;;;;;;-1:-1:-1;;;;;14674:28:0;;;;;;;;;;;;;;;14634:21;;-1:-1:-1;14674:14:0;;;;;;:28;;;;;14634:21;;14674:28;;;;;;;;-1:-1:-1;14674:14:0;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;14674:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14674:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14674:28:0;14666:37;;;;;;;;14323:388;;;;:::o;1094:133::-;1152:7;1180:5;;;1199:6;;;;1192:14;;;;1220:1;1213:8;;1094:133;;;;;;:::o;259:180::-;317:7;;337:6;;333:37;;;361:1;354:8;;;;333:37;-1:-1:-1;388:5:0;;;392:1;388;:5;407;;;;;;;;:10;400:18;;;526:270;584:7;675:9;691:1;687;:5;;;;;;;;;526:270;-1:-1:-1;;;;526:270:0:o;914:113::-;972:7;995:6;;;;988:14;;;;-1:-1:-1;1016:5:0;;;914:113::o;3524:128::-;3582:4;3621:23;:21;:23::i;:::-;3606:4;:11;:38;3599:45;;3524:128;;;:::o;4282:296::-;4361:54;;;;;;;;;;;;;;;;;;;4466:31;;;;;;;;;;;;;;;4525:44;;;;4341:7;;4466:31;4361:54;;4466:31;;4561:7;;4525:44;;;;;;;4361:54;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;4525:44:0;;;;;;;;;;-1:-1:-1;4525:44:0;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;4525:44:0;;;;;;;;;;-1:-1:-1;4525:44:0;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4525:44:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4525:44:0;;;4515:55;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;4515:55:0;;;;;;;;;;;;-1:-1:-1;;;;;;;4282:296:0:o;1696:270::-;1781:4;;1798:138;1822:5;:12;1818:1;:16;1798:138;;;1872:5;-1:-1:-1;;;;;1860:17:0;:5;1866:1;1860:8;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1860:17:0;;1856:69;;;1905:4;1898:11;;;;1856:69;1836:3;;1798:138;;;-1:-1:-1;1953:5:0;;1696:270;-1:-1:-1;;;1696:270:0:o;11300:168::-;11454:6;11382:11;:69;11444:4;11404:45;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11404:45:0;;;11394:56;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11394:56:0;;;;;;;;;;;;;11382:69;;;;;;;;;;;;-1:-1:-1;11382:69:0;:78;;;;-1:-1:-1;;;;;11300:168:0:o;21471:195::-;21548:4;21572:12;:10;:12::i;:::-;-1:-1:-1;;;;;21572:17:0;21597:38;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21572:86:0;;21638:10;21650:7;21572:86;;;;;-1:-1:-1;;;21572:86:0;;;;;;;-1:-1:-1;;;;;21572:86:0;-1:-1:-1;;;;;21572:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;21471:195;-1:-1:-1;;;;;;21471:195:0:o;3660:93::-;3742:3;3660:93;:::o
Swarm Source
bzzr://75d2b32b4b7bf50203ed6ebca25284c3a216d9412e9688de1d16e6e5f5a68521
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.