Latest 25 transactions from a total of 224 transactions

TxHash Age From To Value [TxFee]
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b7158 days 16 hrs ago0x001d51cdc8f4b378e136642ddb95dfc4ff6a4b72  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000199754
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd11199358 days 16 hrs ago0x001d51cdc8f4b378e136642ddb95dfc4ff6a4b72  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000200202
0xad8127de817b441eec17dd058f7ef824223f79dcd070318e896fa8dee3548cb659 days 20 hrs ago0xa90a55af4f5c76c9e6c3d22a8dec7d6de0fb1388  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.001424295
0x98b87d7a269db417c299eabaac7327d4667c0fc0953eb9aee3737e34cb06fc1659 days 20 hrs ago0xa90a55af4f5c76c9e6c3d22a8dec7d6de0fb1388  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.00136284
0xaa8a234957d5c078d3c4981d01ce0a16ac293b8856e03264a74ac66b790822a063 days 22 hrs ago0x878368019cec9498d22e28b41fe59ab3deb0673c  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000105445
0x990319f2dbb05442dc6da5501e61c7ec7e4176d5a54522dddf19a3bfe252006963 days 22 hrs ago0x878368019cec9498d22e28b41fe59ab3deb0673c  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000105445
0x7c8d7b5b5907f07649720eb9879ff243d2367d742580613451f73db9d21e753263 days 22 hrs ago0x878368019cec9498d22e28b41fe59ab3deb0673c  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000105445
0x792990501b5f58057fb7f248912a55c5e11bb88ef19c8b7539bb05d210488d8764 days 17 hrs ago0x5409ed021d9299bf6814279a6a1411a7e866a631  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.00032714625
0x5fc2829c8fe3612de0c01e52ad22112cc35353c54fde60f8caf8a6e02c47073164 days 20 hrs ago0x878368019cec9498d22e28b41fe59ab3deb0673c  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000578387
0xc7267dfc4b7c1ed3f6b4e8df627d955dfd3e60a40305a6e6990567b4c949267464 days 21 hrs ago0xebb360ccdea792ef1d23309fddf2f2ca8f3b8dc4  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000105189
0xceefc8b6fd0b73c7805eb442563f3b490dc67dc7b116ad93832a65650aa7814d64 days 21 hrs ago0xebb360ccdea792ef1d23309fddf2f2ca8f3b8dc4  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.000578195
0xa6bfb3abdef13b5c3e670998639efe3b44cc13662f22ba750f6b342aae252b6464 days 21 hrs ago0x878368019cec9498d22e28b41fe59ab3deb0673c  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0007131075
0x2f37c7a7258edd6647987b95e96550de3e19844610b10c5cbb45527617fcf76465 days 19 hrs ago0xa90a55af4f5c76c9e6c3d22a8dec7d6de0fb1388  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0026027415
0x32373f3e39bf42023826f7d90c5cb48792cb97e6341fe008c2487e8b16cf6f1a65 days 19 hrs ago0xa90a55af4f5c76c9e6c3d22a8dec7d6de0fb1388  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0019084659
0x4740f6db4c61a7e1317bb0c87a449accef4c32d5bea690f3124063185b51923365 days 19 hrs ago0x2e5fc1cb068ca097414a8d703e61a4f8d034b962  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.008675805
0x36a09d3aedef8c601e12ef7ee8e5849a4dd96b38eeb7df7b6b3e868a2a7b133b66 days 43 mins ago0x2bc8a15c1f261a484d69fe093f15fa0646e5b3c3  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0020824236
0x80008165f24a1562c33d4d6e348e4583cdcbae070daf7b78e6db908cf2b0a45966 days 52 mins ago0xd840d02bb3a715027343fc8428b61a7f83dcb6e7  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0003422916
0x451dc87fa90498bc6e0c4e8c2ea22211dddc1200e79850f02fe9a6287a440a5a66 days 56 mins ago0xd840d02bb3a715027343fc8428b61a7f83dcb6e7  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0020810412
0xd9bce0cc7b45a579e2ab1f00a3ef609193aad000ff7834338cf57981d2ebe68e66 days 1 hr ago0xa8b28c3363a1aca832889ed39f6b6bd1805719f3  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.00209954481
0xbdbddd9ff8bf8f5acf8792081c1ecf2bb2d2d6dae99669811a12a16dfdd5f24666 days 1 hr ago0xd840d02bb3a715027343fc8428b61a7f83dcb6e7  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0043379025
0x889178bed5a74323db78aaffa8febe9005b63e66d4a31f1817e6937c58e3c0f766 days 2 hrs ago0xa8b28c3363a1aca832889ed39f6b6bd1805719f3  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.00477063675
0x08f236c31b0478a708d4508d60a5f467a16bba0efa74de1fb1ff96a59201991566 days 5 hrs ago0xd840d02bb3a715027343fc8428b61a7f83dcb6e7  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.008676765
0x1ce0db0aee790cf722b2b93b60f9323bb1d240321ca3841d856bb8dde049faaf66 days 5 hrs ago0x2e5fc1cb068ca097414a8d703e61a4f8d034b962  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0043369425
0xdaa6ecd782f4ed0591f435835681847627008d70a20d2b4a7f812471dacf864266 days 5 hrs ago0xa8b28c3363a1aca832889ed39f6b6bd1805719f3  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.00498046311
0x1ee0f4b62815cb35f9b53a8fb922feff593a03223ae09705489c68976e78077d66 days 5 hrs ago0xd840d02bb3a715027343fc8428b61a7f83dcb6e7  IN   0xdb0129aaffa19b56b16744e999b4fd0606c451e50 Ether0.0043388625
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xb53cd92e439c4391deab8b8070699c9ce4b5c4870 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd0a1e359811322d97991e03f863a0c30c2cf029c0 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd0a1e359811322d97991e03f863a0c30c2cf029c0 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd0a1e359811322d97991e03f863a0c30c2cf029c0 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd5ca3dec1f3155e2c182299afa2413ac1a9f35300 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0xaee75c7d2c4a2f4b3a27fa6f702c2f204f629ecf5cd1e5af77f3fe86ec303b71976423158 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50x49d35dd866ed2ea011e2797fcce0bf321d086cf10 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xb53cd92e439c4391deab8b8070699c9ce4b5c4870 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd0a1e359811322d97991e03f863a0c30c2cf029c0 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd0a1e359811322d97991e03f863a0c30c2cf029c0 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd0a1e359811322d97991e03f863a0c30c2cf029c0 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd5ca3dec1f3155e2c182299afa2413ac1a9f35300 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0x5ba7de77b93550d77d8e693d0be936b1832392af8e838afefa50ed13bd111993976415858 days 16 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50x49d35dd866ed2ea011e2797fcce0bf321d086cf10 Ether
0xad8127de817b441eec17dd058f7ef824223f79dcd070318e896fa8dee3548cb6974995259 days 20 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd5ca3dec1f3155e2c182299afa2413ac1a9f35300 Ether
0xad8127de817b441eec17dd058f7ef824223f79dcd070318e896fa8dee3548cb6974995259 days 20 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
0xad8127de817b441eec17dd058f7ef824223f79dcd070318e896fa8dee3548cb6974995259 days 20 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50x49d35dd866ed2ea011e2797fcce0bf321d086cf10 Ether
0x98b87d7a269db417c299eabaac7327d4667c0fc0953eb9aee3737e34cb06fc16974991459 days 20 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xd5ca3dec1f3155e2c182299afa2413ac1a9f35300 Ether
0x98b87d7a269db417c299eabaac7327d4667c0fc0953eb9aee3737e34cb06fc16974991459 days 20 hrs ago0xdb0129aaffa19b56b16744e999b4fd0606c451e50xe1ccba52a8f7c4885ef10b10c3ba438072bd96e10 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: LTVCreditorProxy
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.24;
pragma experimental ABIEncoderV2;
// File: contracts/src/shared/interfaces/CollateralizerInterface.sol




