ETH Price: $3,174.90 (-2.41%)

Contract

0x415379f5d396FEAb48cd26D6bA5e5aFDbe9C5e15
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim94527042020-02-10 3:38:301738 days ago1581305910IN
0x415379f5...Dbe9C5e15
0 ETH0.000447558
Htlc94527022020-02-10 3:38:071738 days ago1581305887IN
0x415379f5...Dbe9C5e15
0 ETH0.002121938
Refund94372182020-02-07 18:36:061740 days ago1581100566IN
0x415379f5...Dbe9C5e15
0 ETH0.000183728
Claim94372182020-02-07 18:36:061740 days ago1581100566IN
0x415379f5...Dbe9C5e15
0 ETH0.00011735
Htlc94371992020-02-07 18:32:431740 days ago1581100363IN
0x415379f5...Dbe9C5e15
0 ETH0.000255959
Claim94359192020-02-07 13:52:091740 days ago1581083529IN
0x415379f5...Dbe9C5e15
0 ETH0.000555079.922
Htlc94359162020-02-07 13:51:031740 days ago1581083463IN
0x415379f5...Dbe9C5e15
0 ETH0.002573089.7
Refund94331022020-02-07 3:12:251741 days ago1581045145IN
0x415379f5...Dbe9C5e15
0 ETH0.000218364
Htlc94281952020-02-06 9:11:501742 days ago1580980310IN
0x415379f5...Dbe9C5e15
0 ETH0.001326215
Htlc94227892020-02-05 13:02:491742 days ago1580907769IN
0x415379f5...Dbe9C5e15
0 ETH0.002387179
Claim94226752020-02-05 12:39:531742 days ago1580906393IN
0x415379f5...Dbe9C5e15
0 ETH0.000167833
Htlc94226652020-02-05 12:38:171742 days ago1580906297IN
0x415379f5...Dbe9C5e15
0 ETH0.002387079
Claim94226372020-02-05 12:32:401742 days ago1580905960IN
0x415379f5...Dbe9C5e15
0 ETH0.000443077.92
Htlc94225992020-02-05 12:22:511742 days ago1580905371IN
0x415379f5...Dbe9C5e15
0 ETH0.001909657.2
Claim94225782020-02-05 12:16:401742 days ago1580905000IN
0x415379f5...Dbe9C5e15
0 ETH0.000402797.2
Htlc94225752020-02-05 12:16:191742 days ago1580904979IN
0x415379f5...Dbe9C5e15
0 ETH0.002387179
Claim94225422020-02-05 12:06:491743 days ago1580904409IN
0x415379f5...Dbe9C5e15
0 ETH0.000503499
Htlc94225392020-02-05 12:06:291743 days ago1580904389IN
0x415379f5...Dbe9C5e15
0 ETH0.002122128
Htlc94224792020-02-05 11:54:321743 days ago1580903672IN
0x415379f5...Dbe9C5e15
0 ETH0.002387079
Claim94215992020-02-05 8:44:351743 days ago1580892275IN
0x415379f5...Dbe9C5e15
0 ETH0.000123072.2
Htlc94215942020-02-05 8:43:481743 days ago1580892228IN
0x415379f5...Dbe9C5e15
0 ETH0.001591456
Htlc94215622020-02-05 8:36:471743 days ago1580891807IN
0x415379f5...Dbe9C5e15
0 ETH0.00022768
Htlc94210232020-02-05 6:40:061743 days ago1580884806IN
0x415379f5...Dbe9C5e15
0 ETH0.000056952
Refund94208062020-02-05 5:42:311743 days ago1580881351IN
0x415379f5...Dbe9C5e15
0 ETH0.000281625
Htlc94205422020-02-05 4:44:321743 days ago1580877872IN
0x415379f5...Dbe9C5e15
0 ETH0.00041862
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20HTLC

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-01-10
*/

pragma solidity 0.5.8;

interface ERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address who) external view returns (uint256);
	function transfer(address to, uint256 value) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function transferFrom(address from, address to, uint256 value) external returns (bool);
	function approve(address spender, uint256 value) external returns (bool);
}