contract CollateralizerInterface {

	function unpackCollateralParametersFromBytes(
		bytes32 parameters
	) public pure returns (uint, uint, uint);

}

// File: contracts/src/shared/interfaces/DebtKernelInterface.sol



contract DebtKernelInterface {

	enum Errors {
		// Debt has been already been issued
		DEBT_ISSUED,
		// Order has already expired
		ORDER_EXPIRED,
		// Debt issuance associated with order has been cancelled
		ISSUANCE_CANCELLED,
		// Order has been cancelled
		ORDER_CANCELLED,
		// Order parameters specify amount of creditor / debtor fees
		// that is not equivalent to the amount of underwriter / relayer fees
		ORDER_INVALID_INSUFFICIENT_OR_EXCESSIVE_FEES,
		// Order parameters specify insufficient principal amount for
		// debtor to at least be able to meet his fees
		ORDER_INVALID_INSUFFICIENT_PRINCIPAL,
		// Order parameters specify non zero fee for an unspecified recipient
		ORDER_INVALID_UNSPECIFIED_FEE_RECIPIENT,
		// Order signatures are mismatched / malformed
		ORDER_INVALID_NON_CONSENSUAL,
		// Insufficient balance or allowance for principal token transfer
		CREDITOR_BALANCE_OR_ALLOWANCE_INSUFFICIENT
	}

	// solhint-disable-next-line var-name-mixedcase
	address public TOKEN_TRANSFER_PROXY;
	bytes32 constant public NULL_ISSUANCE_HASH = bytes32(0);

	/* NOTE(kayvon): Currently, the `view` keyword does not actually enforce the
	static nature of the method; this will change in the future, but for now, in
	order to prevent reentrancy we'll need to arbitrarily set an upper bound on
	the gas limit allotted for certain method calls. */
	uint16 constant public EXTERNAL_QUERY_GAS_LIMIT = 8000;

	mapping (bytes32 => bool) public issuanceCancelled;
	mapping (bytes32 => bool) public debtOrderCancelled;

	event LogDebtOrderFilled(
		bytes32 indexed _agreementId,
		uint _principal,
		address _principalToken,
		address indexed _underwriter,
		uint _underwriterFee,
		address indexed _relayer,
		uint _relayerFee
	);

	event LogIssuanceCancelled(
		bytes32 indexed _agreementId,
		address indexed _cancelledBy
	);

	event LogDebtOrderCancelled(
		bytes32 indexed _debtOrderHash,
		address indexed _cancelledBy
	);

	event LogError(
		uint8 indexed _errorId,
		bytes32 indexed _orderHash
	);

	struct Issuance {
		address version;
		address debtor;
		address underwriter;
		uint underwriterRiskRating;
		address termsContract;
		bytes32 termsContractParameters;
		uint salt;
		bytes32 agreementId;
	}

	struct DebtOrder {
		Issuance issuance;
		uint underwriterFee;
		uint relayerFee;
		uint principalAmount;
		address principalToken;
		uint creditorFee;
		uint debtorFee;
		address relayer;
		uint expirationTimestampInSec;
		bytes32 debtOrderHash;
	}

    function fillDebtOrder(
        address creditor,
        address[6] orderAddresses,
        uint[8] orderValues,
        bytes32[1] orderBytes32,
        uint8[3] signaturesV,
        bytes32[3] signaturesR,
        bytes32[3] signaturesS
    )
        public
        returns (bytes32 _agreementId);

}

// File: contracts/src/shared/interfaces/DebtTokenInterface.sol



contract DebtTokenInterface {

    function transfer(address _to, uint _tokenId) public;

    function exists(uint256 _tokenId) public view returns (bool);

}

// File: contracts/src/shared/interfaces/TokenTransferProxyInterface.sol



contract TokenTransferProxyInterface {}

// File: contracts/src/shared/interfaces/ContractRegistryInterface.sol







contract ContractRegistryInterface {

    CollateralizerInterface public collateralizer;
    DebtKernelInterface public debtKernel;
    DebtTokenInterface public debtToken;
    TokenTransferProxyInterface public tokenTransferProxy;

    function ContractRegistryInterface(
        address _collateralizer,
        address _debtKernel,
        address _debtToken,
        address _tokenTransferProxy
    )
        public
    {
        collateralizer = CollateralizerInterface(_collateralizer);
        debtKernel = DebtKernelInterface(_debtKernel);
        debtToken = DebtTokenInterface(_debtToken);
        tokenTransferProxy = TokenTransferProxyInterface(_tokenTransferProxy);
    }

}

// File: zeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @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 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    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 _a / _b;
  }

  /**
  * @dev Subtracts 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 c) {
    c = _a + _b;
    assert(c >= _a);
    return c;
  }
}

// File: contracts/src/shared/libraries/SignaturesLibrary.sol




contract SignaturesLibrary {
	bytes constant internal PREFIX = "\x19Ethereum Signed Message:\n32";

	struct ECDSASignature {
		uint8 v;
		bytes32 r;
		bytes32 s;
	}

	function isValidSignature(
		address signer,
		bytes32 hash,
		ECDSASignature signature
	)
		public
		pure
		returns (bool valid)
	{
		bytes32 prefixedHash = keccak256(PREFIX, hash);
		return ecrecover(prefixedHash, signature.v, signature.r, signature.s) == signer;
	}
}

// File: contracts/src/shared/libraries/OrderLibrary.sol




contract OrderLibrary {
	struct DebtOrder {
		address kernelVersion;
		address issuanceVersion;
		uint principalAmount;
		address principalToken;
		uint collateralAmount;
		address collateralToken;
		address debtor;
		uint debtorFee;
		address creditor;
		uint creditorFee;
		address relayer;
		uint relayerFee;
		address underwriter;
		uint underwriterFee;
		uint underwriterRiskRating;
		address termsContract;
		bytes32 termsContractParameters;
		uint expirationTimestampInSec;
		uint salt;
		SignaturesLibrary.ECDSASignature debtorSignature;
		SignaturesLibrary.ECDSASignature creditorSignature;
		SignaturesLibrary.ECDSASignature underwriterSignature;
	}

	function unpackDebtOrder(DebtOrder memory order)
		public
		pure
		returns (
	        address[6] orderAddresses,
	        uint[8] orderValues,
	        bytes32[1] orderBytes32,
	        uint8[3] signaturesV,
	        bytes32[3] signaturesR,
	        bytes32[3] signaturesS
		)
	{
		return (
			[order.issuanceVersion, order.debtor, order.underwriter, order.termsContract, order.principalToken, order.relayer],
            [order.underwriterRiskRating, order.salt, order.principalAmount, order.underwriterFee, order.relayerFee, order.creditorFee, order.debtorFee, order.expirationTimestampInSec],
			[order.termsContractParameters],
            [order.debtorSignature.v, order.creditorSignature.v, order.underwriterSignature.v],
			[order.debtorSignature.r, order.creditorSignature.r, order.underwriterSignature.r],
			[order.debtorSignature.s, order.creditorSignature.s, order.underwriterSignature.s]
		);
	}
}

// File: contracts/src/CreditorDrivenLoans/DecisionEngines/libraries/LTVDecisionEngineTypes.sol






contract LTVDecisionEngineTypes
{
	// The parameters used during the consent and decision evaluations.
	struct Params {
		address creditor;
		// The values and signature for the creditor commitment hash.
		CreditorCommitment creditorCommitment;
		// Price feed data.
		Price principalPrice;
		Price collateralPrice;
		// A DebtOrderData is required to confirm parity with the submitted order.
		OrderLibrary.DebtOrder order;
	}

	struct Price {
		uint value;
		uint timestamp;
		address tokenAddress;
		SignaturesLibrary.ECDSASignature signature;
	}

	struct CreditorCommitment {
		CommitmentValues values;
		SignaturesLibrary.ECDSASignature signature;
	}

	struct CommitmentValues {
		uint maxLTV;
		address priceFeedOperator;
	}

	struct SimpleInterestParameters {
		uint principalTokenIndex;
		uint principalAmount;
        uint interestRate;
        uint amortizationUnitType;
        uint termLengthInAmortizationUnits;
	}

	struct CollateralParameters {
		uint collateralTokenIndex;
		uint collateralAmount;
		uint gracePeriodInDays;
	}
}

// File: contracts/src/shared/interfaces/TermsContractInterface.sol




contract TermsContractInterface {

	function registerTermStart(
        bytes32 agreementId,
        address debtor
    ) public returns (bool _success);

	function registerRepayment(
        bytes32 agreementId,
        address payer,
        address beneficiary,
        uint256 unitsOfRepayment,
        address tokenAddress
    ) public returns (bool _success);

	function getExpectedRepaymentValue(
        bytes32 agreementId,
        uint256 timestamp
    ) public view returns (uint256);

	function getValueRepaidToDate(
        bytes32 agreementId
    ) public view returns (uint256);

	function getTermEndTimestamp(
        bytes32 _agreementId
    ) public view returns (uint);

}

// File: contracts/src/shared/interfaces/SimpleInterestTermsContractInterface.sol




contract SimpleInterestTermsContractInterface is TermsContractInterface {

    function unpackParametersFromBytes(
        bytes32 parameters
    ) public pure returns (
        uint _principalTokenIndex,
        uint _principalAmount,
        uint _interestRate,
        uint _amortizationUnitType,
        uint _termLengthInAmortizationUnits
    );

}

// File: contracts/src/CreditorDrivenLoans/DecisionEngines/LTVDecisionEngine.sol



// External dependencies


// Libraries




// Interfaces




contract LTVDecisionEngine is LTVDecisionEngineTypes, SignaturesLibrary, OrderLibrary
{
	using SafeMath for uint;

	uint public constant PRECISION = 4;

	uint public constant MAX_PRICE_TTL_IN_SECONDS = 600;

	ContractRegistryInterface public contractRegistry;

	function LTVDecisionEngine(address _contractRegistry) public {
        contractRegistry = ContractRegistryInterface(_contractRegistry);
    }

	function evaluateConsent(Params params, bytes32 commitmentHash)
		public view returns (bool)
	{
		// Checks that the given creditor values were signed by the creditor.
		if (!isValidSignature(
			params.creditor,
			commitmentHash,
			params.creditorCommitment.signature
		)) {
			// We return early if the creditor values were not signed correctly.
			return false;
		}

		// Checks that the given price feed data was signed by the price feed operator.
		return (
			verifyPrices(
				params.creditorCommitment.values.priceFeedOperator,
				params.principalPrice,
				params.collateralPrice
			)
		);
	}

	// Returns true if the creditor-initiated order has not expired, and the LTV is below the max.
	function evaluateDecision(Params memory params)
		public view returns (bool _success)
	{
		LTVDecisionEngineTypes.Price memory principalTokenPrice = params.principalPrice;
		LTVDecisionEngineTypes.Price memory collateralTokenPrice = params.collateralPrice;

		uint maxLTV = params.creditorCommitment.values.maxLTV;
		OrderLibrary.DebtOrder memory order = params.order;

		uint collateralValue = collateralTokenPrice.value;

		if (isExpired(order.expirationTimestampInSec)) {
			return false;
		}

		if (order.collateralAmount == 0 || collateralValue == 0) {
			return false;
		}

		uint ltv = computeLTV(
			principalTokenPrice.value,
			collateralTokenPrice.value,
			order.principalAmount,
			order.collateralAmount
		);

		uint maxLTVWithPrecision = maxLTV.mul(10 ** (PRECISION.sub(2)));

		return ltv <= maxLTVWithPrecision;
	}

	function hashCreditorCommitmentForOrder(CommitmentValues commitmentValues, OrderLibrary.DebtOrder order)
	public view returns (bytes32)
	{
		bytes32 termsContractCommitmentHash =
			getTermsContractCommitmentHash(order.termsContract, order.termsContractParameters);

		return keccak256(
			// order values
			order.creditor,
			order.kernelVersion,
			order.issuanceVersion,
			order.termsContract,
			order.principalToken,
			order.salt,
			order.principalAmount,
			order.creditorFee,
			order.expirationTimestampInSec,
			// commitment values
			commitmentValues.maxLTV,
			commitmentValues.priceFeedOperator,
			// hashed terms contract commitments
			termsContractCommitmentHash
		);
	}

	function getTermsContractCommitmentHash(
		address termsContract,
		bytes32 termsContractParameters
	) public view returns (bytes32) {
		SimpleInterestParameters memory simpleInterestParameters =
			unpackSimpleInterestParameters(termsContract, termsContractParameters);

		CollateralParameters memory collateralParameters =
			unpackCollateralParameters(termsContractParameters);

		return keccak256(
			// unpacked termsContractParameters
			simpleInterestParameters.principalTokenIndex,
			simpleInterestParameters.principalAmount,
			simpleInterestParameters.interestRate,
			simpleInterestParameters.amortizationUnitType,
			simpleInterestParameters.termLengthInAmortizationUnits,
			collateralParameters.collateralTokenIndex,
			collateralParameters.gracePeriodInDays
		);
	}

	function unpackSimpleInterestParameters(
		address termsContract,
		bytes32 termsContractParameters
	)
		public pure returns (SimpleInterestParameters)
	{
		// use simple interest terms contract interface to unpack simple interest terms
		SimpleInterestTermsContractInterface simpleInterestTermsContract = SimpleInterestTermsContractInterface(termsContract);

		var (principalTokenIndex, principalAmount, interestRate, amortizationUnitType, termLengthInAmortizationUnits) =
			simpleInterestTermsContract.unpackParametersFromBytes(termsContractParameters);

		return SimpleInterestParameters({
			principalTokenIndex: principalTokenIndex,
			principalAmount: principalAmount,
			interestRate: interestRate,
			amortizationUnitType: amortizationUnitType,
			termLengthInAmortizationUnits: termLengthInAmortizationUnits
		});
	}

	function unpackCollateralParameters(
		bytes32 termsContractParameters
	)
		public view returns (CollateralParameters)
	{
		CollateralizerInterface collateralizer = CollateralizerInterface(contractRegistry.collateralizer());

		var (collateralTokenIndex, collateralAmount, gracePeriodInDays) =
			collateralizer.unpackCollateralParametersFromBytes(termsContractParameters);

		return CollateralParameters({
			collateralTokenIndex: collateralTokenIndex,
			collateralAmount: collateralAmount,
			gracePeriodInDays: gracePeriodInDays
		});
	}

	function verifyPrices(
		address priceFeedOperator,
		LTVDecisionEngineTypes.Price principalPrice,
		LTVDecisionEngineTypes.Price collateralPrice
	)
		internal view returns (bool)
	{
		uint minPriceTimestamp = block.timestamp - MAX_PRICE_TTL_IN_SECONDS;

		if (principalPrice.timestamp < minPriceTimestamp ||
			collateralPrice.timestamp < minPriceTimestamp) {
			return false;
		}

		bytes32 principalPriceHash = keccak256(
			principalPrice.value,
			principalPrice.tokenAddress,
			principalPrice.timestamp
		);

		bytes32 collateralPriceHash = keccak256(
			collateralPrice.value,
			collateralPrice.tokenAddress,
			collateralPrice.timestamp
		);

		bool principalPriceValid = isValidSignature(
			priceFeedOperator,
			principalPriceHash,
			principalPrice.signature
		);

		// We return early if the principal price information was not signed correctly.
		if (!principalPriceValid) {
			return false;
		}

		return isValidSignature(
			priceFeedOperator,
			collateralPriceHash,
			collateralPrice.signature
		);
	}

	function computeLTV(
		uint principalTokenPrice,
		uint collateralTokenPrice,
		uint principalAmount,
		uint collateralAmount
	)
		internal constant returns (uint)
	{
		uint principalValue = principalTokenPrice.mul(principalAmount).mul(10 ** PRECISION);
		uint collateralValue = collateralTokenPrice.mul(collateralAmount);

		return principalValue.div(collateralValue);
	}

	function isExpired(uint expirationTimestampInSec)
		internal view returns (bool expired)
	{
		return expirationTimestampInSec < block.timestamp;
	}
}

// File: zeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * 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: zeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @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/src/CreditorDrivenLoans/libraries/CreditorProxyErrors.sol

contract CreditorProxyErrors {
    enum Errors {
            DEBT_OFFER_CANCELLED,
            DEBT_OFFER_ALREADY_FILLED,
            DEBT_OFFER_NON_CONSENSUAL,
            CREDITOR_BALANCE_OR_ALLOWANCE_INSUFFICIENT,
            DEBT_OFFER_CRITERIA_NOT_MET
        }

    event CreditorProxyError(
        uint8 indexed _errorId,
        address indexed _creditor,
        bytes32 indexed _creditorCommitmentHash
    );
}

// File: contracts/src/CreditorDrivenLoans/libraries/CreditorProxyEvents.sol



contract CreditorProxyEvents {

    event DebtOfferCancelled(
        address indexed _creditor,
        bytes32 indexed _creditorCommitmentHash
    );

    event DebtOfferFilled(
        address indexed _creditor,
        bytes32 indexed _creditorCommitmentHash,
        bytes32 indexed _agreementId
    );
}

// File: contracts/src/CreditorDrivenLoans/interfaces/CreditorProxyCoreInterface.sol






contract CreditorProxyCoreInterface is CreditorProxyErrors, CreditorProxyEvents { }

// File: contracts/src/CreditorDrivenLoans/CreditorProxyCore.sol



// External libraries

// Internal interfaces

// Shared interfaces



contract CreditorProxyCore is CreditorProxyCoreInterface {

	uint16 constant public EXTERNAL_QUERY_GAS_LIMIT = 8000;

	ContractRegistryInterface public contractRegistry;

	/**
	 * Helper function for transferring a specified amount of tokens between two parties.
	 */
	function transferTokensFrom(
		address _token,
		address _from,
		address _to,
		uint _amount
	)
		internal
		returns (bool _success)
	{
		return ERC20(_token).transferFrom(_from, _to, _amount);
	}

	/**
     * Helper function for querying this contract's allowance for transferring the given token.
     */
	function getAllowance(
		address token,
		address owner,
		address granter
	)
		internal
		view
	returns (uint _allowance)
	{
		// Limit gas to prevent reentrancy.
		return ERC20(token).allowance.gas(EXTERNAL_QUERY_GAS_LIMIT)(
			owner,
			granter
		);
	}
}