contract ERC20HTLC {
	struct Swap {
		uint256 outAmount; //The ERC20 Pra amount to swap out
		uint256 expireHeight; //The height of blocks to wait before the asset can be returned to sender
		bytes32 randomNumberHash;
		uint64 timestamp;
		address senderAddr; //The swap creator address
		uint256 senderChainType;
		uint256 receiverChainType;
		address recipientAddr; //The ethereum address to lock swapped assets, counter-party of senderAddr
		string receiverAddr; //The PRA address (DID) to swap out
	}

	enum States {INVALID, OPEN, COMPLETED, EXPIRED}

	enum ChainTypes {ETH, PRA}

	// Events
	event HTLC(
		address indexed _msgSender,
		address indexed _recipientAddr,
		bytes32 indexed _swapID,
		bytes32 _randomNumberHash,
		uint64 _timestamp,
		uint256 _expireHeight,
		uint256 _outAmount,
		uint256 _praAmount,
		string _receiverAddr
	);
	event Claimed(
		address indexed _msgSender,
		address indexed _recipientAddr,
		bytes32 indexed _swapID,
		bytes32 _randomNumber,
		string _receiverAddr
	);
	event Refunded(
		address indexed _msgSender,
		address indexed _recipientAddr,
		bytes32 indexed _swapID,
		bytes32 _randomNumberHash,
		string _receiverAddr
	);

	// Storage, key: swapID
	mapping(bytes32 => Swap) private swaps;
	mapping(bytes32 => States) private swapStates;

	address public praContractAddr;
	address public owner;
	address public admin;

	// whether the contract is paused
    bool public paused = false;

	/// @notice Throws if the swap is not open.
	modifier onlyOpenSwaps(bytes32 _swapID) {
		require(swapStates[_swapID] == States.OPEN, "swap is not opened");
		_;
	}

	/// @notice Throws if the swap is already expired.
	modifier onlyAfterExpireHeight(bytes32 _swapID) {
		require(block.number >= swaps[_swapID].expireHeight, "swap is not expired");
		_;
	}

	/// @notice Throws if the expireHeight is reached
	modifier onlyBeforeExpireHeight(bytes32 _swapID) {
		require(block.number < swaps[_swapID].expireHeight, "swap is already expired");
		_;
	}

	/// @notice Throws if the random number is not valid.
	modifier onlyWithRandomNumber(bytes32 _swapID, bytes32 _randomNumber) {
		require(
			swaps[_swapID].randomNumberHash == sha256(abi.encodePacked(_randomNumber, swaps[_swapID].timestamp)),
			"invalid randomNumber"
		);
		_;
	}

	/// @param _praContract The PRA contract address
	constructor(address _praContract) public {
		praContractAddr = _praContract;
		owner = msg.sender;
	}

	/// @notice Throws if the msg.sender is not admin or owner.
	modifier onlyAdmin() {
		require(msg.sender == admin || msg.sender == owner);
		_;
	}

	/// @notice Modifier to allow actions only when the contract IS NOT paused
	modifier whenNotPaused() {
		require(!paused);
		_;
	}

	/// @notice Modifier to allow actions only when the contract IS paused
	modifier whenPaused {
		require(paused);
		_;
	}

	/// @notice to pause the contract.
	function pause() public onlyAdmin whenNotPaused {
		paused = true;
	}

	/// @notice to unpause the contract.
	function unpause() public onlyAdmin whenPaused {
		paused = false;
	}

	/// @notice setAdmin set new admin address.
	///
	/// @param _new_admin The new admin address.
	function setAdmin(address _new_admin) public onlyAdmin {
		require(_new_admin != address(0));
		admin = _new_admin;
	}

	/// @notice setPraAddress set new PRA-ERC20 contract address.
	///
	/// @param _praContract The new PRA-ERC20 contract address.
	function setPraAddress(address _praContract) public onlyAdmin {
		praContractAddr = _praContract;
	}

	// swap may only be built through the htlc function
	function() external payable { revert();	}

	//TODO: init set recipientAddr

	/// @notice htlt locks asset to contract address and create an atomic swap.
	///
	/// @param _randomNumberHash The hash of the random number and timestamp
	/// @param _timestamp Counted by second
	/// @param _heightSpan The number of blocks to wait before the asset can be returned to sender
	/// @param _recipientAddr The ethereum address to lock swapped assets.
	/// @param _outAmount PRA ERC20 asset to swap out, precision is 18
	/// @param _praAmount PRA asset to swap in, precision is 18
	/// @param _receiverAddr PRA DID to swap in.
	function htlc(
		bytes32 _randomNumberHash,
		uint64 _timestamp,
		uint256 _heightSpan,
		address _recipientAddr,
		uint256 _outAmount,
		uint256 _praAmount,
		string memory _receiverAddr
	) public whenNotPaused returns (bool) {
		bytes32 swapID = calSwapID(_randomNumberHash, _receiverAddr);
		require(swapStates[swapID] == States.INVALID, "swap is opened previously");
		// Assume average block time interval is 3 second
		// The heightSpan period should be more than 5 minutes and less than one week
		require(_heightSpan >= 60 && _heightSpan <= 60480, "_heightSpan should be in [60, 60480]");
		require(_recipientAddr != address(0), "_recipientAddr should not be zero");
		require(_outAmount >= 10000000, "_outAmount must be more than 0.1");
		require(
			_timestamp > now - 1800 && _timestamp < now + 900,
			"Timestamp can neither be 15 minutes ahead of the current time, nor 30 minutes later"
		);
		require(_outAmount == _praAmount, "_outAmount must be equal _praAmount");
		//TODO: check _receiverAddr is valid
		//TODO: check _recipientAddr's auth

		// Store the details of the swap.
		Swap memory swap = Swap({
			outAmount: _outAmount,
			expireHeight: _heightSpan + block.number,
			randomNumberHash: _randomNumberHash,
			timestamp: _timestamp,
			senderAddr: msg.sender,
			senderChainType: uint256(ChainTypes.ETH),
			receiverAddr: _receiverAddr,
			receiverChainType: uint256(ChainTypes.PRA),
			recipientAddr: _recipientAddr
		});

		swaps[swapID] = swap;
		swapStates[swapID] = States.OPEN;

		// Transfer pra token to the swap contract
		require(
			ERC20(praContractAddr).transferFrom(msg.sender, address(this), _outAmount),
			"failed to transfer client asset to swap contract"
		);

		// Emit initialization event
		emit HTLC(
			msg.sender,
			_recipientAddr,
			swapID,
			_randomNumberHash,
			_timestamp,
			swap.expireHeight,
			_outAmount,
			_praAmount,
			_receiverAddr
		);

		return true;
	}

	/// @notice claim claims the previously locked asset.
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	/// @param _randomNumber The random number
	function claim(bytes32 _swapID, bytes32 _randomNumber)
		external
		onlyOpenSwaps(_swapID)
		onlyBeforeExpireHeight(_swapID)
		onlyWithRandomNumber(_swapID, _randomNumber)
		whenNotPaused
		returns (bool)
	{
		// Complete the swap.
		swapStates[_swapID] = States.COMPLETED;

		address recipientAddr = swaps[_swapID].recipientAddr;
		string memory receiverAddr = swaps[_swapID].receiverAddr;
		//uint256 receiverChainType = swaps[_swapID].receiverChainType;
		//uint256 senderChainType = swaps[_swapID].senderChainType;
		uint256 outAmount = swaps[_swapID].outAmount;
		//bytes32 randomNumberHash = swaps[_swapID].randomNumberHash;

		// Pay erc20 token to recipient
		require(
			ERC20(praContractAddr).transfer(recipientAddr, outAmount),
			"Failed to transfer locked asset to recipient"
		);

		// delete closed swap
		delete swaps[_swapID];

		// Emit completion event
		emit Claimed(msg.sender, recipientAddr, _swapID, _randomNumber, receiverAddr);

		return true;
	}

	/// @notice refund refunds the previously locked asset.
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	function refund(bytes32 _swapID) external onlyOpenSwaps(_swapID) onlyAfterExpireHeight(_swapID) returns (bool) {
		// Expire the swap.
		swapStates[_swapID] = States.EXPIRED;

		address swapSender = swaps[_swapID].senderAddr;
		string memory receiverAddr = swaps[_swapID].receiverAddr;
		uint256 outAmount = swaps[_swapID].outAmount;
		bytes32 randomNumberHash = swaps[_swapID].randomNumberHash;
		address recipientAddr = swaps[_swapID].recipientAddr;

		// refund erc20 token to swap creator
		require(
			ERC20(praContractAddr).transfer(swapSender, outAmount),
			"Failed to transfer locked asset back to swap creator"
		);

		// delete closed swap
		delete swaps[_swapID];

		// Emit expire event
		emit Refunded(msg.sender, recipientAddr, _swapID, randomNumberHash, receiverAddr);

		return true;
	}

	/// @notice query an atomic swap by randomNumberHash
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	function queryOpenSwap(bytes32 _swapID)
		external
		view
		returns (
			bytes32 _randomNumberHash,
			uint64 _timestamp,
			uint256 _expireHeight,
			uint256 _outAmount,
			address _sender,
			address _recipient
		)
	{
		Swap memory swap = swaps[_swapID];
		return (
			swap.randomNumberHash,
			swap.timestamp,
			swap.expireHeight,
			swap.outAmount,
			swap.senderAddr,
			swap.recipientAddr
		);
	}

	/// @notice Checks whether a swap with specified swapID exist
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	function isSwapExist(bytes32 _swapID) external view returns (bool) {
		return (swapStates[_swapID] != States.INVALID);
	}

	/// @notice Checks whether a swap is refundable or not.
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	function refundable(bytes32 _swapID) external view returns (bool) {
		return (block.number >= swaps[_swapID].expireHeight && swapStates[_swapID] == States.OPEN);
	}

	/// @notice Checks whether a swap is claimable or not.
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	function claimable(bytes32 _swapID) external view returns (bool) {
		return (block.number < swaps[_swapID].expireHeight && swapStates[_swapID] == States.OPEN);
	}

	/// @notice Calculate the swapID from randomNumberHash and swapCreator
	///
	/// @param _randomNumberHash The hash of random number and timestamp.
	/// @param receiverAddr The PRA address (DID) to swap out
	function calSwapID(bytes32 _randomNumberHash, string memory receiverAddr) public pure returns (bytes32) {
		return sha256(abi.encodePacked(_randomNumberHash, receiverAddr));
	}
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"praContractAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_randomNumberHash","type":"bytes32"},{"name":"_timestamp","type":"uint64"},{"name":"_heightSpan","type":"uint256"},{"name":"_recipientAddr","type":"address"},{"name":"_outAmount","type":"uint256"},{"name":"_praAmount","type":"uint256"},{"name":"_receiverAddr","type":"string"}],"name":"htlc","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_swapID","type":"bytes32"}],"name":"isSwapExist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_new_admin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_swapID","type":"bytes32"}],"name":"refund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_swapID","type":"bytes32"},{"name":"_randomNumber","type":"bytes32"}],"name":"claim","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_swapID","type":"bytes32"}],"name":"claimable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_swapID","type":"bytes32"}],"name":"refundable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_swapID","type":"bytes32"}],"name":"queryOpenSwap","outputs":[{"name":"_randomNumberHash","type":"bytes32"},{"name":"_timestamp","type":"uint64"},{"name":"_expireHeight","type":"uint256"},{"name":"_outAmount","type":"uint256"},{"name":"_sender","type":"address"},{"name":"_recipient","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_praContract","type":"address"}],"name":"setPraAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_randomNumberHash","type":"bytes32"},{"name":"receiverAddr","type":"string"}],"name":"calSwapID","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_praContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_msgSender","type":"address"},{"indexed":true,"name":"_recipientAddr","type":"address"},{"indexed":true,"name":"_swapID","type":"bytes32"},{"indexed":false,"name":"_randomNumberHash","type":"bytes32"},{"indexed":false,"name":"_timestamp","type":"uint64"},{"indexed":false,"name":"_expireHeight","type":"uint256"},{"indexed":false,"name":"_outAmount","type":"uint256"},{"indexed":false,"name":"_praAmount","type":"uint256"},{"indexed":false,"name":"_receiverAddr","type":"string"}],"name":"HTLC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_msgSender","type":"address"},{"indexed":true,"name":"_recipientAddr","type":"address"},{"indexed":true,"name":"_swapID","type":"bytes32"},{"indexed":false,"name":"_randomNumber","type":"bytes32"},{"indexed":false,"name":"_receiverAddr","type":"string"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_msgSender","type":"address"},{"indexed":true,"name":"_recipientAddr","type":"address"},{"indexed":true,"name":"_swapID","type":"bytes32"},{"indexed":false,"name":"_randomNumberHash","type":"bytes32"},{"indexed":false,"name":"_receiverAddr","type":"string"}],"name":"Refunded","type":"event"}]

60806040526000600460146101000a81548160ff02191690831515021790555034801561002b57600080fd5b5060405160208061284e8339810180604052602081101561004b57600080fd5b810190808051906020019092919050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612760806100ee6000396000f3fe6080604052600436106100f35760003560e01c806384cc9dfb1161008a578063b48017b111610059578063b48017b114610539578063c1f20d2214610617578063d203406114610668578063f851a4401461074e576100f3565b806384cc9dfb146103df5780638da5cb5b1461043c5780639b58e0a1146104935780639fb31475146104e6576100f3565b80635c975abb116100c65780635c975abb146102f5578063704b6c02146103245780637249fbb6146103755780638456cb59146103c8576100f3565b806304abb303146100f85780633f4ba83a1461014f5780634e928aaf1461016657806350f7a03b146102a2575b600080fd5b34801561010457600080fd5b5061010d6107a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561015b57600080fd5b506101646107cb565b005b34801561017257600080fd5b50610288600480360360e081101561018957600080fd5b8101908080359060200190929190803567ffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561020257600080fd5b82018360208201111561021457600080fd5b8035906020019184600183028401116401000000008311171561023657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506108b3565b604051808215151515815260200191505060405180910390f35b3480156102ae57600080fd5b506102db600480360360208110156102c557600080fd5b8101908080359060200190929190505050611040565b604051808215151515815260200191505060405180910390f35b34801561030157600080fd5b5061030a611083565b604051808215151515815260200191505060405180910390f35b34801561033057600080fd5b506103736004803603602081101561034757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611096565b005b34801561038157600080fd5b506103ae6004803603602081101561039857600080fd5b81019080803590602001909291905050506111c6565b604051808215151515815260200191505060405180910390f35b3480156103d457600080fd5b506103dd611762565b005b3480156103eb57600080fd5b506104226004803603604081101561040257600080fd5b81019080803590602001909291908035906020019092919050505061184b565b604051808215151515815260200191505060405180910390f35b34801561044857600080fd5b50610451611f3d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049f57600080fd5b506104cc600480360360208110156104b657600080fd5b8101908080359060200190929190505050611f63565b604051808215151515815260200191505060405180910390f35b3480156104f257600080fd5b5061051f6004803603602081101561050957600080fd5b8101908080359060200190929190505050611fc6565b604051808215151515815260200191505060405180910390f35b34801561054557600080fd5b506105726004803603602081101561055c57600080fd5b810190808035906020019092919050505061202a565b604051808781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34801561062357600080fd5b506106666004803603602081101561063a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612241565b005b34801561067457600080fd5b506107386004803603604081101561068b57600080fd5b8101908080359060200190929190803590602001906401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460018302840111640100000000831117156106e657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612337565b6040518082815260200191505060405180910390f35b34801561075a57600080fd5b50610763612451565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108745750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61087d57600080fd5b600460149054906101000a900460ff1661089657600080fd5b6000600460146101000a81548160ff021916908315150217905550565b6000600460149054906101000a900460ff16156108cf57600080fd5b60006108db8984612337565b9050600060038111156108ea57fe5b6001600083815260200190815260200160002060009054906101000a900460ff16600381111561091657fe5b14610989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73776170206973206f70656e65642070726576696f75736c790000000000000081525060200191505060405180910390fd5b603c871015801561099c575061ec408711155b6109f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061268e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610a77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061266d6021913960400191505060405180910390fd5b62989680851015610af0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5f6f7574416d6f756e74206d757374206265206d6f7265207468616e20302e3181525060200191505060405180910390fd5b61070842038867ffffffffffffffff16118015610b1a575061038442018867ffffffffffffffff16105b610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260538152602001806126b26053913960600191505060405180910390fd5b838514610bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061261e6023913960400191505060405180910390fd5b610bcf612477565b604051806101200160405280878152602001438a0181526020018b81526020018a67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160006001811115610c2857fe5b8152602001600180811115610c3957fe5b81526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018581525090508060008084815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816004015560c0820151816005015560e08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610100820151816007019080519060200190610d7f9291906124fc565b50905050600180600084815260200190815260200160002060006101000a81548160ff02191690836003811115610db257fe5b0217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610e9457600080fd5b505af1158015610ea8573d6000803e3d6000fd5b505050506040513d6020811015610ebe57600080fd5b8101908080519060200190929190505050610f24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127056030913960400191505060405180910390fd5b818773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5a0cc384a12a55445d4625db5d24f6a72177fd330644e2d4b3ea0ebd6f78c54d8d8d86602001518c8c8c604051808781526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ff0578082015181840152602081019050610fd5565b50505050905090810190601f16801561101d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600192505050979650505050505050565b600080600381111561104e57fe5b6001600084815260200190815260200160002060009054906101000a900460ff16600381111561107a57fe5b14159050919050565b600460149054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061113f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61114857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561118257600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600160038111156111d657fe5b6001600083815260200190815260200160002060009054906101000a900460ff16600381111561120257fe5b14611275576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f73776170206973206e6f74206f70656e6564000000000000000000000000000081525060200191505060405180910390fd5b8260008082815260200190815260200160002060010154431015611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f73776170206973206e6f7420657870697265640000000000000000000000000081525060200191505060405180910390fd5b60036001600086815260200190815260200160002060006101000a81548160ff0219169083600381111561133157fe5b0217905550600080600086815260200190815260200160002060030160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606000808781526020019081526020016000206007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561141b5780601f106113f05761010080835404028352916020019161141b565b820191906000526020600020905b8154815290600101906020018083116113fe57829003601f168201915b505050505090506000806000888152602001908152602001600020600001549050600080600089815260200190815260200160002060020154905060008060008a815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050506040513d602081101561156357600080fd5b81019080805190602001909291905050506115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806125ea6034913960400191505060405180910390fd5b6000808a8152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff02191690556003820160086101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600482016000905560058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600061167d919061257c565b5050888173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f215e15eef6d0300f9e89d940198e4f7fc22e44b7c80118c03571cd96da6c6c9885886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117175780820151818401526020810190506116fc565b50505050905090810190601f1680156117445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a46001975050505050505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061180b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61181457600080fd5b600460149054906101000a900460ff161561182e57600080fd5b6001600460146101000a81548160ff021916908315150217905550565b6000826001600381111561185b57fe5b6001600083815260200190815260200160002060009054906101000a900460ff16600381111561188757fe5b146118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f73776170206973206e6f74206f70656e6564000000000000000000000000000081525060200191505060405180910390fd5b83600080828152602001908152602001600020600101544310611985576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f7377617020697320616c7265616479206578706972656400000000000000000081525060200191505060405180910390fd5b848460028160008085815260200190815260200160002060030160009054906101000a900467ffffffffffffffff16604051602001808381526020018267ffffffffffffffff1667ffffffffffffffff1660c01b8152600801925050506040516020818303038152906040526040518082805190602001908083835b60208310611a245780518252602082019150602081019050602083039250611a01565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015611a66573d6000803e3d6000fd5b5050506040513d6020811015611a7b57600080fd5b81019080805190602001909291905050506000808481526020019081526020016000206002015414611b15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c69642072616e646f6d4e756d62657200000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff1615611b2f57600080fd5b60026001600089815260200190815260200160002060006101000a81548160ff02191690836003811115611b5f57fe5b0217905550600080600089815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606000808a81526020019081526020016000206007018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c495780601f10611c1e57610100808354040283529160200191611c49565b820191906000526020600020905b815481529060010190602001808311611c2c57829003601f168201915b5050505050905060008060008b8152602001908152602001600020600001549050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b505050506040513d6020811015611d3d57600080fd5b8101908080519060200190929190505050611da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612641602c913960400191505060405180910390fd5b6000808b8152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff02191690556003820160086101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600482016000905560058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600782016000611e57919061257c565b5050898373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f07a9dd1ef03da239626dc5c5bac1995991043d2b6e0e23ca789bbc0a16eb911f8c866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ef1578082015181840152602081019050611ed6565b50505050905090810190601f168015611f1e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4600197505050505050505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008381526020019081526020016000206001015443108015611fbf575060016003811115611f9157fe5b6001600084815260200190815260200160002060009054906101000a900460ff166003811115611fbd57fe5b145b9050919050565b6000806000838152602001908152602001600020600101544310158015612023575060016003811115611ff557fe5b6001600084815260200190815260200160002060009054906101000a900460ff16600381111561202157fe5b145b9050919050565b60008060008060008061203b612477565b600080898152602001908152602001600020604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600782018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122025780601f106121d757610100808354040283529160200191612202565b820191906000526020600020905b8154815290600101906020018083116121e557829003601f168201915b5050505050815250509050806040015181606001518260200151836000015184608001518560e001519650965096509650965096505091939550919395565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122ea5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6122f357600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600283836040516020018083815260200182805190602001908083835b602083106123795780518252602082019150602081019050602083039250612356565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106123e157805182526020820191506020810190506020830392506123be565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015612423573d6000803e3d6000fd5b5050506040513d602081101561243857600080fd5b8101908080519060200190929190505050905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b604051806101200160405280600081526020016000815260200160008019168152602001600067ffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061253d57805160ff191683800117855561256b565b8280016001018555821561256b579182015b8281111561256a57825182559160200191906001019061254f565b5b50905061257891906125c4565b5090565b50805460018160011615610100020316600290046000825580601f106125a257506125c1565b601f0160209004906000526020600020908101906125c091906125c4565b5b50565b6125e691905b808211156125e25760008160009055506001016125ca565b5090565b9056fe4661696c656420746f207472616e73666572206c6f636b6564206173736574206261636b20746f20737761702063726561746f725f6f7574416d6f756e74206d75737420626520657175616c205f707261416d6f756e744661696c656420746f207472616e73666572206c6f636b656420617373657420746f20726563697069656e745f726563697069656e74416464722073686f756c64206e6f74206265207a65726f5f6865696768745370616e2073686f756c6420626520696e205b36302c2036303438305d54696d657374616d702063616e206e656974686572206265203135206d696e75746573206168656164206f66207468652063757272656e742074696d652c206e6f72203330206d696e75746573206c617465726661696c656420746f207472616e7366657220636c69656e7420617373657420746f207377617020636f6e7472616374a165627a7a7230582074029285c5d493faa4f8f92545ca44c7ea56e3496e636ba11c1bf0a5558b606600290000000000000000000000009041fe5b3fdea0f5e4afdc17e75180738d877a01

Deployed Bytecode

0x6080604052600436106100f35760003560e01c806384cc9dfb1161008a578063b48017b111610059578063b48017b114610539578063c1f20d2214610617578063d203406114610668578063f851a4401461074e576100f3565b806384cc9dfb146103df5780638da5cb5b1461043c5780639b58e0a1146104935780639fb31475146104e6576100f3565b80635c975abb116100c65780635c975abb146102f5578063704b6c02146103245780637249fbb6146103755780638456cb59146103c8576100f3565b806304abb303146100f85780633f4ba83a1461014f5780634e928aaf1461016657806350f7a03b146102a2575b600080fd5b34801561010457600080fd5b5061010d6107a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561015b57600080fd5b506101646107cb565b005b34801561017257600080fd5b50610288600480360360e081101561018957600080fd5b8101908080359060200190929190803567ffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561020257600080fd5b82018360208201111561021457600080fd5b8035906020019184600183028401116401000000008311171561023657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506108b3565b604051808215151515815260200191505060405180910390f35b3480156102ae57600080fd5b506102db600480360360208110156102c557600080fd5b8101908080359060200190929190505050611040565b604051808215151515815260200191505060405180910390f35b34801561030157600080fd5b5061030a611083565b604051808215151515815260200191505060405180910390f35b34801561033057600080fd5b506103736004803603602081101561034757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611096565b005b34801561038157600080fd5b506103ae6004803603602081101561039857600080fd5b81019080803590602001909291905050506111c6565b604051808215151515815260200191505060405180910390f35b3480156103d457600080fd5b506103dd611762565b005b3480156103eb57600080fd5b506104226004803603604081101561040257600080fd5b81019080803590602001909291908035906020019092919050505061184b565b604051808215151515815260200191505060405180910390f35b34801561044857600080fd5b50610451611f3d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049f57600080fd5b506104cc600480360360208110156104b657600080fd5b8101908080359060200190929190505050611f63565b604051808215151515815260200191505060405180910390f35b3480156104f257600080fd5b5061051f6004803603602081101561050957600080fd5b8101908080359060200190929190505050611fc6565b604051808215151515815260200191505060405180910390f35b34801561054557600080fd5b506105726004803603602081101561055c57600080fd5b810190808035906020019092919050505061202a565b604051808781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34801561062357600080fd5b506106666004803603602081101561063a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612241565b005b34801561067457600080fd5b506107386004803603604081101561068b57600080fd5b8101908080359060200190929190803590602001906401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460018302840111640100000000831117156106e657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612337565b6040518082815260200191505060405180910390f35b34801561075a57600080fd5b50610763612451565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108745750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61087d57600080fd5b600460149054906101000a900460ff1661089657600080fd5b6000600460146101000a81548160ff021916908315150217905550565b6000600460149054906101000a900460ff16156108cf57600080fd5b60006108db8984612337565b9050600060038111156108ea57fe5b6001600083815260200190815260200160002060009054906101000a900460ff16600381111561091657fe5b14610989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73776170206973206f70656e65642070726576696f75736c790000000000000081525060200191505060405180910390fd5b603c871015801561099c575061ec408711155b6109f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061268e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610a77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061266d6021913960400191505060405180910390fd5b62989680851015610af0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5f6f7574416d6f756e74206d757374206265206d6f7265207468616e20302e3181525060200191505060405180910390fd5b61070842038867ffffffffffffffff16118015610b1a575061038442018867ffffffffffffffff16105b610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260538152602001806126b26053913960600191505060405180910390fd5b838514610bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061261e6023913960400191505060405180910390fd5b610bcf612477565b604051806101200160405280878152602001438a0181526020018b81526020018a67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160006001811115610c2857fe5b8152602001600180811115610c3957fe5b81526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018581525090508060008084815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816004015560c0820151816005015560e08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610100820151816007019080519060200190610d7f9291906124fc565b50905050600180600084815260200190815260200160002060006101000a81548160ff02191690836003811115610db257fe5b0217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610e9457600080fd5b505af1158015610ea8573d6000803e3d6000fd5b505050506040513d6020811015610ebe57600080fd5b8101908080519060200190929190505050610f24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127056030913960400191505060405180910390fd5b818773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5a0cc384a12a55445d4625db5d24f6a72177fd330644e2d4b3ea0ebd6f78c54d8d8d86602001518c8c8c604051808781526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ff0578082015181840152602081019050610fd5565b50505050905090810190601f16801561101d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600192505050979650505050505050565b600080600381111561104e57fe5b6001600084815260200190815260200160002060009054906101000a900460ff16600381111561107a57fe5b14159050919050565b600460149054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061113f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61114857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561118257600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600160038111156111d657fe5b6001600083815260200190815260200160002060009054906101000a900460ff16600381111561120257fe5b14611275576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f73776170206973206e6f74206f70656e6564000000000000000000000000000081525060200191505060405180910390fd5b8260008082815260200190815260200160002060010154431015611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f73776170206973206e6f7420657870697265640000000000000000000000000081525060200191505060405180910390fd5b60036001600086815260200190815260200160002060006101000a81548160ff0219169083600381111561133157fe5b0217905550600080600086815260200190815260200160002060030160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606000808781526020019081526020016000206007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561141b5780601f106113f05761010080835404028352916020019161141b565b820191906000526020600020905b8154815290600101906020018083116113fe57829003601f168201915b505050505090506000806000888152602001908152602001600020600001549050600080600089815260200190815260200160002060020154905060008060008a815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050506040513d602081101561156357600080fd5b81019080805190602001909291905050506115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806125ea6034913960400191505060405180910390fd5b6000808a8152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff02191690556003820160086101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600482016000905560058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600061167d919061257c565b5050888173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f215e15eef6d0300f9e89d940198e4f7fc22e44b7c80118c03571cd96da6c6c9885886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117175780820151818401526020810190506116fc565b50505050905090810190601f1680156117445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a46001975050505050505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061180b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61181457600080fd5b600460149054906101000a900460ff161561182e57600080fd5b6001600460146101000a81548160ff021916908315150217905550565b6000826001600381111561185b57fe5b6001600083815260200190815260200160002060009054906101000a900460ff16600381111561188757fe5b146118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f73776170206973206e6f74206f70656e6564000000000000000000000000000081525060200191505060405180910390fd5b83600080828152602001908152602001600020600101544310611985576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f7377617020697320616c7265616479206578706972656400000000000000000081525060200191505060405180910390fd5b848460028160008085815260200190815260200160002060030160009054906101000a900467ffffffffffffffff16604051602001808381526020018267ffffffffffffffff1667ffffffffffffffff1660c01b8152600801925050506040516020818303038152906040526040518082805190602001908083835b60208310611a245780518252602082019150602081019050602083039250611a01565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015611a66573d6000803e3d6000fd5b5050506040513d6020811015611a7b57600080fd5b81019080805190602001909291905050506000808481526020019081526020016000206002015414611b15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c69642072616e646f6d4e756d62657200000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff1615611b2f57600080fd5b60026001600089815260200190815260200160002060006101000a81548160ff02191690836003811115611b5f57fe5b0217905550600080600089815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606000808a81526020019081526020016000206007018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c495780601f10611c1e57610100808354040283529160200191611c49565b820191906000526020600020905b815481529060010190602001808311611c2c57829003601f168201915b5050505050905060008060008b8152602001908152602001600020600001549050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b505050506040513d6020811015611d3d57600080fd5b8101908080519060200190929190505050611da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612641602c913960400191505060405180910390fd5b6000808b8152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff02191690556003820160086101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600482016000905560058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600782016000611e57919061257c565b5050898373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f07a9dd1ef03da239626dc5c5bac1995991043d2b6e0e23ca789bbc0a16eb911f8c866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ef1578082015181840152602081019050611ed6565b50505050905090810190601f168015611f1e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4600197505050505050505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008381526020019081526020016000206001015443108015611fbf575060016003811115611f9157fe5b6001600084815260200190815260200160002060009054906101000a900460ff166003811115611fbd57fe5b145b9050919050565b6000806000838152602001908152602001600020600101544310158015612023575060016003811115611ff557fe5b6001600084815260200190815260200160002060009054906101000a900460ff16600381111561202157fe5b145b9050919050565b60008060008060008061203b612477565b600080898152602001908152602001600020604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600782018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122025780601f106121d757610100808354040283529160200191612202565b820191906000526020600020905b8154815290600101906020018083116121e557829003601f168201915b5050505050815250509050806040015181606001518260200151836000015184608001518560e001519650965096509650965096505091939550919395565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122ea5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6122f357600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600283836040516020018083815260200182805190602001908083835b602083106123795780518252602082019150602081019050602083039250612356565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106123e157805182526020820191506020810190506020830392506123be565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015612423573d6000803e3d6000fd5b5050506040513d602081101561243857600080fd5b8101908080519060200190929190505050905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b604051806101200160405280600081526020016000815260200160008019168152602001600067ffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061253d57805160ff191683800117855561256b565b8280016001018555821561256b579182015b8281111561256a57825182559160200191906001019061254f565b5b50905061257891906125c4565b5090565b50805460018160011615610100020316600290046000825580601f106125a257506125c1565b601f0160209004906000526020600020908101906125c091906125c4565b5b50565b6125e691905b808211156125e25760008160009055506001016125ca565b5090565b9056fe4661696c656420746f207472616e73666572206c6f636b6564206173736574206261636b20746f20737761702063726561746f725f6f7574416d6f756e74206d75737420626520657175616c205f707261416d6f756e744661696c656420746f207472616e73666572206c6f636b656420617373657420746f20726563697069656e745f726563697069656e74416464722073686f756c64206e6f74206265207a65726f5f6865696768745370616e2073686f756c6420626520696e205b36302c2036303438305d54696d657374616d702063616e206e656974686572206265203135206d696e75746573206168656164206f66207468652063757272656e742074696d652c206e6f72203330206d696e75746573206c617465726661696c656420746f207472616e7366657220636c69656e7420617373657420746f207377617020636f6e7472616374a165627a7a7230582074029285c5d493faa4f8f92545ca44c7ea56e3496e636ba11c1bf0a5558b60660029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009041fe5b3fdea0f5e4afdc17e75180738d877a01

-----Decoded View---------------
Arg [0] : _praContract (address): 0x9041Fe5B3FDEA0f5e4afDC17e75180738D877A01

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009041fe5b3fdea0f5e4afdc17e75180738d877a01


Deployed Bytecode Sourcemap

499:10354:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4209:8;;;1833:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1833:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3585:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3585:71:0;;;:::i;:::-;;4809:1985;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4809:1985:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4809:1985:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4809:1985:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4809:1985:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4809:1985:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4809:1985:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9700:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9700:123:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9700:123:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1956:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1956:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3760:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3760:121:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3760:121:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8143:826;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8143:826:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8143:826:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3470:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3470:71:0;;;:::i;:::-;;6989:1002;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6989:1002:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6989:1002:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1867:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1867:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10292:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10292:164:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10292:164:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9975:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9975:166:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9975:166:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9118:424;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9118:424:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9118:424:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4018:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4018:102:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10672:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10672:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10672:178:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10672:178:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10672:178:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10672:178:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10672:178:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1891:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1891:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1833:30;;;;;;;;;;;;;:::o;3585:71::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;:42;;;;3143:5;;;;;;;;;;;3129:19;;:10;:19;;;3106:42;3098:51;;;;;;3410:6;;;;;;;;;;;3402:15;;;;;;3646:5;3637:6;;:14;;;;;;;;;;;;;;;;;;3585:71::o;4809:1985::-;5038:4;3281:6;;;;;;;;;;;3280:7;3272:16;;;;;;5049:14;5066:43;5076:17;5095:13;5066:9;:43::i;:::-;5049:60;;5144:14;5122:36;;;;;;;;:10;:18;5133:6;5122:18;;;;;;;;;;;;;;;;;;;;;:36;;;;;;;;;5114:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5350:2;5335:11;:17;;:41;;;;;5371:5;5356:11;:20;;5335:41;5327:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5456:1;5430:28;;:14;:28;;;;5422:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5523:8;5509:10;:22;;5501:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5605:4;5599:3;:10;5586;:23;;;:49;;;;;5632:3;5626;:9;5613:10;:22;;;5586:49;5573:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5758:10;5744;:24;5736:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5931:16;;:::i;:::-;5950:342;;;;;;;;5972:10;5950:342;;;;6016:12;6002:11;:26;5950:342;;;;6052:17;5950:342;;;;6086:10;5950:342;;;;;;6114:10;5950:342;;;;;;6155:14;6147:23;;;;;;;;5950:342;;;;6236:14;6228:23;;;;;;;;5950:342;;;;6272:14;5950:342;;;;;;6190:13;5950:342;;;5931:361;;6315:4;6299:5;:13;6305:6;6299:13;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6345:11;6324:10;:18;6335:6;6324:18;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;;;;;;;6428:15;;;;;;;;;;;6422:35;;;6458:10;6478:4;6485:10;6422:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6422:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6422:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6422:74:0;;;;;;;;;;;;;;;;6409:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6647:6;6627:14;6601:170;;6611:10;6601:170;;;6659:17;6682:10;6698:4;:17;;;6721:10;6737;6753:13;6601:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6601:170:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6785:4;6778:11;;;;4809:1985;;;;;;;;;:::o;9700:123::-;9761:4;9803:14;9780:37;;;;;;;;:10;:19;9791:7;9780:19;;;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;9772:46;;9700:123;;;:::o;1956:26::-;;;;;;;;;;;;;:::o;3760:121::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;:42;;;;3143:5;;;;;;;;;;;3129:19;;:10;:19;;;3106:42;3098:51;;;;;;3850:1;3828:24;;:10;:24;;;;3820:33;;;;;;3866:10;3858:5;;:18;;;;;;;;;;;;;;;;;;3760:121;:::o;8143:826::-;8248:4;8199:7;2110:11;2087:34;;;;;;;;:10;:19;2098:7;2087:19;;;;;;;;;;;;;;;;;;;;;:34;;;;;;;;;2079:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8230:7;2290:5;:14;2296:7;2290:14;;;;;;;;;;;:27;;;2274:12;:43;;2266:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8304:14;8282:10;:19;8293:7;8282:19;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;;;;;;;8325:18;8346:5;:14;8352:7;8346:14;;;;;;;;;;;:25;;;;;;;;;;;;8325:46;;8376:26;8405:5;:14;8411:7;8405:14;;;;;;;;;;;:27;;8376:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8437:17;8457:5;:14;8463:7;8457:14;;;;;;;;;;;:24;;;8437:44;;8486:24;8513:5;:14;8519:7;8513:14;;;;;;;;;;;:31;;;8486:58;;8549:21;8573:5;:14;8579:7;8573:14;;;;;;;;;;;:28;;;;;;;;;;;;8549:52;;8668:15;;;;;;;;;;;8662:31;;;8694:10;8706:9;8662:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8662:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8662:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8662:54:0;;;;;;;;;;;;;;;;8649:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8820:5;:14;8826:7;8820:14;;;;;;;;;;;;8813:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8906:7;8891:13;8870:76;;8879:10;8870:76;;;8915:16;8933:12;8870:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8870:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8960:4;8953:11;;;;;;;2149:1;8143:826;;;;:::o;3470:71::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;:42;;;;3143:5;;;;;;;;;;;3129:19;;:10;:19;;;3106:42;3098:51;;;;;;3281:6;;;;;;;;;;;3280:7;3272:16;;;;;;3532:4;3523:6;;:13;;;;;;;;;;;;;;;;;;3470:71::o;6989:1002::-;7194:4;7073:7;2110:11;2087:34;;;;;;;;:10;:19;2098:7;2087:19;;;;;;;;;;;;;;;;;;;;;:34;;;;;;;;;2079:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7108:7;2486:5;:14;2492:7;2486:14;;;;;;;;;;;:27;;;2471:12;:42;2463:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7141:7;7150:13;2736:65;2760:13;2775:5;:14;2781:7;2775:14;;;;;;;;;;;:24;;;;;;;;;;;;2743:57;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2743:57:0;;;2736:65;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;2736:65:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2736:65:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2736:65:0;;;;;;;;;;;;;;;;2701:5;:14;2707:7;2701:14;;;;;;;;;;;:31;;;:100;2688:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3281:6;;;;;;;;;;;3280:7;3272:16;;;;;;7254;7232:10;:19;7243:7;7232:19;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;;;;;;;7277:21;7301:5;:14;7307:7;7301:14;;;;;;;;;;;:28;;;;;;;;;;;;7277:52;;7334:26;7363:5;:14;7369:7;7363:14;;;;;;;;;;;:27;;7334:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7525:17;7545:5;:14;7551:7;7545:14;;;;;;;;;;;:24;;;7525:44;;7695:15;;;;;;;;;;;7689:31;;;7721:13;7736:9;7689:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7689:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7689:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7689:57:0;;;;;;;;;;;;;;;;7676:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7842:5;:14;7848:7;7842:14;;;;;;;;;;;;7835:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7931:7;7916:13;7896:72;;7904:10;7896:72;;;7940:13;7955:12;7896:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7896:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7982:4;7975:11;;;;;2546:1;;2149;6989:1002;;;;;:::o;1867:20::-;;;;;;;;;;;;;:::o;10292:164::-;10351:4;10385:5;:14;10391:7;10385:14;;;;;;;;;;;:27;;;10370:12;:42;:80;;;;;10439:11;10416:34;;;;;;;;:10;:19;10427:7;10416:19;;;;;;;;;;;;;;;;;;;;;:34;;;;;;;;;10370:80;10362:89;;10292:164;;;:::o;9975:166::-;10035:4;10070:5;:14;10076:7;10070:14;;;;;;;;;;;:27;;;10054:12;:43;;:81;;;;;10124:11;10101:34;;;;;;;;:10;:19;10112:7;10101:19;;;;;;;;;;;;;;;;;;;;;:34;;;;;;;;;10054:81;10046:90;;9975:166;;;:::o;9118:424::-;9195:25;9226:17;9249:21;9276:18;9300:15;9321:18;9352:16;;:::i;:::-;9371:5;:14;9377:7;9371:14;;;;;;;;;;;9352:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9403:4;:21;;;9430:4;:14;;;9450:4;:17;;;9473:4;:14;;;9493:4;:15;;;9514:4;:18;;;9390:147;;;;;;;;;;;;;9118:424;;;;;;;:::o;4018:102::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;:42;;;;3143:5;;;;;;;;;;;3129:19;;:10;:19;;;3106:42;3098:51;;;;;;4103:12;4085:15;;:30;;;;;;;;;;;;;;;;;;4018:102;:::o;10672:178::-;10767:7;10788:57;10812:17;10831:12;10795:49;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;10795:49:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10795::0;;;10788:57;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;10788:57:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10788:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10788:57:0;;;;;;;;;;;;;;;;10781:64;;10672:178;;;;:::o;1891:20::-;;;;;;;;;;;;;:::o;499:10354::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://74029285c5d493faa4f8f92545ca44c7ea56e3496e636ba11c1bf0a5558b6066

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.