// File: contracts/src/CreditorDrivenLoans/LTVCreditorProxy.sol



// Internal interfaces

// Internal mixins




contract LTVCreditorProxy is CreditorProxyCore, LTVDecisionEngine {

	mapping (bytes32 => bool) public debtOfferCancelled;
	mapping (bytes32 => bool) public debtOfferFilled;

	bytes32 constant internal NULL_ISSUANCE_HASH = bytes32(0);

	function LTVCreditorProxy(address _contractRegistry) LTVDecisionEngine(_contractRegistry)
		public
	{
		contractRegistry = ContractRegistryInterface(_contractRegistry);
	}

	function fillDebtOffer(LTVDecisionEngineTypes.Params params)
		public returns (bytes32 agreementId)
	{
		OrderLibrary.DebtOrder memory order = params.order;
		CommitmentValues memory commitmentValues = params.creditorCommitment.values;

		bytes32 creditorCommitmentHash = hashCreditorCommitmentForOrder(commitmentValues, order);

		if (!evaluateConsent(params, creditorCommitmentHash)) {
			emit CreditorProxyError(uint8(Errors.DEBT_OFFER_NON_CONSENSUAL), order.creditor, creditorCommitmentHash);
			return NULL_ISSUANCE_HASH;
		}

		if (debtOfferFilled[creditorCommitmentHash]) {
			emit CreditorProxyError(uint8(Errors.DEBT_OFFER_ALREADY_FILLED), order.creditor, creditorCommitmentHash);
			return NULL_ISSUANCE_HASH;
		}

		if (debtOfferCancelled[creditorCommitmentHash]) {
			emit CreditorProxyError(uint8(Errors.DEBT_OFFER_CANCELLED), order.creditor, creditorCommitmentHash);
			return NULL_ISSUANCE_HASH;
		}

		if (!evaluateDecision(params)) {
			emit CreditorProxyError(
				uint8(Errors.DEBT_OFFER_CRITERIA_NOT_MET),
				order.creditor,
				creditorCommitmentHash
			);
			return NULL_ISSUANCE_HASH;
		}

		address principalToken = order.principalToken;

		// The allowance that the token transfer proxy has for this contract's tokens.
		uint tokenTransferAllowance = getAllowance(
			principalToken,
			address(this),
			contractRegistry.tokenTransferProxy()
		);

		uint totalCreditorPayment = order.principalAmount.add(order.creditorFee);

		// Ensure the token transfer proxy can transfer tokens from the creditor proxy
		if (tokenTransferAllowance < totalCreditorPayment) {
			require(setTokenTransferAllowance(principalToken, totalCreditorPayment));
		}

		// Transfer principal from creditor to CreditorProxy
		if (totalCreditorPayment > 0) {
			require(
				transferTokensFrom(
					principalToken,
					order.creditor,
					address(this),
					totalCreditorPayment
				)
			);
		}

		agreementId = sendOrderToKernel(order);

		require(agreementId != NULL_ISSUANCE_HASH);

		debtOfferFilled[creditorCommitmentHash] = true;

		contractRegistry.debtToken().transfer(order.creditor, uint256(agreementId));

		emit DebtOfferFilled(order.creditor, creditorCommitmentHash, agreementId);

		return agreementId;
	}

	function sendOrderToKernel(DebtOrder memory order) internal returns (bytes32 id)
	{
		address[6] memory orderAddresses;
		uint[8] memory orderValues;
		bytes32[1] memory orderBytes32;
		uint8[3] memory signaturesV;
		bytes32[3] memory signaturesR;
		bytes32[3] memory signaturesS;

		(orderAddresses, orderValues, orderBytes32, signaturesV, signaturesR, signaturesS) = unpackDebtOrder(order);

		return contractRegistry.debtKernel().fillDebtOrder(
			address(this),
			orderAddresses,
			orderValues,
			orderBytes32,
			signaturesV,
			signaturesR,
			signaturesS
		);
	}

	function cancelDebtOffer(LTVDecisionEngineTypes.Params params) public returns (bool) {
		LTVDecisionEngineTypes.CommitmentValues memory commitmentValues = params.creditorCommitment.values;
		OrderLibrary.DebtOrder memory order = params.order;

		// sender must be the creditor.
		require(msg.sender == order.creditor);

		bytes32 creditorCommitmentHash = hashCreditorCommitmentForOrder(commitmentValues, order);

		// debt offer must not already be filled.
		require(!debtOfferFilled[creditorCommitmentHash]);

		debtOfferCancelled[creditorCommitmentHash] = true;

		emit DebtOfferCancelled(order.creditor, creditorCommitmentHash);

		return true;
	}

	/**
     * Helper function for approving this address' allowance to Dharma's token transfer proxy.
     */
	function setTokenTransferAllowance(
		address token,
		uint amount
	)
		internal
		returns (bool _success)
	{
		return ERC20(token).approve(
			address(contractRegistry.tokenTransferProxy()),
			amount
		);
	}
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"}],"name":"getTermsContractCommitmentHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"components":[{"name":"creditor","type":"address"},{"components":[{"components":[{"name":"maxLTV","type":"uint256"},{"name":"priceFeedOperator","type":"address"}],"name":"values","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"creditorCommitment","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"principalPrice","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"collateralPrice","type":"tuple"},{"components":[{"name":"kernelVersion","type":"address"},{"name":"issuanceVersion","type":"address"},{"name":"principalAmount","type":"uint256"},{"name":"principalToken","type":"address"},{"name":"collateralAmount","type":"uint256"},{"name":"collateralToken","type":"address"},{"name":"debtor","type":"address"},{"name":"debtorFee","type":"uint256"},{"name":"creditor","type":"address"},{"name":"creditorFee","type":"uint256"},{"name":"relayer","type":"address"},{"name":"relayerFee","type":"uint256"},{"name":"underwriter","type":"address"},{"name":"underwriterFee","type":"uint256"},{"name":"underwriterRiskRating","type":"uint256"},{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"},{"name":"expirationTimestampInSec","type":"uint256"},{"name":"salt","type":"uint256"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"debtorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"creditorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"underwriterSignature","type":"tuple"}],"name":"order","type":"tuple"}],"name":"params","type":"tuple"},{"name":"commitmentHash","type":"bytes32"}],"name":"evaluateConsent","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"components":[{"name":"creditor","type":"address"},{"components":[{"components":[{"name":"maxLTV","type":"uint256"},{"name":"priceFeedOperator","type":"address"}],"name":"values","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"creditorCommitment","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"principalPrice","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"collateralPrice","type":"tuple"},{"components":[{"name":"kernelVersion","type":"address"},{"name":"issuanceVersion","type":"address"},{"name":"principalAmount","type":"uint256"},{"name":"principalToken","type":"address"},{"name":"collateralAmount","type":"uint256"},{"name":"collateralToken","type":"address"},{"name":"debtor","type":"address"},{"name":"debtorFee","type":"uint256"},{"name":"creditor","type":"address"},{"name":"creditorFee","type":"uint256"},{"name":"relayer","type":"address"},{"name":"relayerFee","type":"uint256"},{"name":"underwriter","type":"address"},{"name":"underwriterFee","type":"uint256"},{"name":"underwriterRiskRating","type":"uint256"},{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"},{"name":"expirationTimestampInSec","type":"uint256"},{"name":"salt","type":"uint256"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"debtorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"creditorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"underwriterSignature","type":"tuple"}],"name":"order","type":"tuple"}],"name":"params","type":"tuple"}],"name":"cancelDebtOffer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"components":[{"name":"creditor","type":"address"},{"components":[{"components":[{"name":"maxLTV","type":"uint256"},{"name":"priceFeedOperator","type":"address"}],"name":"values","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"creditorCommitment","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"principalPrice","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"collateralPrice","type":"tuple"},{"components":[{"name":"kernelVersion","type":"address"},{"name":"issuanceVersion","type":"address"},{"name":"principalAmount","type":"uint256"},{"name":"principalToken","type":"address"},{"name":"collateralAmount","type":"uint256"},{"name":"collateralToken","type":"address"},{"name":"debtor","type":"address"},{"name":"debtorFee","type":"uint256"},{"name":"creditor","type":"address"},{"name":"creditorFee","type":"uint256"},{"name":"relayer","type":"address"},{"name":"relayerFee","type":"uint256"},{"name":"underwriter","type":"address"},{"name":"underwriterFee","type":"uint256"},{"name":"underwriterRiskRating","type":"uint256"},{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"},{"name":"expirationTimestampInSec","type":"uint256"},{"name":"salt","type":"uint256"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"debtorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"creditorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"underwriterSignature","type":"tuple"}],"name":"order","type":"tuple"}],"name":"params","type":"tuple"}],"name":"evaluateDecision","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"signer","type":"address"},{"name":"hash","type":"bytes32"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"isValidSignature","outputs":[{"name":"valid","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"MAX_PRICE_TTL_IN_SECONDS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"debtOfferCancelled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRECISION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"components":[{"name":"creditor","type":"address"},{"components":[{"components":[{"name":"maxLTV","type":"uint256"},{"name":"priceFeedOperator","type":"address"}],"name":"values","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"creditorCommitment","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"principalPrice","type":"tuple"},{"components":[{"name":"value","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"tokenAddress","type":"address"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signature","type":"tuple"}],"name":"collateralPrice","type":"tuple"},{"components":[{"name":"kernelVersion","type":"address"},{"name":"issuanceVersion","type":"address"},{"name":"principalAmount","type":"uint256"},{"name":"principalToken","type":"address"},{"name":"collateralAmount","type":"uint256"},{"name":"collateralToken","type":"address"},{"name":"debtor","type":"address"},{"name":"debtorFee","type":"uint256"},{"name":"creditor","type":"address"},{"name":"creditorFee","type":"uint256"},{"name":"relayer","type":"address"},{"name":"relayerFee","type":"uint256"},{"name":"underwriter","type":"address"},{"name":"underwriterFee","type":"uint256"},{"name":"underwriterRiskRating","type":"uint256"},{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"},{"name":"expirationTimestampInSec","type":"uint256"},{"name":"salt","type":"uint256"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"debtorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"creditorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"underwriterSignature","type":"tuple"}],"name":"order","type":"tuple"}],"name":"params","type":"tuple"}],"name":"fillDebtOffer","outputs":[{"name":"agreementId","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"debtOfferFilled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"termsContractParameters","type":"bytes32"}],"name":"unpackCollateralParameters","outputs":[{"components":[{"name":"collateralTokenIndex","type":"uint256"},{"name":"collateralAmount","type":"uint256"},{"name":"gracePeriodInDays","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"components":[{"name":"maxLTV","type":"uint256"},{"name":"priceFeedOperator","type":"address"}],"name":"commitmentValues","type":"tuple"},{"components":[{"name":"kernelVersion","type":"address"},{"name":"issuanceVersion","type":"address"},{"name":"principalAmount","type":"uint256"},{"name":"principalToken","type":"address"},{"name":"collateralAmount","type":"uint256"},{"name":"collateralToken","type":"address"},{"name":"debtor","type":"address"},{"name":"debtorFee","type":"uint256"},{"name":"creditor","type":"address"},{"name":"creditorFee","type":"uint256"},{"name":"relayer","type":"address"},{"name":"relayerFee","type":"uint256"},{"name":"underwriter","type":"address"},{"name":"underwriterFee","type":"uint256"},{"name":"underwriterRiskRating","type":"uint256"},{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"},{"name":"expirationTimestampInSec","type":"uint256"},{"name":"salt","type":"uint256"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"debtorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"creditorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"underwriterSignature","type":"tuple"}],"name":"order","type":"tuple"}],"name":"hashCreditorCommitmentForOrder","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"components":[{"name":"kernelVersion","type":"address"},{"name":"issuanceVersion","type":"address"},{"name":"principalAmount","type":"uint256"},{"name":"principalToken","type":"address"},{"name":"collateralAmount","type":"uint256"},{"name":"collateralToken","type":"address"},{"name":"debtor","type":"address"},{"name":"debtorFee","type":"uint256"},{"name":"creditor","type":"address"},{"name":"creditorFee","type":"uint256"},{"name":"relayer","type":"address"},{"name":"relayerFee","type":"uint256"},{"name":"underwriter","type":"address"},{"name":"underwriterFee","type":"uint256"},{"name":"underwriterRiskRating","type":"uint256"},{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"},{"name":"expirationTimestampInSec","type":"uint256"},{"name":"salt","type":"uint256"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"debtorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"creditorSignature","type":"tuple"},{"components":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"underwriterSignature","type":"tuple"}],"name":"order","type":"tuple"}],"name":"unpackDebtOrder","outputs":[{"name":"orderAddresses","type":"address[6]"},{"name":"orderValues","type":"uint256[8]"},{"name":"orderBytes32","type":"bytes32[1]"},{"name":"signaturesV","type":"uint8[3]"},{"name":"signaturesR","type":"bytes32[3]"},{"name":"signaturesS","type":"bytes32[3]"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"termsContract","type":"address"},{"name":"termsContractParameters","type":"bytes32"}],"name":"unpackSimpleInterestParameters","outputs":[{"components":[{"name":"principalTokenIndex","type":"uint256"},{"name":"principalAmount","type":"uint256"},{"name":"interestRate","type":"uint256"},{"name":"amortizationUnitType","type":"uint256"},{"name":"termLengthInAmortizationUnits","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"EXTERNAL_QUERY_GAS_LIMIT","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_contractRegistry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_creditor","type":"address"},{"indexed":true,"name":"_creditorCommitmentHash","type":"bytes32"}],"name":"DebtOfferCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_creditor","type":"address"},{"indexed":true,"name":"_creditorCommitmentHash","type":"bytes32"},{"indexed":true,"name":"_agreementId","type":"bytes32"}],"name":"DebtOfferFilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_errorId","type":"uint8"},{"indexed":true,"name":"_creditor","type":"address"},{"indexed":true,"name":"_creditorCommitmentHash","type":"bytes32"}],"name":"CreditorProxyError","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040523480156200001157600080fd5b50604051602080620033a98339810180604052620000339190810190620000d4565b8080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000120565b6000620000cc825162000100565b905092915050565b600060208284031215620000e757600080fd5b6000620000f784828501620000be565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b61327980620001306000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630257dbc9146100eb57806320113da11461012857806333ff02d414610165578063433256f2146101a2578063578911ac146101df5780637c3ea9fc1461021c578063a318b5f714610247578063aaf5eb6814610284578063abf410e5146102af578063b7e1d0af146102da578063c1614d0014610317578063cf99685c14610354578063d02fe46914610391578063e301885c146103ce578063e7083d2414610410578063f06bbf751461044d575b600080fd5b3480156100f757600080fd5b50610112600480360361010d919081019061280f565b610478565b60405161011f9190612f7f565b60405180910390f35b34801561013457600080fd5b5061014f600480360361014a9190810190612a4a565b61050d565b60405161015c9190612f64565b60405180910390f35b34801561017157600080fd5b5061018c60048036036101879190810190612a20565b61055d565b6040516101999190612f64565b60405180910390f35b3480156101ae57600080fd5b506101c960048036036101c49190810190612a20565b610690565b6040516101d69190612f64565b60405180910390f35b3480156101eb57600080fd5b506102066004803603610201919081019061284b565b610776565b6040516102139190612f64565b60405180910390f35b34801561022857600080fd5b506102316108b8565b60405161023e919061304b565b60405180910390f35b34801561025357600080fd5b5061026e600480360361026991908101906128c3565b6108be565b60405161027b9190612f64565b60405180910390f35b34801561029057600080fd5b506102996108de565b6040516102a6919061304b565b60405180910390f35b3480156102bb57600080fd5b506102c46108e3565b6040516102d19190612fdf565b60405180910390f35b3480156102e657600080fd5b5061030160048036036102fc9190810190612a20565b610909565b60405161030e9190612f7f565b60405180910390f35b34801561032357600080fd5b5061033e600480360361033991908101906128c3565b610e9a565b60405161034b9190612f64565b60405180910390f35b34801561036057600080fd5b5061037b600480360361037691908101906128c3565b610eba565b6040516103889190612ffa565b60405180910390f35b34801561039d57600080fd5b506103b860048036036103b391908101906129b9565b61105c565b6040516103c59190612f7f565b60405180910390f35b3480156103da57600080fd5b506103f560048036036103f091908101906129f6565b611287565b60405161040796959493929190612efe565b60405180910390f35b34801561041c57600080fd5b506104376004803603610432919081019061280f565b611582565b6040516104449190613015565b60405180910390f35b34801561045957600080fd5b5061046261167d565b60405161046f9190613030565b60405180910390f35b6000610482611d77565b61048a611da7565b6104948585611582565b915061049f84610eba565b905081600001518260200151836040015184606001518560800151856000015186604001516040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390209250505092915050565b6000610526836000015183856020015160200151610776565b15156105355760009050610557565b6105548360200151600001516020015184604001518560600151611683565b90505b92915050565b6000610567611dc9565b61056f611df9565b600084602001516000015192508460800151915081610100015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c257600080fd5b6105cc838361105c565b905060036000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561060357600080fd5b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550806000191682610100015173ffffffffffffffffffffffffffffffffffffffff167f320c5376a3da7bddef2f74a91d4575f1a8547203712054ca2cf5f3ae3cadeb0560405160405180910390a360019350505050919050565b600061069a611f7c565b6106a2611f7c565b60006106ac611df9565b6000806000886040015196508860600151955088602001516000015160000151945088608001519350856000015192506106ea8461022001516117d1565b156106f8576000975061076a565b60008460800151148061070b5750600083145b15610719576000975061076a565b61073587600001518760000151866040015187608001516117dd565b915061076161074f6002600461184190919063ffffffff16565b600a0a8661185a90919063ffffffff16565b90508082111597505b50505050505050919050565b6000806040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250846040518083805190602001908083835b6020831015156107e557805182526020820191506020810190506020830392506107c0565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508473ffffffffffffffffffffffffffffffffffffffff16600182856000015186602001518760400151604051600081526020016040526040516108699493929190612f9a565b60206040516020810390808403906000865af115801561088d573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16149150509392505050565b61025881565b60026020528060005260406000206000915054906101000a900460ff1681565b600481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610913611df9565b61091b611dc9565b60008060008087608001519550876020015160000151945061093d858761105c565b9350610949888561050d565b15156109b857836000191686610100015173ffffffffffffffffffffffffffffffffffffffff166002600481111561097d57fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029650610e8f565b60036000856000191660001916815260200190815260200160002060009054906101000a900460ff1615610a4f57836000191686610100015173ffffffffffffffffffffffffffffffffffffffff1660016004811115610a1457fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029650610e8f565b60026000856000191660001916815260200190815260200160002060009054906101000a900460ff1615610ae657836000191686610100015173ffffffffffffffffffffffffffffffffffffffff1660006004811115610aab57fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029650610e8f565b610aef88610690565b1515610b5d57836000191686610100015173ffffffffffffffffffffffffffffffffffffffff16600480811115610b2257fe5b60ff167f9fd787e2a5fcbda76c8a1a1f8bb14a3328d4991b94bd7461fe7468aaedbd6d2460405160405180910390a460006001029650610e8f565b85606001519250610c2c8330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eefdbad6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c279190810190612990565b611892565b9150610c4a866101200151876040015161194e90919063ffffffff16565b905080821015610c6a57610c5e838261196a565b1515610c6957600080fd5b5b6000811115610c9057610c84838761010001513084611ada565b1515610c8f57600080fd5b5b610c9986611b91565b9650600060010260001916876000191614151515610cb657600080fd5b600160036000866000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8d898986040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610d7057600080fd5b505af1158015610d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610da89190810190612967565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87610100015189600190046040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e07929190612ed5565b600060405180830381600087803b158015610e2157600080fd5b505af1158015610e35573d6000803e3d6000fd5b505050508660001916846000191687610100015173ffffffffffffffffffffffffffffffffffffffff167fdc3cdf07a43996ceac82462ded070dbc1bf60c3d66cfa11770cd91a41b1c62e060405160405180910390a48696505b505050505050919050565b60036020528060005260406000206000915054906101000a900460ff1681565b610ec2611da7565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663869f05116040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610f4e57600080fd5b505af1158015610f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f869190810190612915565b93508373ffffffffffffffffffffffffffffffffffffffff1663ca062647876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610fdd9190612f7f565b606060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061102f9190810190612ab1565b92509250925060606040519081016040528084815260200183815260200182815250945050505050919050565b600080611073836101e00151846102000151610478565b905082610100015183600001518460200151856101e00151866060015187610240015188604001518961012001518a61022001518c600001518d602001518b604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018881526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182600019166000191681526020019c50505050505050505050505050604051809103902091505092915050565b61128f611fc1565b611297611fe4565b61129f612008565b6112a761202b565b6112af61204e565b6112b761204e565b60c060405190810160405280886020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610180015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886101e0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610140015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525061010060405190810160405280896101c001518152602001896102400151815260200189604001518152602001896101a001518152602001896101600151815260200189610120015181526020018960e0015181526020018961022001518152506020604051908101604052808a610200015160001916600019168152506060604051908101604052808b61026001516000015160ff1660ff1681526020018b61028001516000015160ff1660ff1681526020018b6102a001516000015160ff1660ff168152506060604051908101604052808c610260015160200151600019166000191681526020018c610280015160200151600019166000191681526020018c6102a001516020015160001916600019168152506060604051908101604052808d610260015160400151600019166000191681526020018d610280015160400151600019166000191681526020018d6102a0015160400151600019166000191681525095509550955095509550955091939550919395565b61158a611d77565b6000806000806000808895508573ffffffffffffffffffffffffffffffffffffffff1663ed8907d7896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016115eb9190612f7f565b60a060405180830381600087803b15801561160557600080fd5b505af1158015611619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061163d9190810190612b00565b9450945094509450945060a06040519081016040528086815260200185815260200184815260200183815260200182815250965050505050505092915050565b611f4081565b60008060008060006102584203935083876020015110806116a75750838660200151105b156116b557600094506117c6565b866000015187604001518860200151604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209250856000015186604001518760200151604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019350505050604051809103902091506117a288848960600151610776565b90508015156117b457600094506117c6565b6117c388838860600151610776565b94505b505050509392505050565b60004282109050919050565b600080600061180b6004600a0a6117fd878a61185a90919063ffffffff16565b61185a90919063ffffffff16565b9150611820848761185a90919063ffffffff16565b90506118358183611d6190919063ffffffff16565b92505050949350505050565b600082821115151561184f57fe5b818303905092915050565b60008083141561186d576000905061188c565b818302905081838281151561187e57fe5b0414151561188857fe5b8090505b92915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e611f4061ffff1685856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016118f2929190612e01565b602060405180830381600088803b15801561190c57600080fd5b5087f1158015611920573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506119459190810190612a88565b90509392505050565b6000818301905082811015151561196157fe5b80905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eefdbad6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a469190810190612990565b846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611a80929190612ed5565b602060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ad2919081019061289a565b905092915050565b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611b3593929190612e2a565b602060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b87919081019061289a565b9050949350505050565b6000611b9b611fc1565b611ba3611fe4565b611bab612008565b611bb361202b565b611bbb61204e565b611bc361204e565b611bcc88611287565b809650819750829850839950849a50859b50505050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663079dd4b76040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611c6a57600080fd5b505af1158015611c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ca2919081019061293e565b73ffffffffffffffffffffffffffffffffffffffff1663e6488fc9308888888888886040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611d029796959493929190612e61565b602060405180830381600087803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5491908101906128ec565b9650505050505050919050565b60008183811515611d6e57fe5b04905092915050565b60a06040519081016040528060008152602001600081526020016000815260200160008152602001600081525090565b6060604051908101604052806000815260200160008152602001600081525090565b604080519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b61038060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000815260200160008152602001611f5c612071565b8152602001611f69612071565b8152602001611f76612071565b81525090565b60c0604051908101604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001611fbb612071565b81525090565b60c060405190810160405280600690602082028038833980820191505090505090565b61010060405190810160405280600890602082028038833980820191505090505090565b602060405190810160405280600190602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600060ff16815260200160008019168152602001600080191681525090565b60006120a88235613198565b905092915050565b60006120bc82516131b8565b905092915050565b60006120d082356131c4565b905092915050565b60006120e482516131c4565b905092915050565b60006120f882516131ce565b905092915050565b600061210c82516131e0565b905092915050565b600061212082516131f2565b905092915050565b60006121348251613204565b905092915050565b60006040828403121561214e57600080fd5b6121586040613066565b90506000612168848285016127d3565b600083015250602061217c8482850161209c565b60208301525092915050565b60006040828403121561219a57600080fd5b6121a46040613066565b905060006121b4848285016127d3565b60008301525060206121c88482850161209c565b60208301525092915050565b600060a082840312156121e657600080fd5b6121f06040613066565b905060006122008482850161213c565b600083015250604061221484828501612614565b60208301525092915050565b6000610380828403121561223357600080fd5b61223e6102c0613066565b9050600061224e8482850161209c565b60008301525060206122628482850161209c565b6020830152506040612276848285016127d3565b604083015250606061228a8482850161209c565b606083015250608061229e848285016127d3565b60808301525060a06122b28482850161209c565b60a08301525060c06122c68482850161209c565b60c08301525060e06122da848285016127d3565b60e0830152506101006122ef8482850161209c565b61010083015250610120612305848285016127d3565b6101208301525061014061231b8482850161209c565b61014083015250610160612331848285016127d3565b610160830152506101806123478482850161209c565b610180830152506101a061235d848285016127d3565b6101a0830152506101c0612373848285016127d3565b6101c0830152506101e06123898482850161209c565b6101e08301525061020061239f848285016120c4565b610200830152506102206123b5848285016127d3565b610220830152506102406123cb848285016127d3565b610240830152506102606123e184828501612614565b610260830152506102c06123f784828501612614565b6102808301525061032061240d84828501612614565b6102a08301525092915050565b6000610380828403121561242d57600080fd5b6124386102c0613066565b905060006124488482850161209c565b600083015250602061245c8482850161209c565b6020830152506040612470848285016127d3565b60408301525060606124848482850161209c565b6060830152506080612498848285016127d3565b60808301525060a06124ac8482850161209c565b60a08301525060c06124c08482850161209c565b60c08301525060e06124d4848285016127d3565b60e0830152506101006124e98482850161209c565b610100830152506101206124ff848285016127d3565b610120830152506101406125158482850161209c565b6101408301525061016061252b848285016127d3565b610160830152506101806125418482850161209c565b610180830152506101a0612557848285016127d3565b6101a0830152506101c061256d848285016127d3565b6101c0830152506101e06125838482850161209c565b6101e083015250610200612599848285016120c4565b610200830152506102206125af848285016127d3565b610220830152506102406125c5848285016127d3565b610240830152506102606125db84828501612614565b610260830152506102c06125f184828501612614565b6102808301525061032061260784828501612614565b6102a08301525092915050565b60006060828403121561262657600080fd5b6126306060613066565b90506000612640848285016127fb565b6000830152506020612654848285016120c4565b6020830152506040612668848285016120c4565b60408301525092915050565b60006060828403121561268657600080fd5b6126906060613066565b905060006126a0848285016127fb565b60008301525060206126b4848285016120c4565b60208301525060406126c8848285016120c4565b60408301525092915050565b60006105c082840312156126e757600080fd5b6126f160a0613066565b905060006127018482850161209c565b6000830152506020612715848285016121d4565b60208301525060c06127298482850161275f565b60408301525061018061273e8482850161275f565b60608301525061024061275384828501612220565b60808301525092915050565b600060c0828403121561277157600080fd5b61277b6080613066565b9050600061278b848285016127d3565b600083015250602061279f848285016127d3565b60208301525060406127b38482850161209c565b60408301525060606127c784828501612614565b60608301525092915050565b60006127df8235613216565b905092915050565b60006127f38251613216565b905092915050565b60006128078235613220565b905092915050565b6000806040838503121561282257600080fd5b60006128308582860161209c565b9250506020612841858286016120c4565b9150509250929050565b600080600060a0848603121561286057600080fd5b600061286e8682870161209c565b935050602061287f868287016120c4565b925050604061289086828701612674565b9150509250925092565b6000602082840312156128ac57600080fd5b60006128ba848285016120b0565b91505092915050565b6000602082840312156128d557600080fd5b60006128e3848285016120c4565b91505092915050565b6000602082840312156128fe57600080fd5b600061290c848285016120d8565b91505092915050565b60006020828403121561292757600080fd5b6000612935848285016120ec565b91505092915050565b60006020828403121561295057600080fd5b600061295e84828501612100565b91505092915050565b60006020828403121561297957600080fd5b600061298784828501612114565b91505092915050565b6000602082840312156129a257600080fd5b60006129b084828501612128565b91505092915050565b6000806103c083850312156129cd57600080fd5b60006129db85828601612188565b92505060406129ec8582860161241a565b9150509250929050565b60006103808284031215612a0957600080fd5b6000612a178482850161241a565b91505092915050565b60006105c08284031215612a3357600080fd5b6000612a41848285016126d4565b91505092915050565b6000806105e08385031215612a5e57600080fd5b6000612a6c858286016126d4565b9250506105c0612a7e858286016120c4565b9150509250929050565b600060208284031215612a9a57600080fd5b6000612aa8848285016127e7565b91505092915050565b600080600060608486031215612ac657600080fd5b6000612ad4868287016127e7565b9350506020612ae5868287016127e7565b9250506040612af6868287016127e7565b9150509250925092565b600080600080600060a08688031215612b1857600080fd5b6000612b26888289016127e7565b9550506020612b37888289016127e7565b9450506040612b48888289016127e7565b9350506060612b59888289016127e7565b9250506080612b6a888289016127e7565b9150509295509295909350565b612b808161313d565b82525050565b612b8f816130c5565b612b9882613093565b60005b82811015612bca57612bae858351612b77565b612bb7826130fc565b9150602085019450600181019050612b9b565b5050505050565b612bda816130d0565b612be38261309d565b60005b82811015612c1557612bf9858351612d0c565b612c0282613109565b9150602085019450600181019050612be6565b5050505050565b612c25816130db565b612c2e826130a7565b60005b82811015612c6057612c44858351612d0c565b612c4d82613116565b9150602085019450600181019050612c31565b5050505050565b612c70816130e6565b612c79826130b1565b60005b82811015612cab57612c8f858351612de3565b612c9882613123565b9150602085019450600181019050612c7c565b5050505050565b612cbb816130f1565b612cc4826130bb565b60005b82811015612cf657612cda858351612df2565b612ce382613130565b9150602085019450600181019050612cc7565b5050505050565b612d068161315d565b82525050565b612d1581613169565b82525050565b612d248161322d565b82525050565b606082016000820151612d406000850182612de3565b506020820151612d536020850182612de3565b506040820151612d666040850182612de3565b50505050565b60a082016000820151612d826000850182612de3565b506020820151612d956020850182612de3565b506040820151612da86040850182612de3565b506060820151612dbb6060850182612de3565b506080820151612dce6080850182612de3565b50505050565b612ddd81613173565b82525050565b612dec81613181565b82525050565b612dfb8161318b565b82525050565b6000604082019050612e166000830185612b77565b612e236020830184612b77565b9392505050565b6000606082019050612e3f6000830186612b77565b612e4c6020830185612b77565b612e596040830184612de3565b949350505050565b600061032082019050612e77600083018a612b77565b612e846020830189612b86565b612e9160e0830188612c67565b612e9f6101e0830187612bd1565b612ead610200830186612cb2565b612ebb610260830185612c1c565b612ec96102c0830184612c1c565b98975050505050505050565b6000604082019050612eea6000830185612b77565b612ef76020830184612de3565b9392505050565b600061030082019050612f146000830189612b86565b612f2160c0830188612c67565b612f2f6101c0830187612bd1565b612f3d6101e0830186612cb2565b612f4b610240830185612c1c565b612f596102a0830184612c1c565b979650505050505050565b6000602082019050612f796000830184612cfd565b92915050565b6000602082019050612f946000830184612d0c565b92915050565b6000608082019050612faf6000830187612d0c565b612fbc6020830186612df2565b612fc96040830185612d0c565b612fd66060830184612d0c565b95945050505050565b6000602082019050612ff46000830184612d1b565b92915050565b600060608201905061300f6000830184612d2a565b92915050565b600060a08201905061302a6000830184612d6c565b92915050565b60006020820190506130456000830184612dd4565b92915050565b60006020820190506130606000830184612de3565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561308957600080fd5b8060405250919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600060069050919050565b600060019050919050565b600060039050919050565b600060089050919050565b600060039050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600061ffff82169050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b60006131d98261313d565b9050919050565b60006131eb8261313d565b9050919050565b60006131fd8261313d565b9050919050565b600061320f8261313d565b9050919050565b6000819050919050565b600060ff82169050919050565b60006132388261313d565b90509190505600a265627a7a7230582044fbdef79f9e70fc9d1656e7982fedf3d3b894634113c9bd0f93b96b804bc8066c6578706572696d656e74616cf50037000000000000000000000000e1ccba52a8f7c4885ef10b10c3ba438072bd96e1

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e1ccba52a8f7c4885ef10b10c3ba438072bd96e1


   Swarm Source:
bzzr://44fbdef79f9e70fc9d1656e7982fedf3d3b894634113c9bd0f93b96b804bc806

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward